Hướng dẫn python real time audio - âm thanh thời gian thực python

Các khóa học qua video:
Lập trình C Java C# SQL Server PHP HTML5-CSS3-JavaScript

Mục lục bài viết:

  • Cách hoạt động của tính năng Nhận dạng giọng nói - Tổng quan
  • Chọn gói nhận dạng giọng nói Python
  • Cài đặt SpeechRecognition
  • Lớp nhận dạng
  • Làm việc với tệp âm thanh
    • Các loại tệp được hỗ trợ
    • Sử dụng record [] để chụp dữ liệu từ tệp
    • Chụp phân đoạn với độ lệch và thời lượng
    • Ảnh hưởng của tiếng ồn đối với nhận dạng giọng nói
  • Làm việc với micrô
    • Cài đặt PyAudio
    • Lớp Micrô
    • Sử dụng nghe [] để chụp đầu vào micrô
    • Xử lý giọng nói không thể nhận dạng
  • Kết hợp tất cả lại với nhau: Trò chơi “Đoán từ”
  • Tóm tắt và bổ sung tài nguyên
  • Phụ lục: Nhận dạng giọng nói bằng các ngôn ngữ khác ngoài tiếng Anh

Bạn đã bao giờ tự hỏi làm thế nào để thêm nhận dạng giọng nói vào dự án Python của mình? Nếu vậy, sau đó tiếp tục đọc! Nó dễ dàng hơn bạn nghĩ.

Không còn là một thứ lỗi mốt, sự thành công vượt bậc của các sản phẩm hỗ trợ giọng nói như Amazon Alexa đã chứng minh rằng hỗ trợ giọng nói ở một mức độ nào đó sẽ là một khía cạnh thiết yếu của công nghệ gia dụng trong tương lai gần. Nếu bạn nghĩ về nó, lý do tại sao là khá rõ ràng. Việc kết hợp tính năng nhận dạng giọng nói vào ứng dụng Python của bạn mang lại mức độ tương tác và khả năng truy cập mà ít công nghệ nào có thể sánh kịp.

Chỉ riêng các cải tiến về khả năng tiếp cận cũng đáng được xem xét Nhận dạng giọng nói cho phép người già và người khiếm thị tương tác với các sản phẩm và dịch vụ hiện đại một cách nhanh chóng và tự nhiên — không cần GUI!

Hơn hết, bao gồm cả nhận dạng giọng nói trong một dự án Python thực sự đơn giản. Trong hướng dẫn này, bạn sẽ tìm hiểu cách thực hiện. Bạn sẽ học:

  • Cách thức hoạt động của tính năng nhận dạng giọng nói,
  • Những gói nào có sẵn trên PyPI; và
  • Cách cài đặt và sử dụng gói SpeechRecognition — thư viện nhận dạng giọng nói Python đầy đủ tính năng và dễ sử dụng.

Cuối cùng, bạn sẽ áp dụng những gì bạn đã học được vào trò chơi “Đoán từ” đơn giản và xem tất cả kết hợp với nhau như thế nào.

Cách hoạt động của tính năng Nhận dạng giọng nói - Tổng quan

Chọn gói nhận dạng giọng nói Python

Cài đặt SpeechRecognition

Lớp nhận dạng

Làm việc với tệp âm thanh

Các loại tệp được hỗ trợ

Sử dụng record [] để chụp dữ liệu từ tệp

Người ta có thể tưởng tượng rằng toàn bộ quá trình này có thể tốn kém về mặt tính toán. Trong nhiều hệ thống nhận dạng giọng nói hiện đại, mạng nơ-ron được sử dụng để đơn giản hóa tín hiệu giọng nói bằng cách sử dụng các kỹ thuật chuyển đổi đặc trưng và giảm kích thước trước khi nhận dạng HMM. Bộ phát hiện hoạt động giọng nói [VAD] cũng được sử dụng để giảm tín hiệu âm thanh xuống chỉ những phần có khả năng chứa giọng nói. Điều này ngăn bộ nhận dạng mất thời gian phân tích các phần không cần thiết của tín hiệu.

May mắn thay, là một lập trình viên Python, bạn không phải lo lắng về bất kỳ điều gì trong số này. Một số dịch vụ nhận dạng giọng nói có sẵn để sử dụng trực tuyến thông qua API và nhiều dịch vụ trong số này cung cấp các SDK Python .

Chọn gói nhận dạng giọng nói Python

Có một số ít các gói để nhận dạng giọng nói trên PyPI. Một vài trong số chúng bao gồm:

  • apiai
  • assemblyai
  • google-cloud-speech
  • nhân sư bỏ túi
  • Nhận dạng giọng nói
  • watson-developer-cloud
  • mưu mẹo

Một số gói này — chẳng hạn như wit và apiai — cung cấp các tính năng tích hợp sẵn, như xử lý ngôn ngữ tự nhiên để xác định ý định của người nói, vượt ra ngoài nhận dạng giọng nói cơ bản. Những người khác, như google-cloud-speech, chỉ tập trung vào chuyển đổi giọng nói thành văn bản.

Có một gói nổi bật về tính dễ sử dụng: SpeechRecognition.

Nhận dạng giọng nói yêu cầu đầu vào âm thanh và SpeechRecognition giúp việc truy xuất đầu vào này thực sự dễ dàng. Thay vì phải xây dựng các tập lệnh để truy cập micrô và xử lý các tệp âm thanh từ đầu, SpeechRecognition sẽ giúp bạn thiết lập và chạy chỉ trong vài phút.

Thư viện SpeechRecognition hoạt động như một trình bao bọc cho một số API giọng nói phổ biến và do đó cực kỳ linh hoạt. Một trong số này — API Web Speech của Google — hỗ trợ khóa API mặc định được mã hóa cứng vào thư viện SpeechRecognition. Điều đó có nghĩa là bạn có thể xuống chân mà không cần phải đăng ký dịch vụ.

