在Python中使用谷歌Cloud Speech API將語音轉換爲文字

以前咱們總結了使用谷歌Cloud Speech API將語音轉換爲文字的基本流程,然而那只是在命令行中使用curl實現的。此次咱們將總結在Python中使用Cloud Speech API的方法。python

配置Python開發環境

筆者使用的是樹莓派(Debian)進行試驗的,其餘平臺的配置方法能夠在這裏查找。shell

安裝Python

大多數Linux發行版都包含Python。對於Debian和Ubuntu,運行如下指令確保Python版本是最新的:json

sudo apt update
sudo apt install python python-dev python3 python3-dev python-pip python3-pip

安裝和使用virtualenv

儘管這一步不是必須的,但強烈建議你使用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

配置Cloud Speech API客戶端庫

咱們假定你已經有合適的代理,可以使用谷歌服務,而且已經開始使用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文檔寫下的,若是有何紕漏懇請指出。

感謝你閱讀文章!

相關文章
相關標籤/搜索