1. 程式人生 > >python騰訊語音合成

python騰訊語音合成

實例 primary d+ 憑證 定義 from 進行 sdk client

一、騰訊語音合成介紹

  騰訊雲語音合成技術(TTS)可以將任意文本轉化為語音,實現讓機器和應用張口說話。 騰訊TTS技術可以應用到很多場景,比如,移動APP語音播報新聞;智能設備語音提醒;依靠網上現有節目或少量錄音,快速合成明星語音,降低邀約成本;支持車載導航語音合成的個性化語音播報。(廢話一大堆)。。。

二、騰訊語音合成python SDK文檔

  安裝 Python SDK 前,先獲取安全憑證。在第一次使用雲 API 之前,用戶首先需要在騰訊雲控制臺上申請安全憑證,安全憑證包括 SecretID 和 SecretKey, SecretID 是用於標識 API 調用者的身份,SecretKey 是用於加密簽名字符串和服務器端驗證簽名字符串的密鑰。SecretKey 必須嚴格保管,避免泄露。 

 通過 pip 安裝(推薦)

    您可以通過 pip 安裝方式將騰訊雲 API Python SDK 安裝到您的項目中,如果您的項目環境尚未安裝 pip,請詳細參見 pip官網 安裝。

    通過pip方式安裝請在命令行中執行以下命令:

    pip install tencentcloud-sdk-python

    請註意,如果同時有 python2 和 python3 環境, python3 環境需要使用 pip3 命令安裝。

三、騰訊語音合成代碼示例

  代碼如下:

 1 # !/usr/bin/env python
 2 # -*- coding: utf-8 -*-
3 from base64 import b64decode 4 from uuid import uuid4 5 from tencentcloud.common import credential 6 from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException 7 from tencentcloud.aai.v20180522.models import TextToVoiceRequest 8 from tencentcloud.aai.v20180522.aai_client import
AaiClient 9 try: 10 # 實例化一個認證對象,入參需要傳入騰訊雲賬戶secretId,secretKey 11 cred = credential.Credential("你的secretID", "你的secretKey") 12 # 實例化要進行語音合成請求的client對象 13 client = AaiClient(cred, ap-shanghai) 14 # 實例化一個請求對象 15 req = TextToVoiceRequest(先帝創業未半而中道崩殂,今天下三分) 16 # 請求對象屬性封裝 17 req.Text = 先帝創業未半而中道崩殂 # type: str # 要合成語音的文本 18 req.SessionId = uuid4() # type: int # 一次請求對應一個SessionId,會原樣返回,建議傳入類似於uuid的字符串防止重復 19 req.ModelType = 1 # type: int # 模型類型,默認值為1 20 req.Volume = 5.0 # type: float # 音量大小,範圍:[0,10],分別對應10個等級的音量,默認為0 21 req.Speed = 0.6 # type: float # 語速,範圍:[-2,2],分別對應不同語速:0.6倍,0.8倍,1.0倍,1.2倍,1.5倍,默認為0 22 req.ProjectId = 10086 # type: int # 項目id,用戶自定義,默認為0 23 req.VoiceType = 0 # type: int # 音色0:女聲1,親和風格(默認) 音色1:男聲1,成熟風格 音色2:男聲2,成熟風格 24 req.PrimaryLanguage = 1 # type: int # 主語言類型1:中文,最大100個漢字(標點符號算一個漢字)語言類型2:英文,最大支持400個字母(標點符號算一個字母) 25 req.SampleRate = 16000 # type: int # 音頻采樣率,16000:16k,8000:8k,默認16k 26 # 通過client對象調用想要訪問的接口,需要傳入請求對象 27 rep = client.TextToVoice(req) 28 # rep為響應對象 29 print(rep) 30 """ 31 { 32 "Audio": "UklGRlR/AABXQVZFZm10IBAAAAABAAEAgD4AAAB9AAACABAAZGF0YSx9AAD+////AQD//wAAAAAAAAIAAQADAAMABgAEAAYABQAGAAUABwAIAAgACQAAE......AAgACAAEAAgADAAIAAwACAAQAAwACAAIAAgADAAMAAgACAAIAAwABAAAAAAAAAAAAAAD/////AAAAAAAA//8AAP///v/9//7//v///////v8AAP///////wAA/////wAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAA", 33 "RequestId": "9a7a1615-3e09-4db2-8032-5c6f497f7e6a", 34 "SessionId": "session-1234" 35 } 36 Audio對應的值為經過base64編碼, 37 RequestId為返回的唯一請求id, 38 SessionId為發送請求時傳入的id即uuid4() 39 """ 40 # content為base64解碼後的二進制流 41 content = b64decode(rep.Audio) 42 # I/O操作 43 with open(voice.wav, wb) as f: 44 f.write(content) 45 except TencentCloudSDKException as e: 46 print(e)

四、騰訊語音合成使用後感受

  首先,在代碼層次上講,官方壓根沒有合成示例文檔啊(咆哮ing),全自己摸索的啊(咆哮ing),SDK都開發出來了,示例代碼給一下能死啊(咆哮ing),怪不得沒人用啊(咆哮ing)!

  第二,還是在代碼層次上講,源碼中TextToVoiceRequest()類,在__init__()方法中就不能直接封裝屬性啊(咆哮ing),有些沒有自定制但都是默認的直接填上不就行了啊(咆哮ing),懶死你啊,非得一行一行自己加屬性啊(咆哮ing),看到的同學務必要修改這個類的__init__()方法,要不然就像示例代碼中那樣麻煩。

  第三,在合成效果上講,聲音難聽爆了有木有,語音文件還得解碼再I/O,吃飽了撐的了啊,還是那句話:怪不得沒人用,百度語音合成效果比你強多了。

  總之,就這樣吧,不吐槽你了,真是費勁。。。

python騰訊語音合成