處理不同類型的音訊

Python 的口語語言處理

Daniel Bourke

Machine Learning Engineer/YouTube Creator

是什麼語言?

# 建立辨識器類別
recognizer = sr.Recognizer()

# 將日文音訊傳給 recognize_google text = recognizer.recognize_google(japanese_good_morning, language="en-US")
# 印出文字 print(text)
Ohio gozaimasu
Python 的口語語言處理

是什麼語言?

# 建立辨識器類別
recognizer = sr.Recognizer()

# 將日文音訊傳給 recognize_google text = recognizer.recognize_google(japanese_good_morning, language="ja")
# 印出文字 print(text)
おはようございます
Python 的口語語言處理

非語音音訊

# 匯入豹吼音訊檔
leopard_roar = sr.AudioFile("leopard_roar.wav")

# 將 AudioFile 轉為 AudioData with leopard_roar as source: leopard_roar_audio = recognizer.record(source)
# 語音辨識 AudioData recognizer.recognize_google(leopard_roar_audio)
UnknownValueError:
Python 的口語語言處理

非語音音訊

# 匯入豹吼音訊檔
leopard_roar = sr.AudioFile("leopard_roar.wav")

# 將 AudioFile 轉為 AudioData with leopard_roar as source: leopard_roar_audio = recognizer.record(source)
# 開啟 show_all 來進行語音辨識 recognizer.recognize_google(leopard_roar_audio, show_all=True)
[]
Python 的口語語言處理

顯示全部

# 使用 show_all=True 辨識日文音訊
text = recognizer.recognize_google(japanese_good_morning, 
                                   language="en-US",
                                   show_all=True)
# 印出文字
print(text)
{'alternative': [{'transcript': 'Ohio gozaimasu', 'confidence': 0.89041114},
  {'transcript': 'all hail gozaimasu'},
  {'transcript': 'ohayo gozaimasu'},
  {'transcript': 'olho gozaimasu'},
  {'transcript': 'all Hale gozaimasu'}],
 'final': True}
Python 的口語語言處理

多位說話者

# 匯入含多位說話者的音訊檔
multiple_speakers = sr.AudioFile("multiple-speakers.wav")

# 將 AudioFile 轉為 AudioData with multiple_speakers as source: multiple_speakers_audio = recognizer.record(source)
# 語音辨識 AudioData recognizer.recognize_google(multiple_speakers_audio)
one of the limitations of the speech recognition library is that it doesn't
recognise different speakers and voices it will just return it all as one block 
of text
Python 的口語語言處理

多位說話者

# 分別匯入各說話者的音訊檔
speakers = [sr.AudioFile("s0.wav"), sr.AudioFile("s1.wav"), sr.AudioFile("s2.wav")]

# 各自轉錄每位說話者 for i, speaker in enumerate(speakers): with speaker as source: speaker_audio = recognizer.record(source) print(f"Text from speaker {i}: {recognizer.recognize_google(speaker_audio)}")
Text from speaker 0: one of the limitations of the speech recognition library
Text from speaker 1: is that it doesn't recognise different speakers and voices
Text from speaker 2: it will just return it all as one block a text
Python 的口語語言處理

含雜訊音訊

  • 如果連你都聽不清楚,API 也會聽不清楚。
# 匯入含背景雜訊的音訊檔
noisy_support_call = sr.AudioFile(noisy_support_call.wav)

with noisy_support_call as source: # 先校正環境雜訊再錄製 recognizer.adjust_for_ambient_noise(source, duration=0.5) noisy_support_call_audio = recognizer.record(source)
# 語音辨識音訊 recognizer.recognize_google(noisy_support_call_audio)
hello ID like to get some help setting up my calories
Python 的口語語言處理

一起來練習吧!

Python 的口語語言處理

Preparing Video For Download...