標籤:取消 ddb 例子 提高 語言 學生 develop 單詞 預設
▌語言識別工作原理概述
語音辨識源於 20 世紀 50 年代早期在貝爾實驗室所做的研究。早期語音辨識系統僅能識別單個講話者以及只有約十幾個單詞的詞彙量。現代語音辨識系統已經取得了很大進步,可以識別多個講話者,並且擁有識別多種語言的龐大詞彙表。
▌選擇 Python 語音辨識包
PyPI中有一些現成的語音辨識軟體包。其中包括:
apiai
google-cloud-speech
pocketsphinx
SpeechRcognition
watson-developer-cloud
wit
$ pip install SpeechRecognition
安裝完成後請開啟解譯器視窗並輸入以下內容來驗證安裝:
以上七個中只有 recognition_sphinx()可與CMU Sphinx 引擎離線工作, 其他六個都需要串連互連網。
SpeechRecognition 附帶 Google Web Speech API 的預設 API 金鑰,可直接使用它。其他六個 API 都需要使用 API 金鑰或使用者名稱/密碼組合進行身分識別驗證,因此本文使用了 Web Speech API。
▌音頻檔案的使用
首先需要下載音頻檔案連結 Python 解譯器會話所在的目錄中。
AudioFile 類可以通過音頻檔案的路徑進行初始化,並提供用於讀取和處理檔案內容的上下文管理器介面。
通過上下文管理器開啟檔案並讀取檔案內容,並將資料存放區在 AudioFile 執行個體中,然後通過 record()將整個檔案中的資料記錄到 AudioData 執行個體中,可通過檢查音訊類型來確認:
在with塊中調用record() 命令時,檔案流會向前移動。這意味著若先錄製四秒鐘,再錄製四秒鐘,則第一個四秒後將返回第二個四秒鐘的音頻。
本程式從第 4.7 秒開始記錄,從而使得片語 “it takes heat to bring out the odor” ,中的 “it t” 沒有被記錄下來,此時 API 只得到 “akes heat” 這個輸入,而與之匹配的是 “Mesquite” 這個結果。
同樣的,在擷取錄音結尾片語 “a cold dip restores health and zest” 時 API 僅僅捕獲了 “a co” ,從而被錯誤匹配為 “Aiko” 。
那麼該如何處理這個問題呢?可以嘗試調用 Recognizer 類的adjust_for_ambient_noise()命令。
現在我們就得到了這句話的 “the”,但現在出現了一些新的問題——有時因為訊號太吵,無法消除噪音的影響。
若經常遇到這些問題,則需要對音頻進行一些預先處理。可以通過音頻編輯軟體,或將濾鏡應用於檔案的 Python 包(例如SciPy)中來進行該預先處理。處理嘈雜的檔案時,可以通過查看實際的 API 響應來提高準確性。大多數 API 返回一個包含多個可能轉錄的 JSON 字串,但若不強制要求給出完整響應時,recognition_google()方法始終僅返回最可能的轉錄字元。
▌麥克風的使用
若要使用 SpeechRecognizer 訪問麥克風則必須安裝 PyAudio 軟體包,請關閉當前的解譯器視窗,進行以下操作:
安裝 PyAudio
安裝 PyAudio 的過程會因作業系統而異。
安裝測試
安裝了 PyAudio 後可從控制台進行安裝測試。
$ python -m speech_recognition
請確保預設麥克風開啟並取消靜音,若安裝正常則應該看到如下所示的內容:
A moment of silence, please...
Set minimum energy threshold to 600.4452854381937
Say something!
請對著麥克風講話並觀察 SpeechRecognition 如何轉錄你的講話。
Microphone 類
請開啟另一個解譯器會話,並建立識一個別器類的例子。
>>> import speech_recognition as sr
>>> r = sr.Recognizer()
此時將使用預設系統麥克風,而不是使用音頻檔案作為訊號源。讀者可通過建立一個Microphone 類的執行個體來訪問它。
>>> mic = sr.Microphone()
要處理環境雜訊,可調用 Recognizer 類的 adjust_for_ambient_noise()函數,其操作與處理噪音音頻檔案時一樣。由於麥克風輸入聲音的可預測性不如音頻檔案,因此任何時間聽麥克風輸入時都可以使用此過程進行處理。
我有一個公眾號,經常會分享一些python技術相關的乾貨;如果你喜歡我的分享,可以用搜尋“python語言學習”關注
歡迎大家加入千人交流答疑裙:699+749+852
Python終級教程!語音辨識!大四學生實現語音辨識技能!吊的不行