Tính linh hoạt và dễ sử dụng của gói SpeechRecognition khiến nó trở thành lựa chọn tuyệt vời cho bất kỳ dự án Python nào. Tuy nhiên, không đảm bảo hỗ trợ cho mọi tính năng của mỗi API mà nó kết thúc. Bạn sẽ cần dành một chút thời gian nghiên cứu các tùy chọn có sẵn để tìm hiểu xem liệu SpeechRecognition có hoạt động trong trường hợp cụ thể của bạn hay không.

Vì vậy, bây giờ bạn đã được thuyết phục rằng bạn nên thử SpeechRecognition, bước tiếp theo là cài đặt nó trong môi trường của bạn.

Cài đặt SpeechRecognition

SpeechRecognition tương thích với Python 2.6, 2.7 và 3.3+, nhưng yêu cầu một số bước cài đặt bổ sung cho Python 2 . Đối với hướng dẫn này, tôi sẽ giả sử bạn đang sử dụng Python 3.3+.

Bạn có thể cài đặt SpeechRecognition từ một thiết bị đầu cuối bằng pip:

$ pip install SpeechRecognition

Sau khi cài đặt, bạn nên xác minh cài đặt bằng cách mở phiên thông dịch và nhập:

>>>

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'

Lưu ý: Số phiên bản bạn nhận được có thể khác nhau. Phiên bản 3.8.1 là phiên bản mới nhất tại thời điểm viết bài.

Hãy tiếp tục và giữ cho phiên này mở. Bạn sẽ bắt đầu làm việc với nó chỉ trong giây lát.

SpeechRecognition sẽ hoạt động hiệu quả nếu tất cả những gì bạn cần làm là hoạt động với các tệp âm thanh hiện có. Tuy nhiên, các trường hợp sử dụng cụ thể yêu cầu một số phụ thuộc. Đáng chú ý, gói PyAudio là cần thiết để thu đầu vào micrô.

Bạn sẽ thấy những phụ thuộc nào bạn cần khi đọc thêm. Bây giờ, hãy đi sâu vào và khám phá những điều cơ bản của gói.

các 
Traceback [most recent call last]:
  File "", line 1, in 
TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
0Lớp

Tất cả điều kỳ diệu trong SpeechRecognition xảy ra với 

Traceback [most recent call last]:
  File "", line 1, in 
TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
0lớp học.

Tất nhiên, mục đích chính của một 

Traceback [most recent call last]:
  File "", line 1, in 
TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
0phiên bản là nhận dạng giọng nói. Mỗi phiên bản đi kèm với nhiều cài đặt và chức năng khác nhau để nhận dạng giọng nói từ nguồn âm thanh.

Tạo một 

Traceback [most recent call last]:
  File "", line 1, in 
TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
0phiên bản rất dễ dàng. Trong phiên thông dịch hiện tại của bạn, chỉ cần nhập:

>>>

>>> r = sr.Recognizer[]

Lưu ý: Số phiên bản bạn nhận được có thể khác nhau. Phiên bản 3.8.1 là phiên bản mới nhất tại thời điểm viết bài.

  • Hãy tiếp tục và giữ cho phiên này mở. Bạn sẽ bắt đầu làm việc với nó chỉ trong giây lát.
  • SpeechRecognition sẽ hoạt động hiệu quả nếu tất cả những gì bạn cần làm là hoạt động với các tệp âm thanh hiện có. Tuy nhiên, các trường hợp sử dụng cụ thể yêu cầu một số phụ thuộc. Đáng chú ý, gói PyAudio là cần thiết để thu đầu vào micrô.
  • Bạn sẽ thấy những phụ thuộc nào bạn cần khi đọc thêm. Bây giờ, hãy đi sâu vào và khám phá những điều cơ bản của gói.
  • các 
    Traceback [most recent call last]:
      File "", line 1, in 
    TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
    
    0Lớp
  • Tất cả điều kỳ diệu trong SpeechRecognition xảy ra với 
    Traceback [most recent call last]:
      File "", line 1, in 
    TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
    
    0lớp học.
  • Tất nhiên, mục đích chính của một 
    Traceback [most recent call last]:
      File "", line 1, in 
    TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
    
    0phiên bản là nhận dạng giọng nói. Mỗi phiên bản đi kèm với nhiều cài đặt và chức năng khác nhau để nhận dạng giọng nói từ nguồn âm thanh.
  • >>> harvard = sr.AudioFile['harvard.wav']
    >>> with harvard as source:
    ...    audio = r.record[source]
    ...
    
    1: Wit.ai

Tạo một 

Traceback [most recent call last]:
  File "", line 1, in 
TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
0phiên bản rất dễ dàng. Trong phiên thông dịch hiện tại của bạn, chỉ cần nhập:

Mỗi 

Traceback [most recent call last]:
  File "", line 1, in 
TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
0phiên bản có bảy phương pháp để nhận dạng giọng nói từ nguồn âm thanh bằng cách sử dụng các API khác nhau. Đó là:

Thận trọng: Khóa mặc định do SpeechRecognition cung cấp chỉ dành cho mục đích thử nghiệm và Google có thể thu hồi khóa này bất kỳ lúc nào . Không phải là một ý kiến ​​hay khi sử dụng Google Web Speech API trong quá trình sản xuất. Ngay cả với một khóa API hợp lệ, bạn sẽ chỉ bị giới hạn ở 50 yêu cầu mỗi ngày và không có cách nào để tăng hạn ngạch này . May mắn thay, giao diện của SpeechRecognition gần như giống hệt nhau cho mỗi API, vì vậy những gì bạn học hôm nay sẽ dễ dàng chuyển sang một dự án trong thế giới thực.

Mỗi 

