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

資訊專欄INFORMATION COLUMN

百度語(yǔ)音合成在python中的使用

Alliot / 3791人閱讀

摘要:使用百度的語(yǔ)音合成,首先需要在百度的開放平臺(tái)上注冊(cè)。百度語(yǔ)音的獲取方式如下為官網(wǎng)獲取的,為官網(wǎng)獲取的天過(guò)期注意,是有有效期的,需要定時(shí)獲取新的。

今天來(lái)說(shuō)一下在python中如何使用百度的語(yǔ)音合成功能;即輸入一段文字,請(qǐng)求百度相關(guān)服務(wù)器后,會(huì)返回來(lái)一段二進(jìn)制語(yǔ)音流,將這段二進(jìn)制數(shù)據(jù)經(jīng)過(guò)base64編碼返回給前端,前端解碼后,可以播放出這段語(yǔ)音;也可以將這段二進(jìn)制語(yǔ)音流保存到一個(gè)wav文件中。

使用百度的語(yǔ)音合成,首先需要在百度的ai開放平臺(tái)上注冊(cè)。

具體代碼如下:

import asyncio
from aiohttp import ClientSession

def get_baidu_voice(text, baidu_voice_token):
    content_audio = {
        "tex": text,
        "tok": baidu_voice_token,
        "cuid": "default",
        "ctp": "1",
        "lan": "zh",
        "per": "4",

    }
    
    speech_url = "https://tsn.baidu.com/text2audio?"
    headers = {
        # "Content-Type": "audio/mp3"
        "Content-Type": "application/json"
    }
    async with ClientSession() as session:
        async with session.post(url=speech_url, data=content_audio,
                                headers=headers) as res:
            ret = await res.content.read()
            try:
                # 將bytes類型轉(zhuǎn)換為str類型
                ret_str = str(ret, encoding="utf-8")
            except Exception as e:
                # 正常返回
                self.speech = base64.b64encode(ret)
            else:
                # 異常返回
                ret_dict = json.loads(ret_str)
                if ret_dict["err_no"] == 502:
                    raise RuntimeError("access token expired, please check")
                elif ret_dict["err_no"] == 501:
                    raise RuntimeError("the input arguments is incorrect, please check")
                elif ret_dict["err_no"] == 503:
                    raise RuntimeError("合成后端出錯(cuò)")
                elif ret_dict["err_no"] == 500:
                    raise RuntimeError("unsupport input")

需要傳入兩個(gè)參數(shù),分別是:需要轉(zhuǎn)換成語(yǔ)音的文本和百度的語(yǔ)音token。

百度語(yǔ)音token的獲取方式如下:

def get_baidu_voice_token():
    # client_id 為官網(wǎng)獲取的AK, client_secret 為官網(wǎng)獲取的SK
    host = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id="+ client_id + "&client_secret=" + client_secret
    request = urllib.request.Request(host)
    request.add_header("Content-Type", "application/json; charset=UTF-8")
    response = urllib.request.urlopen(request)
    content_bytes = response.read()
    content_dict = json.loads(str(content_bytes, encoding="utf-8"))
    if content_dict:
        # 28天過(guò)期
        return content_dict["access_token"]

注意,token是有有效期的,需要定時(shí)獲取新的token。

以上就是百度語(yǔ)音合成的調(diào)用,如有錯(cuò)誤,歡迎交流指正!

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

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

相關(guān)文章

  • ReactNative集成百度語(yǔ)音合成

    摘要:為百度語(yǔ)音資源,聲音文件,它為一個(gè)必須文件,中英文資源。使用集成常見問(wèn)題百度語(yǔ)音文檔中心百度語(yǔ)音的集成一行代碼簡(jiǎn)單調(diào)用百度語(yǔ)音合成使用原生自帶的語(yǔ)音合成 語(yǔ)音交互是現(xiàn)今應(yīng)用最多的智能交互方式,在人工智能越來(lái)越火的當(dāng)下應(yīng)用十分廣泛,所以特別針對(duì)車內(nèi)環(huán)境,在駕駛員安心駕駛的時(shí)候,用語(yǔ)音可以安全的進(jìn)行操控。恰好新版項(xiàng)目中要加入語(yǔ)音播報(bào)功能,因?yàn)槲覀兊膽?yīng)用和司機(jī)有關(guān),于是在網(wǎng)上搜索一些解決方案...

    lunaticf 評(píng)論0 收藏0
  • Python使用科大訊飛Web API進(jìn)行語(yǔ)音合成

    摘要:所以這次總結(jié)一下在中使用訊飛進(jìn)行語(yǔ)音合成的過(guò)程。最后需要將配置參數(shù)編碼為字符串字典類型明文字符串編碼字符串,具體實(shí)現(xiàn)可以參考代碼。返回值的具體說(shuō)明請(qǐng)參考返回值語(yǔ)音合成。 前幾日訊飛開放平臺(tái)推出了WebAPI接口,恰好最近需要實(shí)現(xiàn)一個(gè)文字轉(zhuǎn)語(yǔ)音的功能,于是就嘗試著用了起來(lái)。但不知什么原因,官方文檔的調(diào)用示例一直報(bào)錯(cuò),最后自己照著示例的思路用python3重寫了一遍。所以這次總結(jié)一下在Py...

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

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

0條評(píng)論

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