成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

ethernet / 1609人閱讀

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

在之前發(fā)布的使用谷歌Cloud Speech API將語音轉(zhuǎn)換為文字一文中,我們實(shí)現(xiàn)了在控制臺(tái)使用curl發(fā)送post請(qǐng)求,得到語音轉(zhuǎn)文字的結(jié)果;而在Python中使用谷歌Cloud Speech API將語音轉(zhuǎn)換為文字一文中,我們實(shí)現(xiàn)了安裝Cloud Speech API客戶端庫,通過調(diào)用庫函數(shù)得到語音轉(zhuǎn)文字的結(jié)果。

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


相關(guān)說明之類的在上面兩篇文章里已經(jīng)寫了很多,這邊就直接貼代碼。
*使用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)

幾點(diǎn)說明:

注釋:請(qǐng)求API的鏈接,請(qǐng)?zhí)鎿Q你的API密鑰 。如果你有疑問,或許可以參考 創(chuàng)建API密鑰 | 使用谷歌Cloud Speech API將語音轉(zhuǎn)換為文字 。
audio_file 路徑替換為你的本地聲音文件路徑。

注釋:這次上傳音頻的方式是,將聲音文件編碼為base64,把對(duì)應(yīng)的整個(gè)字符串放進(jìn)json請(qǐng)求中。如果你執(zhí)行 print(type(audio_b64)) 就會(huì)發(fā)現(xiàn)編碼后的audio_b64是 bytes 類型,所以還需要做一次decode(),轉(zhuǎn)成字符串。

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

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

1層:花括號(hào){}說明字符串 response_str 在執(zhí)行 json.loads 后變成一個(gè)"字典"。得到"字典" response_dic 。

2層:字典中只有一組鍵-值, response_dic["results"] 取出唯一的鍵"results"對(duì)應(yīng)的值。觀察這個(gè)值,發(fā)現(xiàn)中括號(hào)[],說明這個(gè)值的類型是”列表“。

3層:觀察列表 response_dic["results"] ,發(fā)現(xiàn)列表中只有一項(xiàng)數(shù)據(jù),但這項(xiàng)數(shù)據(jù)又是"字典"類型。將其取出,得到"字典" response_dic["results"][0]

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

5層:觀察列表 response_dic["results"][0]["alternatives"] ,列表中只有一項(xiàng)數(shù)據(jù), response_dic["results"][0]["alternatives"][0] 再將這唯一一項(xiàng)數(shù)據(jù)取出,發(fā)現(xiàn)得到的是一個(gè)"字典",而這次得到的字典中有兩組鍵-值,分別取出就是我們要的結(jié)果和置信度了。

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

小結(jié):

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

下一步的目標(biāo)是和錄音功能結(jié)合起來,實(shí)現(xiàn)自動(dòng)識(shí)別當(dāng)前錄制的語音。

感謝你閱讀文章!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44630.html

相關(guān)文章

  • Python使用谷歌Cloud Speech API語音轉(zhuǎn)換文字

    摘要:之前我們總結(jié)了使用谷歌將語音轉(zhuǎn)換為文字的基本流程,然而那只是在命令行中使用實(shí)現(xiàn)的。配置開發(fā)環(huán)境筆者使用的是樹莓派進(jìn)行試驗(yàn)的,其他平臺(tái)的配置方法可以在這里查找。設(shè)置驗(yàn)證登錄谷歌云平臺(tái)控制臺(tái),前往創(chuàng)建服務(wù)賬號(hào)密鑰界面。 之前我們總結(jié)了使用谷歌Cloud Speech API將語音轉(zhuǎn)換為文字的基本流程,然而那只是在命令行中使用curl實(shí)現(xiàn)的。這次我們將總結(jié)在Python中使用Cloud Sp...

    red_bricks 評(píng)論0 收藏0
  • 基于云計(jì)算上的人工智能服務(wù)

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

    Leo_chen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<