>>> harvard = sr.AudioFile['harvard.wav']
>>> with harvard as source:
...    audio = r.record[source]
...
3phương thức sẽ đưa ra một 
>>> harvard = sr.AudioFile['harvard.wav']
>>> with harvard as source:
...    audio = r.record[source]
...
4ngoại lệ nếu không thể truy cập được API. Đối với 
>>> harvard = sr.AudioFile['harvard.wav']
>>> with harvard as source:
...    audio = r.record[source]
...
0, điều này có thể xảy ra do cài đặt Sphinx bị thiếu, bị hỏng hoặc không tương thích. Đối với sáu phương pháp khác, 
>>> harvard = sr.AudioFile['harvard.wav']
>>> with harvard as source:
...    audio = r.record[source]
...
6có thể bị ném nếu đáp ứng giới hạn hạn ngạch, máy chủ không khả dụng hoặc không có kết nối internet.

Ok, đủ trò chuyện. Hãy làm bẩn bàn tay của chúng ta. Hãy tiếp tục và cố gắng gọi 

Traceback [most recent call last]:
  File "", line 1, in 
TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
6trong phiên thông dịch viên của bạn.

>>>

>>> r.recognize_google[]

Chuyện gì đã xảy ra?

Bạn có thể nhận được một cái gì đó giống như sau:

Traceback [most recent call last]:
  File "", line 1, in 
TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'

Bạn có thể đoán điều này sẽ xảy ra. Làm thế nào có thể nhận ra thứ gì đó từ hư không

Tất cả bảy 

>>> harvard = sr.AudioFile['harvard.wav']
>>> with harvard as source:
...    audio = r.record[source]
...
3phương thức của 
Traceback [most recent call last]:
  File "", line 1, in 
TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
0lớp đều yêu cầu một 
>>> type[audio]

0đối số. Trong mỗi trường hợp, 
>>> type[audio]

0phải là một phiên bản của 
>>> type[audio]

2lớp SpeechRecognition .

Có hai cách để tạo 

>>> type[audio]

2phiên bản: từ tệp âm thanh hoặc âm thanh được ghi bởi micrô. Các tệp âm thanh dễ bắt đầu hơn một chút, vì vậy trước tiên hãy xem xét nó.

Làm việc với tệp âm thanh

Trước khi tiếp tục, bạn cần tải xuống tệp âm thanh. Bạn có thể tìm thấy cái mà tôi đã sử dụng để bắt đầu, “harvard.wav” ở đây . Đảm bảo bạn lưu nó vào cùng một thư mục mà phiên thông dịch Python của bạn đang chạy.

SpeechRecognition giúp làm việc với các tệp âm thanh dễ dàng nhờ 

>>> type[audio]

4lớp tiện dụng của nó . Lớp này có thể được khởi tạo bằng đường dẫn đến tệp âm thanh và cung cấp giao diện trình quản lý ngữ cảnh để đọc và làm việc với nội dung của tệp.

Các loại tệp được hỗ trợ

Hiện tại, SpeechRecognition hỗ trợ các định dạng tệp sau:

  • WAV: phải ở định dạng PCM / LPCM
  • AIFF
  • AIFF-C
  • FLAC: phải là định dạng FLAC gốc; OGG-FLAC không được hỗ trợ

Nếu bạn đang làm việc trên Linux, macOS hoặc Windows dựa trên x-86, bạn sẽ có thể làm việc với các tệp FLAC mà không gặp sự cố. Trên các nền tảng khác, bạn sẽ cần cài đặt bộ mã hóa FLAC và đảm bảo bạn có quyền truy cập vào 

>>> type[audio]

5công cụ dòng lệnh. Bạn có thể tìm thêm thông tin ở đây nếu điều này áp dụng cho bạn.

Sử dụng 
>>> type[audio]

6để chụp dữ liệu từ tệp

Nhập thông tin sau vào phiên thông dịch của bạn để xử lý nội dung của tệp “harvard.wav”:

>>>

>>> harvard = sr.AudioFile['harvard.wav']
>>> with harvard as source:
...    audio = r.record[source]
...

Chuyện gì đã xảy ra?

>>>

>>> type[audio]

Chuyện gì đã xảy ra?

>>>

>>> r.recognize_google[audio]
'the stale smell of old beer lingers it takes heat
to bring out the odor a cold dip restores health and
zest a salt pickle taste fine with ham tacos al
Pastore are my favorite a zestful food is the hot
cross bun'

Chuyện gì đã xảy ra?

Bạn có thể nhận được một cái gì đó giống như sau:

Bạn có thể đoán điều này sẽ xảy ra. Làm thế nào có thể nhận ra thứ gì đó từ hư không

Tất cả bảy 
>>> harvard = sr.AudioFile['harvard.wav']
>>> with harvard as source:
...    audio = r.record[source]
...
3phương thức của 
Traceback [most recent call last]:
  File "", line 1, in 
TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
0lớp đều yêu cầu một 
>>> type[audio]

0đối số. Trong mỗi trường hợp, 
>>> type[audio]

0phải là một phiên bản của 
>>> type[audio]

2lớp SpeechRecognition .

Có hai cách để tạo 

>>> type[audio]

2phiên bản: từ tệp âm thanh hoặc âm thanh được ghi bởi micrô. Các tệp âm thanh dễ bắt đầu hơn một chút, vì vậy trước tiên hãy xem xét nó.

Làm việc với tệp âm thanh

>>>

>>> with harvard as source:
...     audio = r.record[source, duration=4]
...
>>> r.recognize_google[audio]
'the stale smell of old beer lingers'

Chuyện gì đã xảy ra?

>>>

>>> with harvard as source:
...     audio1 = r.record[source, duration=4]
...     audio2 = r.record[source, duration=4]
...
>>> r.recognize_google[audio1]
'the stale smell of old beer lingers'
>>> r.recognize_google[audio2]
'it takes heat to bring out the odor a cold dip'

Lưu ý rằng 

>>> r.recognize_google[audio]
'the stale smell of old beer lingers it takes heat
to bring out the odor a cold dip restores health and
zest a salt pickle taste fine with ham tacos al
Pastore are my favorite a zestful food is the hot
cross bun'
9có chứa một phần của cụm từ thứ ba trong tệp. Khi chỉ định thời lượng, bản ghi có thể dừng ở giữa cụm từ - hoặc thậm chí giữa từ - điều này có thể ảnh hưởng đến độ chính xác của bản phiên âm. Nhiều hơn về điều này trong một chút.

