引述周杰倫的一首老歌歌名,繼昨天我們用Python來講出來,今天我們要用Python來傾聽。這邊我們要使用 SpeechRecognition這個library,如果還沒安裝就:
pip install SpeechRecognition
文件說明具有以下8種引擎,但實測我只能用Google Speech Recognition,其中雖然CMU Sphinx有說明要額外安裝pocketsphinx,而也有文章推薦因為可以離線使用,但我在安裝時是error。那Google Speech Recognition的缺點就是要連網,另外在這篇文章有說到"有時間限制",但我目前沒找到有明確說明的文件:
CMU Sphinx (works offline)
Google Speech Recognition
Google Cloud Speech API
Wit.ai
Microsoft Bing Voice Recognition
Houndify API
IBM Speech to Text
Snowboy Hotword Detection (works offline)
如果我們已經有聲音檔,我們可以參考這篇範例,但僅支援WAV(must be in PCM/LPCM format)、AIFF、AIFF-C、FLAC(must be native FLAC format; OGG-FLAC is not supported)等格式:
import speech_recognition as sr
r = sr.Recognizer()
WAV = sr.AudioFile('test.wav')
with WAV as source:
audio = r.record(source)
print(r.recognize_google(audio, show_all=True))
但我們還是希望可以直接互動,這樣如果要使用麥克風輸入,要額外安裝pyaudio(有文章提到安裝時會有問題,但我是沒遇到):
pip install pyaudio
安裝完就可以用 speech recognition的麥克風功能(並不需要import pyaudio),另外我們可以指定語系是中文,不然講中文在預設下會產生拼音的結果,我們可以把它包成一個function,我測試它會自動抓我們講完停止的時候就會辨識出結果:
def listener():
r = speech_recognition.Recognizer()
with speech_recognition.Microphone() as source:
audio = r.listen(source)
return r.recognize_google(audio, language = 'zh-tw')
print('請講話')
target_lang = listener()
print(target_lang)
這段程式碼是參考自這篇文章,該文章是教學語音助理的實作,而且裡面提到有些功能的想法很不錯,讓我們明天繼續說下去…