国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

在Python中使用谷歌Cloud Speech API將語音轉換為文字(另一種方案)

ethernet / 1598人閱讀

摘要:如果你有疑問,或許可以參考創建密鑰使用谷歌將語音轉換為文字。將其取出,得到字典。

在之前發布的使用谷歌Cloud Speech API將語音轉換為文字一文中,我們實現了在控制臺使用curl發送post請求,得到語音轉文字的結果;而在Python中使用谷歌Cloud Speech API將語音轉換為文字一文中,我們實現了安裝Cloud Speech API客戶端庫,通過調用庫函數得到語音轉文字的結果。

如果你嘗試過這兩種方法,就會發現其實后者得到結果需要的時間要長一些(筆者使用這兩種方法得到結果的耗時分別大約是5秒、7秒)。那么,有沒有辦法在python中像第一種方法那樣,使用curl命令發送post請求呢。當然是可行的,所以今天我們將介紹在Python中使用Cloud Speech API將語音轉換為文字的另一種方案,另外這次我們將把音頻文件編碼為base64嵌入到json請求文件中,省去了上傳聲音文件到Cloud Storage的步驟。


相關說明之類的在上面兩篇文章里已經寫了很多,這邊就直接貼代碼。
*使用python3

import json
import urllib.request
import base64

# ①
api_url = "https://speech.googleapis.com/v1beta1/speech:syncrecognize?key=你的API密鑰"
audio_file = open("/home/pi/chat/test-speech/output.wav", "rb")
audio_b64 = base64.b64encode(audio_file.read())
audio_b64str = audio_b64.decode()    # ②
# print(type(audio_b64))
# print(type(audio_b64str))
audio_file.close()

# ③
voice = {
  "config":
  {
    #"encoding": "WAV",
    "languageCode": "cmn-Hans-CN"
  },

  "audio":
  {
    "content": audio_b64str
  }
}
# 將字典格式的voice編碼為utf8
voice = json.dumps(voice).encode("utf8")

req = urllib.request.Request(api_url, data=voice, headers={"content-type": "application/json"})
response = urllib.request.urlopen(req)
response_str = response.read().decode("utf8")
# ④
# print(response_str)
response_dic = json.loads(response_str)
transcript = response_dic["results"][0]["alternatives"][0]["transcript"]
confidence = response_dic["results"][0]["alternatives"][0]["confidence"]
print(transcript)
print(confidence)

幾點說明:

注釋:請求API的鏈接,請替換你的API密鑰 。如果你有疑問,或許可以參考 創建API密鑰 | 使用谷歌Cloud Speech API將語音轉換為文字 。
audio_file 路徑替換為你的本地聲音文件路徑。

注釋:這次上傳音頻的方式是,將聲音文件編碼為base64,把對應的整個字符串放進json請求中。如果你執行 print(type(audio_b64)) 就會發現編碼后的audio_b64是 bytes 類型,所以還需要做一次decode(),轉成字符串。

注釋:先以字典格式保存json請求內容,代表聲音文件的字符串就在這里放入。

注釋:API返回的結果保存在 response_str ,如果你直接運行 print(response_str) 就會發現這個字符串可以看做一個有很多“層”的字典,要提取出識別結果,需要搞清楚這個字典到底是怎么組成的:

1層:花括號{}說明字符串 response_str 在執行 json.loads 后變成一個"字典"。得到"字典" response_dic

2層:字典中只有一組鍵-值, response_dic["results"] 取出唯一的鍵"results"對應的值。觀察這個值,發現中括號[],說明這個值的類型是”列表“。

3層:觀察列表 response_dic["results"] ,發現列表中只有一項數據,但這項數據又是"字典"類型。將其取出,得到"字典" response_dic["results"][0]

4層:字典中又是只有一組鍵-值, response_dic["results"][0]["alternatives"] 取出唯一的鍵"alternatives"對應的值。觀察這個值,[]說明我們得到的結果又是一個"列表"。

5層:觀察列表 response_dic["results"][0]["alternatives"] ,列表中只有一項數據, response_dic["results"][0]["alternatives"][0] 再將這唯一一項數據取出,發現得到的是一個"字典",而這次得到的字典中有兩組鍵-值,分別取出就是我們要的結果和置信度了。

transcript = response_dic["results"][0]["alternatives"][0]["transcript"]
confidence = response_dic["results"][0]["alternatives"][0]["confidence"]

小結:

今天介紹的這種方案,獲取結果需要的時間比用API客戶端庫要快一些,另外應用了把本地語音編碼后放入json請求的方式,也能方便后期和錄音程序結合在一起使用。但稍有一點缺點是API密鑰直接暴露在代碼中,對實際應用可能會有一些影響。

下一步的目標是和錄音功能結合起來,實現自動識別當前錄制的語音。

感謝你閱讀文章!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44630.html

相關文章

  • Python使用谷歌Cloud Speech API語音轉換文字

    摘要:之前我們總結了使用谷歌將語音轉換為文字的基本流程,然而那只是在命令行中使用實現的。配置開發環境筆者使用的是樹莓派進行試驗的,其他平臺的配置方法可以在這里查找。設置驗證登錄谷歌云平臺控制臺,前往創建服務賬號密鑰界面。 之前我們總結了使用谷歌Cloud Speech API將語音轉換為文字的基本流程,然而那只是在命令行中使用curl實現的。這次我們將總結在Python中使用Cloud Sp...

    red_bricks 評論0 收藏0
  • 基于云計算上的人工智能服務

    摘要:全球主要的云計算提供商現在提供基于云計算的人工智能產品。顯然,由于從頭開始構建這樣一個系統的費用高昂,人工智能作為一項服務仍然一直位于行業巨頭所在的領域。在用于人工智能服務的品牌下,公司提供不少于項服務。如今,采用人工智能的企業遇到了一個主要障礙,那就是在內部開發人工智能產品成本高昂,因此有了外包人工智能產品的需求。而對于從中小企業到預算受限的大型企業來說,通過云計算來采用人工智能的成本要低...

    Leo_chen 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<