以前咱們總結了使用谷歌Cloud Speech API將語音轉換爲文字的基本流程,然而那只是在命令行中使用curl實現的。此次咱們將總結在Python中使用Cloud Speech API的方法。python
筆者使用的是樹莓派(Debian)進行試驗的,其餘平臺的配置方法能夠在這裏查找。shell
大多數Linux發行版都包含Python。對於Debian和Ubuntu,運行如下指令確保Python版本是最新的:json
sudo apt update sudo apt install python python-dev python3 python3-dev python-pip python3-pip
儘管這一步不是必須的,但強烈建議你使用virtualenv。virtualenv是一種建立獨立Python環境的工具,能夠將每一個項目的依賴關係隔離開來。在虛擬環境下,你能夠沒必要顧慮python2和python3的衝突;另一個優點是能夠直接將你的項目文件夾複製到其餘機器上,文件夾內就包含了項目所依賴的軟件包。segmentfault
sudo apt install python-virtualenv
安裝完成後,就能夠在你的項目文件夾中建立一個虛擬環境。api
cd 項目文件夾 virtualenv --python python3 env
使用 --python
標誌來告訴virtualenv要使用哪一個Python版本,此次試驗將全程以python3環境進行。執行後會在 項目文件夾
內建立一個 env
文件夾。bash
建立完成後,你須要「激活」virtualenv。激活virtualenv會告訴你的shell爲Python使用virtualenv的路徑。curl
source env/bin/activate
看到激活虛擬環境後,你就能夠放心地安裝軟件包,並確信它們不會影響其餘項目。ide
若是你想中止使用virtualenv並返回到全局Python環境,你能夠關閉它:工具
deactivate
咱們假定你已經有合適的代理,可以使用谷歌服務,而且已經開始使用Google雲平臺。若是你有疑問,或許能夠參考這篇文章。google
若是你安裝了virtualenv,請確保激活了虛擬環境。
pip install --upgrade google-cloud-speech
值得一提的是,筆者使用的樹莓派在安裝進行到 Running setup.py bdist_wheel for grpcio ...
時停留了很是久(10分鐘以上),這屬於正常現象,樹莓派編譯進行得很慢,須要耐心等待。
從 服務賬戶
下拉列表中選擇 新建服務賬戶
。輸入合適的 服務賬號名稱
, 角色
選擇 Project
→ 全部者
。 密鑰類型
選擇 JSON
。
點擊 建立
後,會開始下載包含密鑰的JSON文件,請妥善保存 。
最後,將環境變量 GOOGLE_APPLICATION_CREDENTIALS
設置爲含密鑰的JSON文件的文件路徑,例如:
export GOOGLE_APPLICATION_CREDENTIALS="/home/pi/speech/speech-account.json"
請將 /home/pi/speech/speech-account.json
替換爲你的json文件路徑。
固然,直接輸入上述命令設置的環境變量是臨時的。一個比較實用的方法是在 ~/.bashrc
文件中設置環境,以後就不須要再手動設置了。
sudo nano ~/.bashrc
在文件末尾插入上述 export
命令,保存。
下例給出了使用客戶端庫的方法。
import io import os # Imports the Google Cloud client library from google.cloud import speech from google.cloud.speech import enums from google.cloud.speech import types # Instantiates a client client = speech.SpeechClient() # The name of the audio file to transcribe file_name = os.path.join( os.path.dirname(__file__), 'voice.wav') # Loads the audio into memory with io.open(file_name, 'rb') as audio_file: content = audio_file.read() audio = types.RecognitionAudio(content=content) config = types.RecognitionConfig( encoding=enums.RecognitionConfig.AudioEncoding.LINEAR16, sample_rate_hertz=16000, language_code='cmn-Hans-CN') # Detects speech in the audio file response = client.recognize(config, audio) for result in response.results: print('Transcript: {}'.format(result.alternatives[0].transcript)) print('Confidence: {}'.format(result.alternatives[0].confidence))
幾點說明:
file_name
給出了聲音文件的路徑。其中 os.path.dirname(__file__)
表示py代碼所在文件夾的路徑。故上例中聲音文件是py代碼相同目錄下的 voice.wav
。
config
給出了聲音文件的編碼信息,Cloud Speech API並不支持任意格式的聲音文件,詳細要求參見:AudioEncoding | Google Cloud Speech API 。
language_code='cmn-Hans-CN'
表示識別語言爲中文普通話。經常使用的還有American English (en-US
)、British English (en-GB
)、日本語(ja-JP
)、廣東話(yue-Hant-HK
)。更多語言支持能夠在Language Support | Google Cloud Speech API查詢。
運行結果:
"Confidence"是置信度,越接近1準確性越高。
至此,Cloud Speech API的使用總結就告一段落了,但願能對你有所幫助。這篇總結是參照着Google Cloud Speech API文檔寫下的,若是有何紕漏懇請指出。
感謝你閱讀文章!