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

資訊專(zhuān)欄INFORMATION COLUMN

在Python中使用科大訊飛Web API進(jìn)行語(yǔ)音合成

Eminjannn / 1830人閱讀

摘要:所以這次總結(jié)一下在中使用訊飛進(jìn)行語(yǔ)音合成的過(guò)程。最后需要將配置參數(shù)編碼為字符串字典類(lèi)型明文字符串編碼字符串,具體實(shí)現(xiàn)可以參考代碼。返回值的具體說(shuō)明請(qǐng)參考返回值語(yǔ)音合成。

前幾日訊飛開(kāi)放平臺(tái)推出了WebAPI接口,恰好最近需要實(shí)現(xiàn)一個(gè)文字轉(zhuǎn)語(yǔ)音的功能,于是就嘗試著用了起來(lái)。但不知什么原因,官方文檔的調(diào)用示例一直報(bào)錯(cuò),最后自己照著示例的思路用python3重寫(xiě)了一遍。所以這次總結(jié)一下在Python中使用訊飛Web API進(jìn)行語(yǔ)音合成的過(guò)程。

注冊(cè)訊飛開(kāi)放平臺(tái)

首先注冊(cè)訊飛開(kāi)放平臺(tái):http://passport.xfyun.cn/regi...

注冊(cè)完成后進(jìn)入控制臺(tái),在控制臺(tái)創(chuàng)建一個(gè)新應(yīng)用 ,填寫(xiě)一些基本信息,注意 應(yīng)用平臺(tái) 選擇 WebAPI 。

創(chuàng)建完成后,記錄下 APPIDAPIKey ,將在程序中用到。

另外,請(qǐng)?jiān)?IP白名單 中添加自己的外網(wǎng)IP,可以在http://www.ip138.com/ 查看。(一般來(lái)說(shuō)外網(wǎng)IP會(huì)常常發(fā)生變化,請(qǐng)注意)

在Python3中使用訊飛Web API

先上代碼,后面進(jìn)行必要的說(shuō)明:

可能提示缺庫(kù):pip3 install requests

* 使用python3執(zhí)行

import base64
import json
import time
import hashlib
import requests

# API請(qǐng)求地址、API KEY、APP ID等參數(shù),提前填好備用
api_url = "http://api.xfyun.cn/v1/service/v1/tts"
API_KEY = "替換成你的APIKEY"
APP_ID = "替換成你的APPID"
OUTPUT_FILE = "C://output.mp3"    # 輸出音頻的保存路徑,請(qǐng)根據(jù)自己的情況替換
TEXT = "茍利國(guó)家生死以,豈因禍福避趨之"

# 構(gòu)造輸出音頻配置參數(shù)
Param = {
    "auf": "audio/L16;rate=16000",    #音頻采樣率
    "aue": "lame",    #音頻編碼,raw(生成wav)或lame(生成mp3)
    "voice_name": "xiaoyan",
    "speed": "50",    #語(yǔ)速[0,100]
    "volume": "77",    #音量[0,100]
    "pitch": "50",    #音高[0,100]
    "engine_type": "aisound"    #引擎類(lèi)型。aisound(普通效果),intp65(中文),intp65_en(英文)
}
# 配置參數(shù)編碼為base64字符串,過(guò)程:字典→明文字符串→utf8編碼→base64(bytes)→base64字符串
Param_str = json.dumps(Param)    #得到明文字符串
Param_utf8 = Param_str.encode("utf8")    #得到utf8編碼(bytes類(lèi)型)
Param_b64 = base64.b64encode(Param_utf8)    #得到base64編碼(bytes類(lèi)型)
Param_b64str = Param_b64.decode("utf8")    #得到base64字符串

# 構(gòu)造HTTP請(qǐng)求的頭部
time_now = str(int(time.time()))
checksum = (API_KEY + time_now + Param_b64str).encode("utf8")
checksum_md5 = hashlib.md5(checksum).hexdigest()
header = {
    "X-Appid": APP_ID,
    "X-CurTime": time_now,
    "X-Param": Param_b64str,
    "X-CheckSum": checksum_md5
}

# 發(fā)送HTTP POST請(qǐng)求
def getBody(text):
    data = {"text":text}
    return data
response = requests.post(api_url, data=getBody(TEXT), headers=header)

# 讀取結(jié)果
response_head = response.headers["Content-Type"]
if(response_head == "audio/mpeg"):
    out_file = open(OUTPUT_FILE, "wb")
    data = response.content # a "bytes" object
    out_file.write(data)
    out_file.close()
    print("輸出文件: " + OUTPUT_FILE)