Ngoài việc chỉ định thời lượng ghi, 

>>> type[audio]

6phương thức có thể được cung cấp một điểm bắt đầu cụ thể bằng cách sử dụng 
>>> r.recognize_google[audio]
'the stale smell of old beer lingers it takes heat
to bring out the odor a cold dip restores health and
zest a salt pickle taste fine with ham tacos al
Pastore are my favorite a zestful food is the hot
cross bun'
3đối số từ khóa. Giá trị này đại diện cho số giây từ đầu tệp cần bỏ qua trước khi bắt đầu ghi.

Để chỉ ghi lại cụm từ thứ hai trong tệp, bạn có thể bắt đầu với khoảng chênh lệch là bốn giây và ghi lại, chẳng hạn, ba giây.

>>>

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
0

Các đối số 

>>> r.recognize_google[audio]
'the stale smell of old beer lingers it takes heat
to bring out the odor a cold dip restores health and
zest a salt pickle taste fine with ham tacos al
Pastore are my favorite a zestful food is the hot
cross bun'
3và 
>>> r.recognize_google[audio]
'the stale smell of old beer lingers it takes heat
to bring out the odor a cold dip restores health and
zest a salt pickle taste fine with ham tacos al
Pastore are my favorite a zestful food is the hot
cross bun'
4từ khóa hữu ích cho việc phân đoạn tệp âm thanh nếu bạn có kiến ​​thức trước về cấu trúc của bài phát biểu trong tệp. Tuy nhiên, việc sử dụng chúng một cách vội vàng có thể dẫn đến việc phiên âm kém. Để xem hiệu ứng này, hãy thử các thao tác sau trong trình thông dịch của bạn:

>>>

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
1

Khi bắt đầu ghi ở 4,7 giây, bạn bỏ lỡ phần “it t” ở đầu cụm từ “cần nhiệt để tạo ra mùi”, vì vậy API chỉ nhận được “akes heat”, nó khớp với “Mesquite. ”

Tương tự, ở cuối đoạn ghi âm, bạn bắt được “a co”, là phần mở đầu của cụm từ thứ ba “ngâm mình trong nước lạnh phục hồi sức khỏe và niềm say mê”. Điều này được đối sánh với “Aiko” bởi API.

Có một lý do khác khiến bạn có thể nhận được phiên âm không chính xác. Tiếng ồn! Các ví dụ trên hoạt động tốt vì tệp âm thanh khá sạch. Trong thế giới thực, trừ khi bạn có cơ hội xử lý các tệp âm thanh trước đó, bạn không thể mong đợi âm thanh không bị nhiễu.

Ảnh hưởng của tiếng ồn đối với nhận dạng giọng nói

Tiếng ồn là một thực tế của cuộc sống. Tất cả các bản ghi âm đều có tiếng ồn ở một mức độ nào đó và tiếng ồn không được xử lý có thể phá hỏng độ chính xác của các ứng dụng nhận dạng giọng nói.

Để biết tiếng ồn có thể ảnh hưởng đến nhận dạng giọng nói như thế nào, hãy tải xuống tệp “jackhammer.wav” tại đây . Như mọi khi, hãy đảm bảo rằng bạn lưu nó vào thư mục làm việc của phiên thông dịch viên của bạn.

Tệp này có cụm từ “mùi hôi của bia cũ còn sót lại” được nói với một chiếc búa khoan lớn ở phía sau.

Điều gì xảy ra khi bạn cố gắng phiên âm tệp này?

>>>

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
2

Đường tắt!

Vì vậy, làm thế nào để bạn đối phó với điều này? Một điều bạn có thể thử là sử dụng 

>>> with harvard as source:
...     audio = r.record[source, duration=4]
...
>>> r.recognize_google[audio]
'the stale smell of old beer lingers'
4phương thức của 
Traceback [most recent call last]:
  File "", line 1, in 
TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
0lớp.

>>>

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
3

Điều đó giúp bạn gần hơn một chút với cụm từ thực tế, nhưng nó vẫn chưa hoàn hảo. Ngoài ra, “the” bị thiếu ở đầu cụm từ. Tại sao vậy?

Các 

>>> with harvard as source:
...     audio = r.record[source, duration=4]
...
>>> r.recognize_google[audio]
'the stale smell of old beer lingers'
4phương pháp đọc thứ hai đầu tiên của dòng tập tin và hiệu chỉnh bộ nhận dạng đến mức tiếng ồn của âm thanh. Do đó, phần đó của luồng được sử dụng trước khi bạn gọi 
>>> type[audio]

6để thu thập dữ liệu.

Bạn có thể điều chỉnh khung thời gian 

>>> with harvard as source:
...     audio = r.record[source, duration=4]
...
>>> r.recognize_google[audio]
'the stale smell of old beer lingers'
4sử dụng để phân tích với 
>>> r.recognize_google[audio]
'the stale smell of old beer lingers it takes heat
to bring out the odor a cold dip restores health and
zest a salt pickle taste fine with ham tacos al
Pastore are my favorite a zestful food is the hot
cross bun'
4đối số từ khóa. Đối số này nhận một giá trị số tính bằng giây và được đặt thành 1 theo mặc định. Hãy thử giảm giá trị này xuống 0,5.

>>>

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
4

Chà, bạn có “the” ở đầu cụm từ, nhưng bây giờ bạn có một số vấn đề mới! Đôi khi không thể loại bỏ ảnh hưởng của nhiễu — tín hiệu quá ồn để được xử lý thành công. Đó là trường hợp của tệp này.

