Python: Hướng dẫn cơ bản để nhận dạng giọng nói với Python
Đăng ký nhận thông tin về những video mới nhất
Mục Chính
- 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
- các RecognizerLớp
- Làm việc với tệp âm thanh
- Làm việc với micrô
- 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
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 đã khi nào tự hỏi làm thế nào để thêm nhận dạng giọng nói vào dự án Bất Động Sản Python của mình ? Nếu vậy, sau đó liên tục đọc ! Nó thuận tiện 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 những nâng cấp cải tiến về năng lực tiếp cận cũng đáng được xem xét Nhận dạng giọng nói được cho phép người già và người khiếm thị tương tác với những loại sản phẩm và dịch vụ văn minh một cách nhanh gọn và tự nhiên — không cần GUI !
Hơn hết, gồm có cả nhận dạng giọng nói trong một dự án Bất Động Sản Python thực sự đơn thuần. Trong hướng dẫn này, bạn sẽ tìm hiểu và khám phá cách triển khai. 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ẽ vận dụng những gì bạn đã học được vào game show “ Đoán từ ” đơn thuần và xem tổng thể phối 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
Trước khi tất cả chúng ta đi đến trong thực tiễn của việc thực thi nhận dạng giọng nói bằng Python, hãy dành một chút ít thời hạn để nói về cách hoạt động giải trí của nhận dạng giọng nói. Một cuộc luận bàn vừa đủ sẽ lấp đầy một cuốn sách, vì thế tôi sẽ không phân phối cho bạn toàn bộ những chi tiết cụ thể kỹ thuật ở đây. Trên trong thực tiễn, phần này không bắt buộc so với phần còn lại của hướng dẫn. Nếu bạn muốn đi thẳng vào yếu tố, vui mắt bỏ lỡ .Nhận dạng giọng nói bắt nguồn từ nghiên cứu và điều tra được triển khai tại Bell Labs vào đầu những năm 1950. Các mạng lưới hệ thống bắt đầu chỉ số lượng giới hạn ở một người nói duy nhất và có lượng từ vựng số lượng giới hạn khoảng chừng một chục từ. Các mạng lưới hệ thống nhận dạng giọng nói tân tiến đã có một chặng đường dài kể từ những mạng lưới hệ thống cổ xưa của chúng. Họ hoàn toàn có thể nhận dạng bài phát biểu từ nhiều người nói và có vốn từ vựng khổng lồ bằng nhiều ngôn từ .Tất nhiên, thành phần tiên phong của nhận dạng giọng nói là giọng nói. Lời nói phải được quy đổi từ âm thanh vật lý sang tín hiệu điện bằng micrô, sau đó sang tài liệu kỹ thuật số bằng bộ chuyển đổi tựa như sang kỹ thuật số. Sau khi được số hóa, một số ít quy mô hoàn toàn có thể được sử dụng để chuyển âm thanh thành văn bản .
Hầu hết những mạng lưới hệ thống nhận dạng giọng nói tân tiến dựa trên cái được gọi là Mô hình Markov ẩn ( HMM ). Cách tiếp cận này hoạt động giải trí dựa trên giả định rằng một tín hiệu giọng nói, khi được xem trên một khoảng chừng thời hạn đủ ngắn ( ví dụ, mười mili giây ), hoàn toàn có thể gần đúng một cách hài hòa và hợp lý như một quy trình tĩnh — nghĩa là một quy trình trong đó những thuộc tính thống kê không biến hóa theo thời hạn .Trong HMM nổi bật, tín hiệu lời nói được chia thành những đoạn dài 10 mili giây. Phổ hiệu suất của mỗi đoạn, về cơ bản là một đồ thị hiệu suất của tín hiệu như một hàm của tần số, được ánh xạ tới một vectơ của những số thực được gọi là thông số cepstral. Thứ nguyên của vectơ này thường nhỏ — nhiều lúc thấp nhất là 10, mặc dầu những mạng lưới hệ thống đúng chuẩn hơn hoàn toàn có thể có thứ nguyên 32 trở lên. Đầu ra ở đầu cuối của HMM là một chuỗi những vectơ này .Để giải thuật lời nói thành văn bản, những nhóm vectơ được đối sánh tương quan với một hoặc nhiều âm vị — một đơn vị chức năng cơ bản của lời nói. Việc thống kê giám sát này yên cầu phải được huấn luyện và đào tạo, vì âm thanh của một âm vị đổi khác từ người nói này sang người nói khác, và thậm chí còn đổi khác từ cách phát âm này sang cách phát âm khác của cùng một người nói. Một thuật toán đặc biệt quan trọng sau đó được vận dụng để xác lập từ ( hoặc những từ ) có nhiều năng lực nhất tạo ra chuỗi âm vị nhất định .Người ta hoàn toàn có thể tưởng tượng rằng hàng loạt quy trình này hoàn toàn có thể tốn kém về mặt giám sát. Trong nhiều mạng lưới hệ thống nhận dạng giọng nói văn minh, 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 những kỹ thuật quy đổi đặc trưng và giảm kích cỡ trước khi nhận dạng HMM. Bộ phát hiện hoạt động giải trí 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ó năng lực chứa giọng nói. Điều này ngăn bộ nhận dạng mất thời hạn nghiên cứu và phân tích những phần không thiết yếu 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 ngại 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 trải qua API và nhiều dịch vụ trong số này phân phối những SDK Python .
Chọn gói nhận dạng giọng nói Python
Có một số ít những gói để nhận dạng giọng nói trên PyPI. Một vài trong số chúng gồm có :Một số gói này — ví dụ điển hình như wit và apiai — cung ứng những tính năng tích hợp sẵn, như giải quyết và xử lý ngôn từ tự nhiên để xác lập dự tí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 chuyên sâu vào quy đổi giọng nói thành văn bản .
Có một gói điển hình nổi bật về tính dễ sử dụng : SpeechRecognition .Nhận dạng giọng nói nhu yếu nguồn vào âm thanh và SpeechRecognition giúp việc truy xuất nguồn vào này thực sự thuận tiện. Thay vì phải kiến thiết xây dựng những tập lệnh để truy vấn micrô và giải quyết và xử lý những 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 giải trí như một trình bảo phủ cho một số ít API giọng nói thông dụng và do đó cực kỳ linh động. Một trong số này — API Web Speech của Google — tương hỗ 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 hoàn toàn có thể xuống chân mà không cần phải ĐK dịch vụ .Tính linh động 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 Bất Động Sản Python nào. Tuy nhiên, không bảo vệ tương hỗ 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 ít thời hạn điều tra và nghiên cứu những tùy chọn có sẵn để tìm hiểu và khám phá xem liệu SpeechRecognition có hoạt động giải trí trong trường hợp đơn cử của bạn hay không .Vì vậy, giờ đây bạn đã được thuyết phục rằng bạn nên thử SpeechRecognition, bước tiếp theo là setup nó trong môi trường tự nhiên của bạn .
Cài đặt SpeechRecognition
SpeechRecognition thích hợp với Python 2.6, 2.7 và 3.3 +, nhưng nhu yếu 1 số ít bước setup bổ trợ 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 hoàn toàn có thể thiết lập SpeechRecognition từ một thiết bị đầu cuối bằng pip :
USDpip install SpeechRecognition
Sau khi thiết lập, bạn nên xác định thiết lập 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 hoàn toàn 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 gian viết bài .Hãy liên tục và giữ cho phiên này mở. Bạn sẽ khởi đầu thao tác với nó chỉ trong giây lát .SpeechRecognition sẽ hoạt động giải trí hiệu suất cao nếu toàn bộ những gì bạn cần làm là hoạt động giải trí với những tệp âm thanh hiện có. Tuy nhiên, những trường hợp sử dụng đơn cử nhu yếu 1 số ít nhờ vào. Đáng quan tâm, gói PyAudio là thiết yếu để thu đầu vào micrô .Bạn sẽ thấy những nhờ vào nào bạn cần khi đọc thêm. Bây giờ, hãy đi sâu vào và tò mò những điều cơ bản của gói .
các
Recognizer
LớpTất cả điều kỳ diệu trong SpeechRecognition xảy ra với
Recognizer
lớp học.
Tất nhiên, mục đích chính của một
Recognizer
phiê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
Recognizer
phiê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( )
Mỗi
Recognizer
phiê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à:Trong số bảy, chỉ
recognize_sphinx()
hoạt động ngoại tuyến với công cụ CMU Sphinx. Sáu cái còn lại đều yêu cầu kết nối internet.Phần đàm đạo không thiếu về những tính năng và quyền lợi của mỗi API nằm ngoài khoanh vùng phạm vi của hướng dẫn này. Vì SpeechRecognition đi kèm với khóa API mặc định cho Google Web Speech API, bạn hoàn toàn có thể khởi đầu với nó ngay lập tức. Vì nguyên do này, chúng tôi sẽ sử dụng API Web Speech trong hướng dẫn này. Sáu API khác đều nhu yếu xác nhận bằng khóa API hoặc tích hợp tên người dùng / mật khẩu. Để biết thêm thông tin, hãy tìm hiểu thêm tài liệu SpeechRecognition .Thận trọng : Khóa mặc định do SpeechRecognition cung ứng chỉ dành cho mục tiêu thử nghiệm và Google hoàn toàn có thể tịch thu khóa này bất kể khi nào. Không phải là một quan điểm hay khi sử dụng Google Web Speech API trong quy trình sản xuất. Ngay cả với một khóa API hợp lệ, bạn sẽ chỉ bị số lượng giới hạn ở 50 nhu yế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ì thế những gì bạn học ngày hôm nay sẽ thuận tiện chuyển sang một dự án Bất Động Sản trong quốc tế thực .
Mỗi
recognize_*()
phương thức sẽ đưa ra mộtspeech_recognition.RequestError
ngoại lệ nếu không thể truy cập được API. Đối vớirecognize_sphinx()
, đ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,RequestError
có 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
recognize_google()
trong phiên thông dịch viên của bạn.>> >
>> >r.recognize_google( )
Chuyện gì đã xảy ra ?Bạn hoàn toà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 hoàn toàn có thể đoán điều này sẽ xảy ra. Làm thế nào hoàn toàn có thể nhận ra thứ gì đó từ hư không
Tất cả bảy
recognize_*()
phương thức củaRecognizer
lớp đều yêu cầu mộtaudio_data
đối số. Trong mỗi trường hợp,audio_data
phải là một phiên bản củaAudioData
lớp SpeechRecognition .Có hai cách để tạo
AudioData
phiê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 liên tục, bạn cần tải xuống tệp âm thanh. Bạn hoàn toàn có thể tìm thấy cái mà tôi đã sử dụng để khởi đầ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ờ
AudioFile
lớ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 tương hỗ những đị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
flac
cô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
record()
để chụp dữ liệu từ tệpNhập thông tin sau vào phiên thông dịch của bạn để giải quyết và xử lý nội dung của tệp “ harvard.wav ” :>> >
>> >harvard = sr.AudioFile(' harvard.wav ') >> >with harvard as source: ... audio = r.record(source) ...
Trình quản lý ngữ cảnh mở tệp và đọc nội dung của nó, lưu trữ dữ liệu trong một
AudioFile
thể hiện được gọi làsource.
Sau đó,record()
phương thức ghi dữ liệu từ toàn bộ tệp vào mộtAudioData
thể hiện. Bạn có thể xác nhận điều này bằng cách kiểm tra loạiaudio
:>> >
>> >type(audio)
Bây giờ bạn có thể gọi
recognize_google()
để cố gắng nhận dạng bất kỳ lời nói nào trong âm thanh. Tùy thuộc vào tốc độ kết nối internet của bạn, bạn có thể phải đợi vài giây trước khi xem kết quả.>> >
>> >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 '
Xin chúc mừng ! Bạn vừa sao chép tệp âm thanh tiên phong của mình !
Nếu bạn đang tự hỏi những cụm từ trong tệp “ harvard.wav ” đến từ đâu, chúng là ví dụ về Câu Harvard. Những cụm từ này đã được IEEE xuất bản vào năm 1965 để sử dụng trong kiểm tra độ rõ giọng nói của những đường dây điện thoại cảm ứng. Chúng vẫn được sử dụng trong VoIP và thử nghiệm di động thời nay .Harvard Sentences gồm có 72 list mười cụm từ. Bạn hoàn toàn có thể tìm thấy những bản ghi âm có sẵn không tính tiền của những cụm từ này trên website của Open Speech Repository. Bản ghi âm có sẵn bằng tiếng Anh, tiếng Quan Thoại, tiếng Pháp và tiếng Hindi. Họ phân phối một nguồn tài liệu không tính tiền tuyệt vời để kiểm tra mã của bạn .
Chụp phân đoạn với
offset
vàduration
Điều gì sẽ xảy ra nếu bạn chỉ muốn ghi lại một phần của bài phát biểu trong một tệp tin? Các
record()
phương pháp chấp nhận mộtduration
lập luận từ khoá đó dừng ghi âm sau một số lần nhất định của giây.Ví dụ : phần sau ghi lại bất kể bài phát biểu nào trong bốn giây tiên phong của tệp :>> >
>> >with harvard as source: ... audio = r.record(source, duration=4) ... >> >r.recognize_google(audio) ' the stale smell of old beer lingers '
Các
record()
phương pháp, khi được sử dụng bên trong mộtwith
khối, luôn luôn di chuyển về phía trước trong dòng tập tin. Điều này có nghĩa là nếu bạn ghi một lần trong bốn giây và sau đó ghi lại trong bốn giây, thì lần thứ hai trả về bốn giây âm thanh sau bốn giây đầu tiên.>> >
>> >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
audio2
có 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,
record()
phương thức có thể được cung cấp một điểm bắt đầu cụ thể bằng cách sử dụngoffset
đố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 hoàn toàn có thể khởi đầu với khoảng chừng chênh lệch là bốn giây và ghi lại, ví dụ điển hình, ba giây .>> >
>> >with harvard as source: ... audio = r.record(source, offset=4, duration=3) ... >> >r.recognize_google(audio) ' it takes heat to bring out the odor '
Các đối số
offset
vàduration
từ 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:>> >
>> >with harvard as source: ... audio = r.record(source, offset=4.7, duration=2.8) ... >> >r.recognize_google(audio) ' Mesquite to bring out the odor Aiko '
Khi khởi đầ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ì thế 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ở màn của cụm từ thứ ba “ ngâm mình trong nước lạnh hồi sinh sức khỏe thể chất và niềm mê hồn ”. Điều này được đối sánh tương quan với “ Aiko ” bởi API .Có một nguyên do khác khiến bạn hoàn toàn có thể nhận được phiên âm không đúng chuẩn. Tiếng ồn ! Các ví dụ trên hoạt động giải trí tốt vì tệp âm thanh khá sạch. Trong quốc tế thực, trừ khi bạn có thời cơ giải quyết và xử lý những tệp âm thanh trước đó, bạn không hề 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 tiễn của đời sống. Tất cả những bản ghi âm đều có tiếng ồn ở một mức độ nào đó và tiếng ồn không được giải quyết và xử lý hoàn toàn có thể phá hỏng độ đúng chuẩn của những ứng dụng nhận dạng giọng nói .
Để biết tiếng ồn hoàn toàn có thể tác động ả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 bảo vệ rằng bạn lưu nó vào thư mục thao tá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 nỗ lực phiên âm tệp này ?
>> >
>> >jackhammer = sr.AudioFile(' jackhammer.wav ') >> >with jackhammer as source: ... audio = r.record(source) ... >> >r.recognize_google(audio) ' the snail smell of old gear vendors '
Đườ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
adjust_for_ambient_noise()
phương thức củaRecognizer
lớp.
>> >
>> >with jackhammer as source: ... r.adjust_for_ambient_noise(source) ... audio = r.record(source) ... >> >r.recognize_google(audio) ' still smell of old beer vendors '
Điều đó giúp bạn gần hơn một chút ít với cụm từ thực tiễn, nhưng nó vẫn chưa tuyệt vời và hoàn hảo nhất. Ngoài ra, “ the ” bị thiếu ở đầu cụm từ. Tại sao vậy ?
Các
adjust_for_ambient_noise()
phươ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ọirecord()
để thu thập dữ liệu.Bạn có thể điều chỉnh khung thời gian
adjust_for_ambient_noise()
sử dụng để phân tích vớiduration
đố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.
>> >
>> >with jackhammer as source: ... r.adjust_for_ambient_noise(source, duration=0.5) ... audio = r.record(source) ... >> >r.recognize_google(audio) ' the snail smell like old Beer Mongers '
Chà, bạn có “ the ” ở đầu cụm từ, nhưng giờ đây bạn có một số ít yếu tố mới ! Đôi khi không thể vô hiệu tác động ảnh hưởng của nhiễu — tín hiệu quá ồn để được giải quyết và xử lý thành công xuất sắc. Đó là trường hợp của tệp này .Nếu bạn liên tục gặp phải những yếu tố này, bạn hoàn toàn có thể phải sử dụng đến một số ít giải quyết và xử lý trước âm thanh. Điều này hoàn toàn có thể được thực thi bằng ứng dụng chỉnh sửa âm thanh hoặc gói Python ( ví dụ điển hình như SciPy ) hoàn toàn có thể vận dụng bộ lọc cho tệp. Phần đàm đạo cụ thể về yếu tố này nằm ngoài khoanh vùng 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 chăm sóc. Hiện tại, chỉ cần chú ý quan tâm rằng tiếng ồn xung quanh trong tệp âm thanh hoàn toàn có thể gây ra sự cố và phải được xử lý để tối đa hóa độ đúng mự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
recognize_google()
phươ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
show_all
đối số từ khóa củarecognize_google()
phương pháp thànhTrue.
>> >
>> >r.recognize_google(audio, show_all=True) { ' alternative ' : [ { ' transcript ' : ' the snail smell like old Beer Mongers ' } , { ' transcript ' : ' the still smell of old beer vendors ' } , { ' transcript ' : ' the snail smell like old beer vendors ' } , { ' transcript ' : ' the stale smell of old beer vendors ' } , { ' transcript ' : ' the snail smell like old beermongers ' } , { ' transcript ' : ' destihl smell of old beer vendors ' } , { ' transcript ' : ' the still smell like old beer vendors ' } , { ' transcript ' : ' bastille smell of old beer vendors ' } , { ' transcript ' : ' the still smell like old beermongers ' } , { ' transcript ' : ' the still smell of old beer venders ' } , { ' transcript ' : ' the still smelling old beer vendors ' } , { ' transcript ' : ' musty smell of old beer vendors ' } , { ' transcript ' : ' the still smell of old beer vendor ' } ], ' final ' : True }
Như bạn có thể thấy,
recognize_google()
trả về một từ điển với khóa'alternative'
trỏ đế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
AudioFile
phiên bản từ tệp âm thanh và sử dụngrecord()
phươ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ốoffset
vàduration
từ khóa củarecord()
, 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 mê hoặc. Hãy chuyển từ phiên âm những tệp âm thanh tĩnh sang làm cho dự án Bất Động Sản của bạn trở nên tương tác bằng cách gật đầu nguồn vào từ micrô .
Làm việc với micrô
Để truy vấn micrô của bạn bằng SpeechRecognizer, bạn sẽ phải setup gói PyAudio. Hãy liên 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 setup PyAudio sẽ khác nhau tùy thuộc vào hệ quản lý và đ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
apt
:USDsudo apt-get install python-pyaudio python3-pyaudio
Sau khi cài đặt, bạn vẫn có thể cần chạy
pip install pyaudio
, đặ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
pip
:USDbrew install portaudio USDpip install pyaudio
các cửa sổ
Trên Windows, bạn có thể cài đặt PyAudio với
pip
:USDpip install pyaudio
Kiểm tra cài đặt
Sau khi setup xong PyAudio, bạn hoàn toàn có thể kiểm tra setup từ bảng điều khiển và tinh chỉnh .
USDpython -m speech_recognition
Đảm bảo rằng micrô mặc định của bạn được bật và tắt tiếng. Nếu quy trình thiết lập hoạt động giải trí, bạn sẽ thấy một cái gì đó như sau :
A moment of silence, please ... Set minimum energy threshold to 600.4452854381937 Say something !
Hãy liên tục và thử nghiệm nó một chút í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 1 số ít đầu ra mê hoặc như ‘ ALSA lib … PCM không xác lập ‘, hãy tìm hiểu thêm trang này để biết những mẹo về cách chặn những thông tin này. Đầu ra này đến từ gói ALSA được thiết lập với Ubuntu — không phải SpeechRecognition hoặc PyAudio. Trên trong thực tiễn, những thông tin này hoàn toàn có thể chỉ ra sự cố với thông số kỹ thuật ALSA của bạn, nhưng theo kinh nghiệm tay nghề của tôi, chúng không tác động ảnh hưởng đến tính năng của mã của bạn. Chúng hầu hết là một mối phiền phức .
các
Microphone
LớpMở 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 .>> >
>> >import speech_recognition as sr >> >r = sr.Recognizer( )
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
Microphone
lớp.>> >
>> >mic = sr.Microphone( )
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
list_microphone_names()
phương thức tĩnh củaMicrophone
lớp.>> >
>> >sr.Microphone.list_microphone_names( ) [ ' HDA Intel PCH : ALC272 Analog ( hw : 0,0 ) ' , ' HDA Intel PCH : HDMI 0 ( hw : 0,3 ) ' , ' sysdefault ' , ' front ' , ' surround40 ' , ' surround51 ' , ' surround71 ' , ' hdmi ' , ' pulse ' , ' dmix ' , ' default ' ]
Lưu ý rằng đầu ra của bạn hoàn toà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ề
list_microphone_names().
Ví 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:>> >
>> ># This is just an example ; do not run >> >mic = sr.Microphone(device_index=3)
Tuy nhiên, so với hầu hết những dự án Bất Động Sản, hoàn toàn có thể bạn sẽ muốn sử dụng micrô mạng lưới hệ thống mặc định .
Sử dụng
listen()
để chụp đầu vào micrôBây giờ bạn đã có một
Microphone
phiên bản sẵn sàng để sử dụng, đã đến lúc nắm bắt một số thông tin đầu vào.Cũng giống như
AudioFile
lớp học,Microphone
là một trình quản lý ngữ cảnh. Bạn có thể nắm bắt đầu vào từ micrô bằng cách sử dụnglisten()
phương thức củaRecognizer
lớp bên trongwith
khối. Phương thức này lấy một nguồn âm thanh làm đối số đầu tiên của nó và ghi lại đầu vào từ nguồn cho đến khi phát hiện ra sự im lặng.>> >
>> >with mic as source: ... audio = r.listen(source) ...
Sau khi bạn thực hiện
with
khối, hãy thử nói “xin chào” vào micrô của bạn. Chờ một chút để lời nhắc thông dịch viên hiển thị lại. Khi lời nhắc “>>>” trả về, bạn đã sẵn sàng nhận dạng bài phát biểu.>> >
>> >r.recognize_google(audio) ' hello '
Nếu lời nhắc không khi nào quay trở lại, rất hoàn toàn có thể micrô của bạn đang nhận quá nhiều tiếng ồn xung quanh. Bạn hoàn toàn có thể làm gián đoạn quy trình bằng + ctrl + c + + để lấy lại lời nhắc .
Để xử lý tiếng ồn xung quanh, bạn sẽ cần sử dụng
adjust_for_ambient_noise()
phương pháp củaRecognizer
lớp, giống như bạn đã làm khi cố gắng tìm hiểu tệp âm thanh bị nhiễu. Vì đầu vào từ micrô khó dự đoán hơn nhiều so với đầu vào từ tệp âm thanh, nên thực hiện điều này bất cứ lúc nào bạn nghe đầu vào micrô.>> >
>> >with mic as source: ... r.adjust_for_ambient_noise(source) ... audio = r.listen(source) ...
Sau khi chạy mã trên, hãy đợi một giây
adjust_for_ambient_noise()
để thực hiện công việc của nó, sau đó thử nói “xin chào” vào micrô. Một lần nữa, bạn sẽ phải đợi một lúc để lời nhắc của thông dịch viên quay lại trước khi cố gắng nhận dạng bài phát biểu.
Nhớ lại rằng
adjust_for_ambient_noise()
phân tích nguồn âm thanh trong một giây. Nếu điều này có vẻ quá dài đối với bạn, vui lòng điều chỉnh điều này bằngduration
đối số từ khóa.Tài liệu SpeechRecognition khuyến nghị sử dụng thời lượng không dưới 0,5 giây. Trong 1 số ít trường hợp, bạn hoàn toàn có thể thấy rằng thời lượng dài hơn mặc định là một giây tạo ra tác dụng tốt hơn. Giá trị tối thiểu bạn cần tùy thuộc vào thiên nhiên và môi trường xung quanh của micrô. Thật không may, thông tin này thường không được biết trong quy trình tăng trưởng. Theo kinh nghiệm tay nghề của tôi, thời lượng mặc định là một giây là đủ cho hầu hết những ứng dụng .
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ố ít 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 :
Traceback ( most recent call last ) : File
"
, line 1, in" File " / home / david / real_python / speech_recognition_primer / venv / lib / python3. 5 / site-packages / speech_recognition / __init__. py ", line 858, in recognize_google if not isinstance(actual_result, dict) or len(actual_result.get(" alternative ", [ ] ) ) = = 0: raise UnknownValueError( ) speech_recognition. UnknownValueError
Âm thanh mà API không thể khớp với văn bản sẽ tạo ra một
UnknownValueError
ngoại lệ. Bạn nên luôn gói các lệnh gọi tới API bằngtry
vàexcept
các khối để xử lý ngoại lệ này .Lưu ý : Bạn hoàn toàn có thể phải nỗ lực nhiều hơn mong đợi để có được ngoại lệ. API hoạt động giải trí rất cần mẫn để 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 ” so 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 game show nhỏ chọn một từ ngẫu nhiên từ list và cho người dùng ba lần thử đoán từ đó .Đây là hàng loạt ngữ cảnh :
import random import time import speech_recognition as sr def recognize_speech_from_mic(recognizer, microphone) : " " " Transcribe speech from recorded from ` microphone ` . Returns a dictionary with three keys : " success " : a boolean indicating whether or not the API request was successful " error " : ` None ` if no error occured, otherwise a string containing an error message if the API could not be reached or speech was unrecognizable " transcription " : ` None ` if speech could not be transcribed , otherwise a string containing the transcribed text " " " # check that recognizer and microphone arguments are appropriate type if not isinstance(recognizer, sr.Recognizer) : raise TypeError(" ` recognizer ` must be ` Recognizer ` instance ") if not isinstance(microphone, sr.
Microphone
) : raise TypeError(" ` microphone ` must be ` Microphone ` instance ") # adjust the recognizer sensitivity to ambient noise and record audio # from the microphone with microphone as source: recognizer.adjust_for_ambient_noise(source) audio = recognizer.listen(source) # set up the response object response = { " success ": True, " error ": None, " transcription ": None } # try recognizing the speech in the recording # if a RequestError or UnknownValueError exception is caught , # update the response object accordingly try: response[" transcription "] = recognizer.recognize_google(audio) except sr.RequestError: # API was unreachable or unresponsive response[" success "] = False response[" error "] = " API unavailable " except sr.UnknownValueError: # speech was unintelligible response[" error "] = " Unable to recognize speech " return response if __name__ = = " __main__ ": # set the list of words, maxnumber of guesses, and prompt limit WORDS = [" apple ", " banana ", " grape ", " orange ", " mango ", " lemon "] NUM_GUESSES = 3 PROMPT_LIMIT = 5 # create recognizer and mic instances recognizer = sr.Recognizer( ) microphone = sr.Microphone( ) # get a random word from the list word = random.choice(WORDS) # format the instructions string instructions = ( " I'm thinking of one of these words :\ n" "{ words }\ n" " You have{ n }tries to guess which one .\ n" ).format(words=', '.join(WORDS), n=NUM_GUESSES) # show instructions and wait 3 seconds before starting the game print(instructions) time.sleep(3) for i in range(NUM_GUESSES) : # get the guess from the user # if a transcription is returned, break out of the loop and # continue # if no transcription returned and API request failed, break # loop and continue # if API request succeeded but no transcription was returned , # re-prompt the user to say their guess again. Do this up # to PROMPT_LIMIT times for j in range(PROMPT_LIMIT) : print(' Guess{ }. Speak ! '.format(i+1) ) guess = recognize_speech_from_mic(recognizer, microphone) if guess[" transcription "] : break if not guess[" success "] : break print(" I didn't catch that. What did you say ?\ n") # if there was an error, stop the game if guess[" error "] : print(" ERROR :{ }".format(guess[" error "] ) ) break # show the user the transcription print(" You said :{ }".format(guess[" transcription "] ) ) # determine if guess is correct and if any attempts remain guess_is_correct = guess[" transcription "].lower( ) = = word.lower( ) user_has_more_attempts = i < NUM_GUESSES - 1 # determine if the user has won the game # if not, repeat the loop if user has more attempts # if no attempts left, the user loses the game if guess_is_correct: print(" Correct ! You win ! ".format(word) ) break elif user_has_more_attempts: print(" Incorrect. Try again .\ n") else: print(" Sorry, you lose !\ nI was thinking of '{ }'. ".format(word) ) breakHãy phá vỡ điều đó một chút ít .
Các
recognize_speech_from_mic()
chức năng phải mất mộtRecognizer
vàMicrophone
ví 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"success"
, là một boolean cho biết yêu cầu API có thành công hay không. Khóa thứ hai"error"
, làNone
hoặ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,"transcription"
phí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ố
recognizer
vàmicrophone
đối số có phải là loại chính xác hay không và tăng mộtTypeError
nếu một trong hai không hợp lệ:if not isinstance(recognizer, sr.Recognizer) : raise TypeError(' ` recognizer ` must be ` Recognizer ` instance ') if not isinstance(microphone, sr.Microphone) : raise TypeError(' ` microphone ` must be a ` Microphone ` instance ')
Sau đó,
listen()
phương pháp được sử dụng để ghi lại đầu vào micrô:with microphone as source: recognizer.adjust_for_ambient_noise(source) audio = recognizer.listen(source)
Các
adjust_for_ambient_noise()
phươ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 khirecognize_speech_from_mic()
hàm được gọi.Tiếp theo,
recognize_google()
được gọi để phiên âm bất kỳ bài phát biểu nào trong bản ghi âm. Mộttry...except
khối được sử dụng để bắtRequestError
vàUnknownValueError
ngoạ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ữ trongsuccess
,error
vàtranscription
phím củaresponse
từ điển, mà sẽ được trả về bởi cácrecognize_speech_from_mic()
chức năng.response = { " success ": True, " error ": None, " transcription ": None } try: response[" transcription "] = recognizer.recognize_google(audio) except sr.RequestError: # API was unreachable or unresponsive response[" success "] = False response[" error "] = " API unavailable " except sr.UnknownValueError: # speech was unintelligible response[" error "] = " Unable to recognize speech " return response
Bạn có thể kiểm tra
recognize_speech_from_mic()
chứ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:>> >
>> >import speech_recognition as sr >> >from guessing_game import recognize_speech_from_mic >> >r = sr.Recognizer( ) >> >m = sr.Microphone( ) >> >recognize_speech_from_mic(r, m) { ' success ' : True, ' error ' : None, ' transcription ' : ' hello ' } >> ># Your output will vary depending on what you say
Bản thân game show khá đơn thuần. Đầu tiên, một list những từ, số lượng đoán được phép tối đa và số lượng giới hạn nhanh gọn được khai báo :
WORDS = [' apple ', ' banana ', ' grape ', ' orange ', ' mango ', ' lemon '] NUM_GUESSES = 3 PROMPT_LIMIT = 5
Tiếp theo, một
Recognizer
vàMicrophone
thể hiện được tạo và một từ ngẫu nhiên được chọn từWORDS
:recognizer = sr.Recognizer( ) microphone = sr.Microphone( ) word = random.choice(WORDS)
Sau khi in một số hướng dẫn và đợi trong 3 ba giây, một
for
vò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 trongfor
vòng lặp là mộtfor
vòng lặp khác nhắc người dùngPROMPT_LIMIT
đoán nhiều lần nhất , cố gắng nhận dạng đầu vào mỗi lần bằngrecognize_speech_from_mic()
hàm và lưu trữ từ điển trả về biến cục bộguess
.Nếu
"transcription"
khóa củaguess
không phảiNone
, 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ằngbreak
. Nếu bài phát biểu không được phiên âm và"success"
khóa được đặt thànhFalse
, thì lỗi API đã xảy ra và vòng lặp lại bị kết thúc vớibreak
. 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àfor
vò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.for j in range(PROMPT_LIMIT) : print(' Guess{ }. Speak ! '.format(i+1) ) guess = recognize_speech_from_mic(recognizer, microphone) if guess[" transcription "] : break if not guess[" success "] : break print(" I didn't catch that. What did you say ?\ n")
Khi
for
vòng lặp bên trong kết thúc,guess
từ đ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àfor
vòng lặp bên ngoài được kết thúcbreak
, điều này sẽ kết thúc quá trình thực thi chương trình.if guess[' error '] : print(" ERROR :{ }".format(guess[" error "] ) ) break
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
lower()
phươ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,
for
vò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.guess_is_correct = guess[" transcription "].lower( ) = = word.lower( ) user_has_more_attempts = i < NUM_GUESSES - 1 if guess_is_correct: print(' Correct ! You win ! '.format(word) ) break elif user_has_more_attempts: print(' Incorrect. Try again .\ n') else: print(" Sorry, you lose !\ nI was thinking of '{ }'. ".format(word) ) break
Khi chạy, đầu ra sẽ giống như sau :
I'm thinking of one of these words : apple, banana, grape, orange, mango, lemon You have 3 tries to guess which one . Guess 1. Speak ! You said : banana Incorrect. Try again . Guess 2. Speak ! You said : lemon Incorrect. Try again . Guess 3. Speak ! You said : Orange Correct ! You win !
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
Recognizer
lớ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ụngrecord()
—và đầu vào micrô —listen().
bằng cách sử dụng các đối số từ khoáoffset
vàduration
củarecord()
phươ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
Recognizer
độ nhạy của một phiên bản đối với tiếng ồn xung quanh.adjust_for_ambient_noise().
Bạn cũng đã biết những ngoại lệ nào mà mộtRecognizer
phiên bản có thể gây ra—RequestError
đối với các yêu cầu API không hợp lệ vàUnkownValueError
đối với giọng nói khó hiểu — và cách để xử lý những điều này vớitry...except
các khối.Nhận dạng giọng nói là một chủ đề thâm thúy và những gì bạn đã học ở đây phần nhiều không làm nổi mặt phẳng. Nếu bạn muốn khám phá thêm, đây là một số ít tài nguyên bổ trợ .Phần thưởng không lấy phí : Nhấp vào đây để tải xuống dự án Bất Động Sản mẫu nhận dạng giọng nói Python với mã nguồn không thiếu mà bạn hoàn toàn có thể sử dụng làm cơ sở cho những ứng dụng nhận dạng giọng nói của riêng mình .Để biết thêm thông tin về gói SpeechRecognition :Một số tài nguyên Internet mê hoặc :
- 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
recognize_*()
phươ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
language
đối số từ khóa củarecognize_*()
phươ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ư'en-US'
tiếng Anh Mỹ hoặc'fr-FR'
tiế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:import speech_recognition as sr r = sr.Recognizer( ) with sr.AudioFile(' path / to / audiofile.wav ') as source: audio = r.record(source) r.recognize_google(audio, language=
'fr-FR'
)Chỉ các phương thức sau chấp nhận
language
đối số từ khóa:
recognize_bing()
recognize_google()
recognize_google_cloud()
recognize_ibm()
recognize_sphinx()
Để 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 recognize_google()
có 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 .
Source: https://thomaygiat.com
Category : Nghe Nhìn
Cách SỬA LỖI CAMERA YOOSEE đơn giản NHẤT [2023]
Mục ChínhVideo cách sửa lỗi camera yoosee không liên kết được wifiCamera Yoosee Không Xoay ĐượcCamera Yoosee bị Sai Giờ Lỗi camera Yoosee báo mạng…
Camera IP Quan Sát Không Dây YooSee 4 Râu C12
Camera IP Quan Sát Không Dây YooSee 4 Râu C12 Camera IP Yosee hạng sang chính hãng model C12 với chất lượng hình ảnh cao…
Camera Wifi Không dây Yoosee HD 3 Râu 1080p – Yoosee Việt Nam
Khả năng xoay linh hoạt dễ dàng quan sát Camera giám sát với khả năng xoay ngang 355°, xoay dọc 120° giúp người dùng dễ dàng…
Cáp Đồng Trục Liền Nguồn Việt Hàn RG59-Cu 1.0 – Chính Hãng
Cáp đồng trục liền nguồn Việt Hàn RG59-Cu 1.0 – cáp lõi đồng nguyên chất, chất lượng cao, giá tốt chính hãng Cáp đồng trục…
Lắp Đặt Camera Lùi Cho Xe Tải – Bảo Việt Technology
Bạn đang đọc: Lắp Đặt Camera Lùi Cho Xe Tải – Bảo Việt Technology 4.4 / 5 – ( 23 bầu chọn ) Doanh nghiệp…
Camera Logo Design PNG Picture, Camera Logo Design Free Logo Design Template, Logo, Flat, Shot PNG Image For Free Download
Successfully saved Free tải về HD contents without watermark please go to pngtree.com via PCOK Bạn đang đọc: Camera Logo Design PNG Picture, Camera Logo…