Computer >> Máy Tính >  >> Lập trình >> Python

Xử lý âm thanh bằng Pydub và API nhận dạng giọng nói của Google bằng Python

Trong hướng dẫn này, chúng ta sẽ làm việc với các tệp âm thanh. Chúng tôi sẽ chia âm thanh thành nhiều phần để nhận ra nội dung trong đó. Chúng tôi cũng sẽ lưu trữ nội dung của các tệp âm thanh trong tệp văn bản. Cài đặt các mô-đun sau bằng các lệnh dưới đây.

 pip cài đặt pydub 

Nếu bạn chạy lệnh trên, bạn sẽ nhận được thông báo thành công sau đây

 Đang thu thập pydubDownloading https://files.pythonhosted.org/packages/79/db/eaf620b73a1eec3c8c6f8f5b0b236a50f9da88ad57802154b7ba7664d0b8/pydub-0.23.1-py2.py2.py3-none-any.whl=vi đã cài đặt thành công các gói 0. pyInstallingSull23.1. trước> 
 pip cài đặt audioread 

Nếu bạn chạy lệnh trên, bạn sẽ nhận được thông báo thành công sau.

 Thu thập audioreadTải xuống https://files.pythonhosted.org/packages/2e/0b/940ea7861e0e9049f09dcfd72a90c9ae55f697c17c299a323f0148f913d2/audioread-2.1.8.tar.gzBuilding bánh xe cho các gói bánh xe thu thập:audiiladding audioread (setup.py):hoàn thành với trạng thái 'done' Bánh xe được tạo cho audioread:filename =audioread-2.1.8-cp37-none-any.whl size =23098 sha256 =92b6f46d6b4726e7a13233dc9d84744ba74e23187123e67f663650f24390dc9 \ Local \ pip \ Cache \ wheel \ b9 \ 64 \ 09 \ 0b6417df9d8ba8bc61a7d2553c5cebd714ec169644c88fc012 Đã xây dựng thành công audioread Cài đặt các gói đã thu thập:audioread Đã cài đặt thành công audioread-2.1.8 
 pip cài đặt SpeechRecognition 

Nếu bạn chạy lệnh trên, bạn sẽ nhận được thông báo thành công sau.

 Thu thập SpeechRecognitionDownloading https://files.pythonhosted.org/packages/26/e1/7f5678cd94ec1234269d23756dbdaa4c8cfaed973412f88ae8adf7893a50/SpeechRecognition-3.8.1-py2.py3-noneech đã thu thập các gói Speech.wognition 3.8.1 

Chúng tôi có hai bước trong quy trình.

  • Chia âm thanh thành nhiều phần.

  • Chúng tôi phải trích xuất nội dung bằng SpeechRecognition .

Lấy một tệp âm thanh từ thư viện của bạn. Hãy bắt đầu mã.

Ví dụ

 # import moduleimport pydubimport speech_recognition # lấy audio fileaudio =pydub.AudioSegment.from_wav ('audio.wav') # độ dài của âm thanh tính bằng mili giây. ) # chunk counterchunk_counter =1audio_text =open ('audio_text.txt', 'w +') # thiết lập vị trí cắt đoạn audiopoint =60000 # trùng lặp - âm thanh còn lại sau khi Slicerem =8000 # biến khởi tạo để theo dõi các đoạn và endflag =0start =0end =0 # lặp qua âm thanh với sự gia tăng của remfor i trong phạm vi (0, 2 * audio_length, point):# trong lần lặp đầu tiên end =rem if i ==0:start =0 end =point else:# lần lặp khác start =end - rem end =start + point # nếu end lớn hơn audio_length nếu end> ​​=audio_length:end =audio_length # để biểu thị cờ dừng =1 # nhận một đoạn từ đoạn âm thanh =audio [start:end] # chunk name chunk_name =f'chunk_ {chunk_counter} '# lưu trữ c hunk vào bộ nhớ cục bộ chunk.export (chunk_name, format ='wav') # in chunk print (f '{chunk_name} start:{start} end:{end}') # tăng dần bộ đếm chunk chunk_counter + =1 # nhận dạng văn bản từ âm thanh # khởi tạo trình nhận dạng =speech_recognition.Recognizer () # tạo âm thanh đã nghe với speech_recognition.AudioFile (chunk_name) as chunk_audio:chunk_listened =Recogzer.listen (chunk_audio) # nhận dạng nội dung từ âm thanh thử:# lấy nội dung từ chunk content =Recogzer.recognize_google (chunk_listened) # ghi vào tệp audio_text.write (content + '\ n') # nếu không được nhận dạng ngoại trừ speech_recognition.UnknownValueError:print ('Âm thanh không được nhận dạng') # lỗi internet ngoại trừ speech_recognition.RequestError như Lỗi:print ('Không thể kết nối với internet') # kiểm tra cờ nếu cờ ==1:audio_text.close () break 

Đầu ra

Nếu bạn chạy đoạn mã trên, bạn sẽ nhận được kết quả sau.

 Độ dài âm thanh:480052chunk_1 đầu:0 end:60000chunk_2 start:52000 end:112000chunk_3 start:104000 end:164000chunk_4 start:156000 end:216000chunk_5 start:208000 end:268000chunk_6 start:260000 end:320000chunk_7 start:312000 end:372000chunk_7 start:312000 end:372000chunk :364000 kết thúc:424000chunk_9 start:416000 end:476000chunk_10 start:468000 end:480052 

Kiểm tra nội dung tệp.

 # mở tệp trong modew with open ('audio_text.txt', 'r') dưới dạng tệp:print (file.read ()) 

Nếu bạn chạy đoạn mã trên, bạn sẽ nhận được kết quả sau.

 English and I am here in San Francisco Tôi trở lại San Francisco vào tuần trước, chúng tôi đã ở Texas tại một quốc gia giảng dạy và The Reader của hội nghị giảng dạy là một máy bay Reimprove việc giảng dạy vì bạn đang ở trong tập tin sao lưu với lỗi nó có một số sẽ đến sớm một ngày thôi 

Kết luận

Nếu bạn có bất kỳ nghi ngờ nào về hướng dẫn này, hãy đề cập đến chúng trong phần bình luận.