Nếu bạn thường xuyên gặp phải những vấn đề này, bạn có thể phải sử dụng đến một số xử lý trước âm thanh. Điều này có thể được thực hiện bằng phần mềm chỉnh sửa âm thanh hoặc gói Python [chẳng hạn như SciPy ] có thể áp dụng bộ lọc cho tệp. Phần thảo luận chi tiết về vấn đề này nằm ngoài phạm vi của hướng dẫn này — hãy xem cuốn sách Think DSP của Allen Downey nếu bạn quan tâm. Hiện tại, chỉ cần lưu ý rằng tiếng ồn xung quanh trong tệp âm thanh có thể gây ra sự cố và phải được giải quyết để tối đa hóa độ chính xác của nhận dạng giọng nói.

Khi làm việc với các tệp ồn ào, có thể hữu ích khi xem phản hồi API thực tế. Hầu hết các API trả về một chuỗi JSON chứa nhiều phiên âm có thể có. Các 

Traceback [most recent call last]:
  File "", line 1, in 
TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
6phương pháp sẽ luôn trả lại rất có thể sao chép, trừ khi bạn buộc nó để cung cấp cho bạn những câu trả lời đầy đủ.

Bạn có thể làm điều này bằng cách đặt 

>>> with harvard as source:
...     audio1 = r.record[source, duration=4]
...     audio2 = r.record[source, duration=4]
...
>>> r.recognize_google[audio1]
'the stale smell of old beer lingers'
>>> r.recognize_google[audio2]
'it takes heat to bring out the odor a cold dip'
1đối số từ khóa của 
Traceback [most recent call last]:
  File "", line 1, in 
TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
6phương pháp thành
>>> with harvard as source:
...     audio1 = r.record[source, duration=4]
...     audio2 = r.record[source, duration=4]
...
>>> r.recognize_google[audio1]
'the stale smell of old beer lingers'
>>> r.recognize_google[audio2]
'it takes heat to bring out the odor a cold dip'
3

>>>

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
5

Như bạn có thể thấy, 

Traceback [most recent call last]:
  File "", line 1, in 
TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
6trả về một từ điển với khóa 
>>> with harvard as source:
...     audio1 = r.record[source, duration=4]
...     audio2 = r.record[source, duration=4]
...
>>> r.recognize_google[audio1]
'the stale smell of old beer lingers'
>>> r.recognize_google[audio2]
'it takes heat to bring out the odor a cold dip'
5trỏ đến danh sách các bảng điểm có thể có. Cấu trúc của phản hồi này có thể khác nhau giữa các API và chủ yếu hữu ích cho việc gỡ lỗi.

Bây giờ, bạn đã có một ý tưởng khá tốt về những điều cơ bản của gói SpeechRecognition. Bạn đã thấy cách tạo một 

>>> type[audio]

4phiên bản từ tệp âm thanh và sử dụng 
>>> type[audio]

6phương pháp này để thu thập dữ liệu từ tệp. Bạn đã học cách ghi lại các phân đoạn của tệp bằng cách sử dụng các đối số 
>>> r.recognize_google[audio]
'the stale smell of old beer lingers it takes heat
to bring out the odor a cold dip restores health and
zest a salt pickle taste fine with ham tacos al
Pastore are my favorite a zestful food is the hot
cross bun'
3và 
>>> r.recognize_google[audio]
'the stale smell of old beer lingers it takes heat
to bring out the odor a cold dip restores health and
zest a salt pickle taste fine with ham tacos al
Pastore are my favorite a zestful food is the hot
cross bun'
4từ khóa của 
>>> type[audio]

6, và bạn đã gặp phải ảnh hưởng bất lợi về độ chính xác của bản sao.

Bây giờ cho phần thú vị. Hãy chuyển từ phiên âm các tệp âm thanh tĩnh sang làm cho dự án của bạn trở nên tương tác bằng cách chấp nhận đầu vào từ micrô.

Làm việc với micrô

Để truy cập micrô của bạn bằng SpeechRecognizer, bạn sẽ phải cài đặt gói PyAudio . Hãy tiếp tục và đóng phiên thông dịch hiện tại của bạn, và hãy làm điều đó.

Cài đặt PyAudio

Quá trình cài đặt PyAudio sẽ khác nhau tùy thuộc vào hệ điều hành của bạn.

Debian Linux

Nếu bạn đang sử dụng Linux dựa trên Debian [như Ubuntu], bạn có thể cài đặt PyAudio với 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
01:

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
6

Sau khi cài đặt, bạn vẫn có thể cần chạy 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
02, đặc biệt nếu bạn đang làm việc trong môi trường ảo.

hệ điều hành Mac

Đối với macOS, trước tiên bạn cần cài đặt PortAudio với Homebrew, sau đó cài đặt PyAudio với 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
03:

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
7

các cửa sổ

Trên Windows, bạn có thể cài đặt PyAudio với 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
03:

Kiểm tra cài đặt

Sau khi cài đặt xong PyAudio, bạn có thể kiểm tra cài đặt từ bảng điều khiển.

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
8

Đảm bảo rằng micrô mặc định của bạn được bật và tắt tiếng. Nếu quá trình cài đặt hoạt động, bạn sẽ thấy một cái gì đó như sau:

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
9

 Hãy tiếp tục và thử nghiệm nó một chút bằng cách nói vào micrô của bạn và xem SpeechRecognition phiên âm bài phát biểu của bạn tốt như thế nào.

Lưu ý: Nếu bạn đang sử dụng Ubuntu và nhận được một số đầu ra thú vị như 'ALSA lib… PCM không xác định', hãy tham khảo trang này để biết các mẹo về cách chặn các thông báo này. Đầu ra này đến từ gói ALSA được cài đặt với Ubuntu — không phải SpeechRecognition hoặc PyAudio. Trên thực tế, những thông báo này có thể chỉ ra sự cố với cấu hình ALSA của bạn, nhưng theo kinh nghiệm của tôi, chúng không ảnh hưởng đến chức năng của mã của bạn. Chúng hầu hết là một mối phiền toái.

các 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
05Lớp