else:
    print(response.read().decode("utf8"))

下面按照代碼順序進(jìn)行各部分的說(shuō)明。

APIKey等參數(shù)

在代碼開(kāi)頭填好各項(xiàng)參數(shù),方面代碼中使用。

API_KEY和APP_ID請(qǐng)?zhí)鎿Q為上一步創(chuàng)建應(yīng)用后得到的內(nèi)容。請(qǐng)不要?jiǎng)h除雙引號(hào)。

OUTPUT_FILE是最終輸出音頻的保存路徑,根據(jù)自己的情況替換。

TEXT是將要輸出為語(yǔ)音的文本。

音頻配置參數(shù)

Param 是字典格式的音頻配置參數(shù),其中 "aue" 可選 raw (生成wav)或 lame (生成mp3),如果修改成raw請(qǐng)記得同時(shí)修改輸出文件的擴(kuò)展名。

最后需要將配置參數(shù)編碼為Base64字符串:字典類(lèi)型→明文字符串→utf8編碼→Base64(bytes)→Base64字符串,具體實(shí)現(xiàn)可以參考代碼。

音頻配置參數(shù)的詳細(xì)說(shuō)明可以參考請(qǐng)求參數(shù) | 語(yǔ)音合成 。

HTTP請(qǐng)求頭部

根據(jù) 授權(quán)認(rèn)證 | 科大訊飛RESET_API開(kāi)發(fā)指南 ,在調(diào)用所有業(yè)務(wù)接口時(shí),都需要在HTTP請(qǐng)求頭部中配置以下參數(shù)用于授權(quán)認(rèn)證:

參數(shù) 格式 說(shuō)明
X-Appid string 訊飛開(kāi)放平臺(tái)注冊(cè)申請(qǐng)應(yīng)用的應(yīng)用ID(appid)
X-CurTime string 當(dāng)前UTC時(shí)間戳,從1970年1月1日0點(diǎn)0 分0 秒開(kāi)始到現(xiàn)在的秒數(shù)
X-Param string 音頻配置參數(shù)JSON串經(jīng)Base64編碼后的字符串
X-CheckSum string 令牌,計(jì)算方法:MD5(apiKey + curTime + param)。三個(gè)值拼接的字符串,進(jìn)行MD5哈希計(jì)算(32位小寫(xiě))。

具體實(shí)現(xiàn)參考代碼中字典 header

發(fā)送請(qǐng)求&讀取結(jié)果

最后使用requests庫(kù)發(fā)送HTTP POST請(qǐng)求,得到結(jié)果。根據(jù)響應(yīng)的 header 可以判斷是否合成成功。

若響應(yīng)頭部包含Content-type: audio/mpeg,則響應(yīng)Body為音頻數(shù)據(jù),可寫(xiě)入文件保存。

若合成出現(xiàn)錯(cuò)誤,響應(yīng)頭部包含Content-type: text/plain,響應(yīng)Body為記載了錯(cuò)誤類(lèi)型的json字符串。

返回值的具體說(shuō)明請(qǐng)參考 返回值 | 語(yǔ)音合成 。

運(yùn)行結(jié)果

使用幾次后,感覺(jué)合成語(yǔ)音的斷句做得不是很優(yōu)秀,但響應(yīng)速度很快,還是比較滿(mǎn)意的。

output.mp3

小結(jié)

最近使用了幾種Web API,對(duì)這類(lèi)API的使用方法也算是有些經(jīng)驗(yàn)了。最后,現(xiàn)在語(yǔ)音識(shí)別、圖靈機(jī)器人、語(yǔ)音合成都試著做了一遍,下一篇博客將把他們組合起來(lái),實(shí)現(xiàn)一個(gè)簡(jiǎn)單的語(yǔ)音助手。

感謝你閱讀文章!

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/44660.html

