語音辨識輸入的技術STT(Speak To Text)¶
STT技術就是讓聲音轉化成文字,當我用聲音說:生日快樂,電腦會把我的聲音送到google(本例使用google),google分析完之後把可能的文字(生日快樂)傳送回來,由於中文同音字很多,所以太簡略的聲音句子分析都不會太好,建議說話的句子要多一點的上下脈絡,在分析上比較準確。有了這個技術就能讓我們用聲音來跟機器人互動了。
環境設定
1.首先你要讓電腦可以進行錄音,所以最好擁有一個外接指向型麥克風,用內建的麥克風容易有干擾。當然如果你處在一個安靜的環境之下,內建的麥克風確實有夠用了。
2.再來是匯入讓python可以進行語音錄音分析的程式庫 speech_recognition 記得先到小黑窗執行pip install speechrecognition
3.最後確認是否有安裝pyaudio 若沒有安裝 請利用小黑窗執行 conda install pyaudio
程式碼部分
#匯入程式庫
import speech_recognition
#初始化一個語音辨識器
r = speech_recognition.Recognizer()
#利用麥克風錄音 並將聲音存給 audio
with speech_recognition.Microphone() as source:
audio = r.listen(source)
#將audio送到google分析,回傳文字
r.recognize_google(audio,language='zh-tw')
當你執行上述程式時,你的麥克風就會啟動並等待你的聲音,當你說玩句子後,保持安靜,就會自動停止錄音,並將聲音檔送出等待回傳結果,這個階段一定要記住,錄音時若是環境音太多,系統就不會停止錄音,就會一直卡很久。想要順利測試時,挑選一個較安靜的地方試試。


簡化指令
現在自訂一個指令,方便我們執行,不用每次都打這麼多行。
#匯入程式庫
import speech_recognition
#自訂一個方便使用的指令getvoice()
def getvoice():
#初始化一個語音辨識器
r = speech_recognition.Recognizer()
#利用麥克風錄音 並將聲音存給 audio
with speech_recognition.Microphone() as source:
audio = r.listen(source)
#將audio送到google分析,回傳文字給變數 a 分析的語音可以調整 en 英文 ja 日文 es西班牙文...等
a = r.recognize_google(audio,language='zh-tw')
#將a丟出去,a就是分析完後的文字
return a
當你這樣寫之後,以後只要執行getvoice(),就會啟動麥克風並錄下你的語音,並送回分析後的文字。

現在你的機器人會聽你說話了,會聽你說話之後就要開始教導它,聽到什麼話就要去做什麼事,準備到下一個篇文章
如何教導機器人聽懂你的話,機器人的回應─簡單的語意分析。