Mở một phiên thông dịch khác và tạo một phiên bản của lớp trình nhận dạng.

>>>

>>> r = sr.Recognizer[]
0

Bây giờ, thay vì sử dụng tệp âm thanh làm nguồn, bạn sẽ sử dụng micrô hệ thống mặc định. Bạn có thể truy cập điều này bằng cách tạo một thể hiện của 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
05lớp.

>>>

>>> r = sr.Recognizer[]
1

Bây giờ, thay vì sử dụng tệp âm thanh làm nguồn, bạn sẽ sử dụng micrô hệ thống mặc định. Bạn có thể truy cập điều này bằng cách tạo một thể hiện của 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
05lớp.

>>>

>>> r = sr.Recognizer[]
2

Bây giờ, thay vì sử dụng tệp âm thanh làm nguồn, bạn sẽ sử dụng micrô hệ thống mặc định. Bạn có thể truy cập điều này bằng cách tạo một thể hiện của 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
05lớp.

Nếu hệ thống của bạn không có micrô mặc định [chẳng hạn như trên Raspberry Pi ] hoặc bạn muốn sử dụng micrô khác với micrô mặc định, bạn sẽ cần chỉ định micrô sẽ sử dụng bằng cách cung cấp chỉ mục thiết bị. Bạn có thể lấy danh sách tên micrô bằng cách gọi 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
07phương thức tĩnh của 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
05lớp.

>>>

>>> r = sr.Recognizer[]
3

Bây giờ, thay vì sử dụng tệp âm thanh làm nguồn, bạn sẽ sử dụng micrô hệ thống mặc định. Bạn có thể truy cập điều này bằng cách tạo một thể hiện của 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
05lớp.

Nếu hệ thống của bạn không có micrô mặc định [chẳng hạn như trên Raspberry Pi ] hoặc bạn muốn sử dụng micrô khác với micrô mặc định, bạn sẽ cần chỉ định micrô sẽ sử dụng bằng cách cung cấp chỉ mục thiết bị. Bạn có thể lấy danh sách tên micrô bằng cách gọi 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
07phương thức tĩnh của 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
05lớp.

Lưu ý rằng đầu ra của bạn có thể khác với ví dụ trên.

Chỉ mục thiết bị của micrô là chỉ mục tên của micrô trong danh sách được trả về 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
09Ví dụ: với đầu ra ở trên, nếu bạn muốn sử dụng micrô có tên “phía trước”, có chỉ số 3 trong danh sách, bạn sẽ tạo micrô ví dụ như thế này:

>>>

>>> r = sr.Recognizer[]
4

Bây giờ, thay vì sử dụng tệp âm thanh làm nguồn, bạn sẽ sử dụng micrô hệ thống mặc định. Bạn có thể truy cập điều này bằng cách tạo một thể hiện của 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
05lớp.

>>>

>>> r = sr.Recognizer[]
5

Bây giờ, thay vì sử dụng tệp âm thanh làm nguồn, bạn sẽ sử dụng micrô hệ thống mặc định. Bạn có thể truy cập điều này bằng cách tạo một thể hiện của 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
05lớp.

Nếu hệ thống của bạn không có micrô mặc định [chẳng hạn như trên Raspberry Pi ] hoặc bạn muốn sử dụng micrô khác với micrô mặc định, bạn sẽ cần chỉ định micrô sẽ sử dụng bằng cách cung cấp chỉ mục thiết bị. Bạn có thể lấy danh sách tên micrô bằng cách gọi 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
07phương thức tĩnh của 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
05lớp.

>>>

>>> r = sr.Recognizer[]
6

Bây giờ, thay vì sử dụng tệp âm thanh làm nguồn, bạn sẽ sử dụng micrô hệ thống mặc định. Bạn có thể truy cập điều này bằng cách tạo một thể hiện của 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
05lớp.

Nếu hệ thống của bạn không có micrô mặc định [chẳng hạn như trên Raspberry Pi ] hoặc bạn muốn sử dụng micrô khác với micrô mặc định, bạn sẽ cần chỉ định micrô sẽ sử dụng bằng cách cung cấp chỉ mục thiết bị. Bạn có thể lấy danh sách tên micrô bằng cách gọi 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
07phương thức tĩnh của 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
05lớp.

Lưu ý rằng đầu ra của bạn có thể khác với ví dụ trên.

Xử lý giọng nói không thể nhận dạng

Hãy thử nhập ví dụ mã trước đó vào bộ ngắt âm thanh và tạo ra một số tiếng ồn khó hiểu vào micrô. Bạn sẽ nhận được một cái gì đó như thế này để phản hồi:

>>> r = sr.Recognizer[]
7

Âm thanh mà API không thể khớp với văn bản sẽ tạo ra một 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
23ngoại lệ. Bạn nên luôn gói các lệnh gọi tới API bằng 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
24và 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
25các khối để xử lý ngoại lệ này .

Lưu ý : Bạn có thể phải cố gắng nhiều hơn mong đợi để có được ngoại lệ. API hoạt động rất chăm chỉ để phiên âm bất kỳ âm thanh nào. Ngay cả những tiếng càu nhàu ngắn cũng được phiên âm thành những từ như "làm thế nào" đối với tôi. Ho, tiếng vỗ tay và tiếng tặc lưỡi sẽ liên tục làm tăng ngoại lệ.

Kết hợp tất cả lại với nhau: Trò chơi “Đoán từ”

Bây giờ bạn đã thấy những kiến ​​thức cơ bản về nhận dạng giọng nói với gói SpeechRecognition, hãy sử dụng kiến ​​thức mới học của bạn và viết một trò chơi nhỏ chọn một từ ngẫu nhiên từ danh sách và cho người dùng ba lần thử đoán từ đó.

Đây là toàn bộ kịch bản:

>>> r = sr.Recognizer[]
8

Hãy phá vỡ điều đó một chút.

Các 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
26chức năng phải mất một 
Traceback [most recent call last]:
  File "", line 1, in 
TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
0và 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
05ví dụ như các đối số và trả về một cuốn từ điển với ba phím. Khóa đầu tiên 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
29, là một boolean cho biết yêu cầu API có thành công hay không. Khóa thứ hai 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
30, là 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
31hoặc một thông báo lỗi cho biết rằng API không khả dụng hoặc giọng nói không thể hiểu được. Cuối cùng, 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
32phím chứa phần phiên âm của âm thanh được ghi bởi micrô.

Trước tiên, hàm sẽ kiểm tra xem các đối số 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
33và 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
34đối số có phải là loại chính xác hay không và tăng một 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
35nếu một trong hai không hợp lệ:

>>> r = sr.Recognizer[]
9

Sau đó, 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
10phương pháp được sử dụng để ghi lại đầu vào micrô:

>>> r.recognize_google[]
0

Các 

>>> with harvard as source:
...     audio = r.record[source, duration=4]
...
>>> r.recognize_google[audio]
'the stale smell of old beer lingers'
4phương pháp được sử dụng để hiệu chỉnh nhận dạng cho việc thay đổi điều kiện tiếng ồn mỗi khi 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
26hàm được gọi.

Tiếp theo, 

Traceback [most recent call last]:
  File "", line 1, in 
TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
6được gọi để phiên âm bất kỳ bài phát biểu nào trong bản ghi âm. Một 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
40khối được sử dụng để bắt 
>>> harvard = sr.AudioFile['harvard.wav']
>>> with harvard as source:
...    audio = r.record[source]
...
6và 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
23ngoại lệ và xử lý cho phù hợp. Sự thành công của các yêu cầu API, bất kỳ thông báo lỗi, và bài phát biểu sao chép được lưu trữ trong 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
43, 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
44và 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
45phím của 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
46từ điển, mà sẽ được trả về bởi các 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
26chức năng.

>>> r.recognize_google[]
1

Bạn có thể kiểm tra 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
26chức năng bằng cách lưu tập lệnh ở trên vào một tệp có tên “đoáning_game.py” và chạy phần sau trong một phiên thông dịch:

>>>

>>> r.recognize_google[]
2

Bản thân trò chơi khá đơn giản. Đầu tiên, một danh sách các từ, số lượng đoán được phép tối đa và giới hạn nhanh chóng được khai báo:

>>> r.recognize_google[]
3

Tiếp theo, một 

Traceback [most recent call last]:
  File "", line 1, in 
TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
0và 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
05thể hiện được tạo và một từ ngẫu nhiên được chọn từ 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
51:

>>> r.recognize_google[]
4

Sau khi in một số hướng dẫn và đợi trong 3 ba giây, một 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
52vòng lặp được sử dụng để quản lý mỗi nỗ lực đoán từ đã chọn của người dùng. Điều đầu tiên bên trong 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
52vòng lặp là một 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
52vòng lặp khác nhắc người dùng 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
55đoán nhiều lần nhất , cố gắng nhận dạng đầu vào mỗi lần bằng 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
26hàm và lưu trữ từ điển trả về biến cục bộ 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
57.

Nếu 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
32khóa của 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
57không phải 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
31, thì bài phát biểu của người dùng đã được phiên âm và vòng lặp bên trong được kết thúc bằng 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
61. Nếu bài phát biểu không được phiên âm và 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
29khóa được đặt thành 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
63, thì lỗi API đã xảy ra và vòng lặp lại bị kết thúc với 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
61. Nếu không, yêu cầu API đã thành công nhưng không thể nhận dạng được giọng nói. Người dùng được cảnh báo và 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
52vòng lặp lặp lại, cho người dùng một cơ hội khác ở lần thử hiện tại.

>>> r.recognize_google[]
5

Khi 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
52vòng lặp bên trong kết thúc, 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
57từ điển sẽ được kiểm tra lỗi. Nếu có bất kỳ điều gì xảy ra, thông báo lỗi sẽ được hiển thị và 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
52vòng lặp bên ngoài được kết thúc 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
61, điều này sẽ kết thúc quá trình thực thi chương trình.

>>> r.recognize_google[]
6

Nếu không có bất kỳ lỗi nào, bản phiên âm sẽ được so sánh với từ được chọn ngẫu nhiên. Các 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
70phương pháp cho các đối tượng chuỗi được sử dụng để đảm bảo phù hợp hơn về đoán đến từ chọn. API có thể trả về lời nói khớp với từ “apple” là “Apple” hoặc “apple” và một trong hai câu trả lời sẽ được tính là một câu trả lời đúng.

Nếu đoán đúng, người dùng thắng và trò chơi kết thúc. Nếu người dùng không chính xác và vẫn còn bất kỳ lần thử nào, 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
52vòng lặp bên ngoài sẽ lặp lại và một dự đoán mới được truy xuất. Nếu không, người dùng sẽ mất trò chơi.

>>> r.recognize_google[]
7

Khi chạy, đầu ra sẽ giống như sau:

>>> r.recognize_google[]
8

Tóm tắt và bổ sung tài nguyên

Trong hướng dẫn này, bạn đã biết cách cài đặt gói SpeechRecognition và sử dụng 

Traceback [most recent call last]:
  File "", line 1, in 
TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
0lớp của nó để dễ dàng nhận dạng giọng nói từ cả tệp — bằng cách sử dụng 
>>> type[audio]

6—và đầu vào micrô — 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
74bằng cách sử dụng các đối số từ khoá 
>>> r.recognize_google[audio]
'the stale smell of old beer lingers it takes heat
to bring out the odor a cold dip restores health and
zest a salt pickle taste fine with ham tacos al
Pastore are my favorite a zestful food is the hot
cross bun'
3và 
>>> r.recognize_google[audio]
'the stale smell of old beer lingers it takes heat
to bring out the odor a cold dip restores health and
zest a salt pickle taste fine with ham tacos al
Pastore are my favorite a zestful food is the hot
cross bun'
4của 
>>> type[audio]

6phương pháp.

