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

Nhận dạng giọng nói bằng Python bằng API giọng nói của Google

Nhận dạng giọng nói là một trong những tính năng hữu ích nhất trong một số ứng dụng như tự động hóa gia đình, AI, v.v. Trong phần này, chúng ta sẽ xem cách nhận dạng giọng nói có thể được thực hiện bằng Python và API giọng nói của Google.

Trong trường hợp này, chúng tôi sẽ cung cấp âm thanh sử dụng micrô để nhận dạng giọng nói. Để định cấu hình micrô, có một số thông số.

Để sử dụng mô-đun này, chúng ta phải cài đặt mô-đun SpeechRecognition. Có một mô-đun khác được gọi là pyaudio, là tùy chọn. Sử dụng tính năng này, chúng tôi có thể đặt các chế độ âm thanh khác nhau.

sudo pip3 install SpeechRecognition
sudo apt-get install python3-pyaudio

Đối với Micrô bên ngoài hoặc micrô USB, chúng tôi cần cung cấp micrô chính xác để tránh mọi khó khăn. Trên Linux, nếu chúng ta nhập ‘lsusb’ để hiển thị thông tin liên quan cho thiết bị USB.

Tham số thứ hai là Kích thước Chunk. Sử dụng điều này, chúng tôi có thể chỉ định lượng dữ liệu chúng tôi muốn đọc cùng một lúc. Nó sẽ là một số là lũy thừa của 2, như 1024 hoặc 2048, v.v.

Chúng tôi cũng phải chỉ định tốc độ lấy mẫu để xác định tần suất dữ liệu được ghi lại để xử lý.

Vì có thể có một số tiếng ồn không thể tránh khỏi trong môi trường xung quanh, nên chúng tôi phải điều chỉnh Tiếng ồn xung quanh để có được giọng nói chính xác.

Các bước nhận dạng bài phát biểu

  • Lấy thông tin liên quan đến micrô khác nhau.

  • Định cấu hình micrô bằng cách sử dụng kích thước đoạn, tốc độ lấy mẫu, điều chỉnh tiếng ồn xung quanh, v.v.

  • Chờ một thời gian để nhận được giọng nói

    • Khi giọng nói được nhận dạng, hãy cố gắng chuyển nó thành văn bản, nếu không sẽ phát sinh một số lỗi.

  • Dừng quá trình.

Mã mẫu

import speech_recognition as spreg
#Setup the sampling rate and the data size
sample_rate = 48000
data_size = 8192
recog = spreg.Recognizer()
with spreg.Microphone(sample_rate = sample_rate, chunk_size = data_size) as source:
recog.adjust_for_ambient_noise(source)
print('Tell Something: ')
   speech = recog.listen(source)
try:
   text = recog.recognize_google(speech)
   print('You have said: ' + text)
except spreg.UnknownValueError:
   print('Unable to recognize the audio')
except spreg.RequestError as e: 
   print("Request error from Google Speech Recognition service; {}".format(e))

Đầu ra

$ python3 318.speech_recognition.py
Tell Something: 
You have said: here we are considering the asymptotic notation Pico to calculate the upper bound 
of the time complexity so then the definition of the big O notation is like this one
$

Nếu không sử dụng micrô, chúng tôi cũng có thể lấy một số tệp âm thanh làm đầu vào để chuyển đổi tệp đó thành bài phát biểu.

Mã mẫu

import speech_recognition as spreg
sound_file = 'sample_audio.wav'
recog = spreg.Recognizer()
with spreg.AudioFile(sound_file) as source:
   speech = recog.record(source) #use record instead of listning
   try:
      text = recog.recognize_google(speech)
      print('The file contains: ' + text)
   except spreg.UnknownValueError:
      print('Unable to recognize the audio')
   except spreg.RequestError as e: 
      print("Request error from Google Speech Recognition service; {}".format(e))

Đầu ra

$ python3 318a.speech_recognition_file.py 
The file contains: staying ahead of the curve demand planning new technology it also helps you progress in your career
$