Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การรู้จำเสียงใน Python โดยใช้ Google Speech API


การรู้จำเสียงเป็นหนึ่งในคุณสมบัติที่มีประโยชน์มากที่สุดในแอพพลิเคชั่นต่างๆ เช่น ระบบอัตโนมัติในบ้าน, AI เป็นต้น ในส่วนนี้ เราจะมาดูกันว่าการรู้จำคำพูดสามารถทำได้โดยใช้ Python และ Speech API ของ Google อย่างไร

ในกรณีนี้ เราจะให้เสียงโดยใช้ไมโครโฟนสำหรับการรู้จำเสียงพูด ในการกำหนดค่าไมโครโฟน มีพารามิเตอร์บางอย่าง

ในการใช้โมดูลนี้ เราต้องติดตั้งโมดูล SpeechRecognition มีโมดูลอื่นที่เรียกว่า pyaudio ซึ่งเป็นทางเลือก เมื่อใช้สิ่งนี้ เราสามารถตั้งค่าโหมดเสียงต่างๆ ได้

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

สำหรับไมโครโฟนภายนอกหรือไมโครโฟน USB เราจำเป็นต้องจัดเตรียมไมโครโฟนที่ถูกต้องเพื่อหลีกเลี่ยงปัญหาใดๆ บน Linux หากเราพิมพ์ 'lsusb' เพื่อแสดงข้อมูลที่เกี่ยวข้องสำหรับอุปกรณ์ USB

พารามิเตอร์ที่สองคือขนาดก้อน เมื่อใช้สิ่งนี้ เราสามารถระบุจำนวนข้อมูลที่เราต้องการอ่านพร้อมกันได้ มันจะเป็นตัวเลขที่ยกกำลัง 2 เช่น 1024 หรือ 2048 เป็นต้น

นอกจากนี้เรายังต้องระบุอัตราการสุ่มตัวอย่างเพื่อกำหนดความถี่ในการบันทึกข้อมูลสำหรับการประมวลผล

เนื่องจากอาจมีเสียงรบกวนรอบข้างที่หลีกเลี่ยงไม่ได้ เราจึงต้องปรับเสียงรบกวนรอบข้างเพื่อให้ได้เสียงที่แน่นอน

ขั้นตอนในการจำคำพูด

  • ใช้ข้อมูลที่เกี่ยวข้องกับไมโครโฟนที่แตกต่างกัน

  • กำหนดค่าไมโครโฟนโดยใช้ขนาดก้อน อัตราการสุ่มตัวอย่าง การปรับเสียงรบกวนรอบข้าง ฯลฯ

  • รอสักครู่จึงจะได้เสียง

    • เมื่อระบบจำเสียงได้แล้ว ให้ลองแปลงเป็นข้อความ มิฉะนั้น จะทำให้เกิดข้อผิดพลาด

  • หยุดกระบวนการ

โค้ดตัวอย่าง

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))

ผลลัพธ์

$ 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
$

โดยไม่ต้องใช้ไมโครโฟน เรายังสามารถนำไฟล์เสียงบางส่วนเป็นอินพุตเพื่อแปลงเป็นคำพูดได้

โค้ดตัวอย่าง

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))

ผลลัพธ์

$ 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
$