相關(guān)文章

  • 科大訊飛語(yǔ)音識(shí)別和語(yǔ)音播放dome

    摘要:最后,現(xiàn)在時(shí)間是年月日到目前為止科大訊飛的不支持客戶(hù)端和服務(wù)端分開(kāi)的情況,也就是說(shuō),語(yǔ)音合成是在服務(wù)端的話(huà)筒的播放,語(yǔ)音識(shí)別需要服務(wù)端的麥克風(fēng)錄音,,對(duì)于沒(méi)有任何卵用。 首先登陸科大訊飛開(kāi)發(fā)者平臺(tái),注冊(cè)賬號(hào),(走你->http://www.xfyun.cn/)可以根據(jù)功能(語(yǔ)音識(shí)別,語(yǔ)音播放等),平臺(tái)(java,window等),來(lái)創(chuàng)建屬于自己的應(yīng)用。應(yīng)用創(chuàng)建成功后對(duì)有一個(gè)對(duì)應(yīng)的app...

    KitorinZero 評(píng)論0 收藏0
  • Python用ctypes調(diào)用動(dòng)態(tài)庫(kù)的方式使用科大訊飛語(yǔ)音識(shí)別

    摘要:科大訊飛的語(yǔ)音識(shí)別客戶(hù)端提供了下的語(yǔ)言,卻沒(méi)有的。有了,我們就可以很輕松的用來(lái)使用科大訊飛的語(yǔ)音識(shí)別了。通過(guò)函數(shù)加載動(dòng)態(tài)庫(kù)在里面調(diào)用函數(shù)時(shí)主要是注意參數(shù)的類(lèi)型。 ctypes 是 Python 的一個(gè)模塊,它提供了C語(yǔ)言相關(guān)的數(shù)據(jù)類(lèi)型,可以方便的調(diào)用C語(yǔ)言編寫(xiě)的DLL(Windows 動(dòng)態(tài)鏈接庫(kù))和so(Linux動(dòng)態(tài)鏈接庫(kù))。科大訊飛的語(yǔ)音識(shí)別客戶(hù)端SDK提供了Linux下的C語(yǔ)言S...

    andycall 評(píng)論0 收藏0
  • 微信小程序--------語(yǔ)音識(shí)別(前端自己也能玩)

    摘要:一背景作為一名前端同學(xué)有時(shí)候感覺(jué)挺可憐的,復(fù)雜的操作都依賴(lài)后端同學(xué)在服務(wù)器端完成。 一、背景 作為一名前端同學(xué)有時(shí)候感覺(jué)挺可憐的,復(fù)雜的操作都依賴(lài)后端同學(xué)在服務(wù)器端完成。那么,有一天我們自己想玩一個(gè)新技術(shù)或者后端同學(xué)不搭理我們,怎么辦?絕望中..... 二、小程序語(yǔ)音識(shí)別 接到這個(gè)需求,我們明確兩個(gè)問(wèn)題: 小程序錄音支持什么格式 由小程序文檔可知:只支持 mp3格式和 aac格式微信...

    omgdog 評(píng)論0 收藏0
  • 小程序?qū)崿F(xiàn)語(yǔ)音識(shí)別到底要填多少坑?

    摘要:前不久寫(xiě)了個(gè)工具型微信小程序周邊,里面用到了語(yǔ)音識(shí)別技術(shù)。當(dāng)然如果你要兼容低端微信用戶(hù)需要使用做兼容處理。如果發(fā)現(xiàn)不當(dāng)之處歡迎微信交流。想看實(shí)際案例的可以微信掃碼關(guān)于安裝關(guān)于安裝關(guān)于安裝 前不久寫(xiě)了個(gè)工具型微信小程序(Find周邊),里面用到了語(yǔ)音識(shí)別技術(shù)?,F(xiàn)將實(shí)現(xiàn)細(xì)節(jié)整理如下: 接口預(yù)覽 通過(guò)閱讀了解科大訊飛接口文檔、小程序接口開(kāi)發(fā)文檔以及對(duì)后端ThinkPhp框架的學(xué)習(xí),我整理...

    Benedict Evans 評(píng)論0 收藏0
  • 小程序?qū)崿F(xiàn)語(yǔ)音識(shí)別到底要填多少坑?

    摘要:前不久寫(xiě)了個(gè)工具型微信小程序周邊,里面用到了語(yǔ)音識(shí)別技術(shù)。當(dāng)然如果你要兼容低端微信用戶(hù)需要使用做兼容處理。如果發(fā)現(xiàn)不當(dāng)之處歡迎微信交流。想看實(shí)際案例的可以微信掃碼關(guān)于安裝關(guān)于安裝關(guān)于安裝 前不久寫(xiě)了個(gè)工具型微信小程序(Find周邊),里面用到了語(yǔ)音識(shí)別技術(shù)?,F(xiàn)將實(shí)現(xiàn)細(xì)節(jié)整理如下: 接口預(yù)覽 通過(guò)閱讀了解科大訊飛接口文檔、小程序接口開(kāi)發(fā)文檔以及對(duì)后端ThinkPhp框架的學(xué)習(xí),我整理...

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

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

0條評(píng)論

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