Bạn đã thấy ảnh hưởng của tiếng ồn có thể có đối với độ chính xác của các phiên âm và đã học cách điều chỉnh 

Traceback [most recent call last]:
  File "", line 1, in 
TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
0độ nhạy của một phiên bản đối với tiếng ồn xung quanh. 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
79Bạn cũng đã biết những ngoại lệ nào mà một 
Traceback [most recent call last]:
  File "", line 1, in 
TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
0phiên bản có thể gây ra— 
>>> harvard = sr.AudioFile['harvard.wav']
>>> with harvard as source:
...    audio = r.record[source]
...
6đối với các yêu cầu API không hợp lệ và 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
82đối với giọng nói khó hiểu — và cách để xử lý những điều này với 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
40các khối.

Nhận dạng giọng nói là một chủ đề sâu sắc và những gì bạn đã học ở đây hầu như không làm nổi bề mặt. Nếu bạn muốn tìm hiểu thêm, đây là một số tài nguyên bổ sung.

Để biết thêm thông tin về gói SpeechRecognition:

  • Thư viện tham khảo
  • Các ví dụ
  • Trang khắc phục sự cố

Một số tài nguyên Internet thú vị:

  • Phía sau micrô: Khoa học nói chuyện với máy tính . Một đoạn phim ngắn về xử lý giọng nói của Google.
  • Quan điểm lịch sử về nhận dạng giọng nói của Huang, Baker và Reddy. Truyền thông của ACM [2014]. Bài viết này cung cấp một cái nhìn sâu sắc và học thuật về sự phát triển của công nghệ nhận dạng giọng nói.
  • Quá khứ, hiện tại và tương lai của công nghệ nhận dạng giọng nói của Clark Boyd tại The Startup. Bài đăng trên blog này trình bày tổng quan về công nghệ nhận dạng giọng nói, với một số suy nghĩ về tương lai.

Một số sách hay về nhận dạng giọng nói:

  • Giọng nói trong máy: Xây dựng máy tính hiểu giọng nói , Pieraccini, MIT Press [2012]. Một cuốn sách dành cho đối tượng phổ thông có thể truy cập được bao gồm lịch sử cũng như những tiến bộ hiện đại trong xử lý giọng nói.
  • Các nguyên tắc cơ bản về nhận dạng giọng nói , Rabiner và Juang, Prentice Hall [1993]. Rabiner, một nhà nghiên cứu tại Bell Labs, là người có công trong việc thiết kế một số công cụ nhận dạng giọng nói khả thi về mặt thương mại đầu tiên. Cuốn sách này đã hơn 20 năm tuổi, nhưng rất nhiều nguyên tắc cơ bản vẫn được giữ nguyên.
  • Nhận dạng giọng nói tự động: Phương pháp tiếp cận học tập sâu , Yu và Deng, Springer [2014]. Yu và Deng là những nhà nghiên cứu tại Microsoft và cả hai đều rất tích cực trong lĩnh vực xử lý giọng nói. Cuốn sách này bao gồm rất nhiều phương pháp tiếp cận hiện đại và nghiên cứu tiên tiến nhưng không dành cho những người yếu tim về toán học.

Phụ lục: Nhận dạng giọng nói bằng các ngôn ngữ khác ngoài tiếng Anh

Trong suốt hướng dẫn này, chúng tôi đã nhận dạng giọng nói bằng tiếng Anh, là ngôn ngữ mặc định cho mỗi 

>>> harvard = sr.AudioFile['harvard.wav']
>>> with harvard as source:
...    audio = r.record[source]
...
3phương pháp của gói SpeechRecognition. Tuy nhiên, bạn hoàn toàn có thể nhận dạng giọng nói bằng các ngôn ngữ khác và khá đơn giản để thực hiện.

Để nhận dạng giọng nói bằng một ngôn ngữ khác, hãy đặt 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
85đối số từ khóa của 
>>> harvard = sr.AudioFile['harvard.wav']
>>> with harvard as source:
...    audio = r.record[source]
...
3phương thức thành một chuỗi tương ứng với ngôn ngữ mong muốn. Hầu hết các phương pháp đều chấp nhận thẻ ngôn ngữ BCP-47, chẳng hạn như 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
87tiếng Anh Mỹ hoặc 
>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
88tiếng Pháp. Ví dụ: phần sau nhận dạng giọng nói tiếng Pháp trong tệp âm thanh:

>>> r.recognize_google[]
9

Chỉ các phương thức sau chấp nhận 

>>> import speech_recognition as sr
>>> sr.__version__
'3.8.1'
85đối số từ khóa:

  • Traceback [most recent call last]:
      File "", line 1, in 
    TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
    
    5
  • Traceback [most recent call last]:
      File "", line 1, in 
    TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
    
    6
  • Traceback [most recent call last]:
      File "", line 1, in 
    TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
    
    7
  • Traceback [most recent call last]:
      File "", line 1, in 
    TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
    
    9
  • >>> harvard = sr.AudioFile['harvard.wav']
    >>> with harvard as source:
    ...    audio = r.record[source]
    ...
    
    0

Để biết những thẻ ngôn ngữ nào được API bạn đang sử dụng hỗ trợ, bạn sẽ phải tham khảo tài liệu tương ứng . Bạn 

Traceback [most recent call last]:
  File "", line 1, in 
TypeError: recognize_google[] missing 1 required positional argument: 'audio_data'
6có thể tìm thấy danh sách các thẻ được chấp nhận trong câu trả lời Stack Overflow này .

Các khóa học qua video:
Lập trình C Java C# SQL Server PHP HTML5-CSS3-JavaScript
« Prev: Python: Tôi có thể làm gì với Python? Prev: Python: Tôi có thể làm gì với Python?
» Next: Python: Cách in có định dạng trong Python với bài toán in các thừa số nguyên tố Next: Python: Cách in có định dạng trong Python với bài toán in các thừa số nguyên tố

Bài Viết Liên Quan

Chủ Đề