久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python:TTS語音合成技術(shù),市場各大平臺(tái)對(duì)比以及實(shí)現(xiàn)

 大傻子的文淵閣 2020-11-20

TTS

前景提要:在線的實(shí)時(shí)合成TTS技術(shù),巴拉巴拉... 此處省略3千字 市場的TTS平臺(tái):訊飛語音,,百度智能語音開放平臺(tái),,阿里云,,騰訊云,,思必馳捷通華聲(靈云)等,。

TTS的合成簡單來說就三大步: 1??創(chuàng)建應(yīng)用 2??發(fā)起請(qǐng)求 3??解析音頻數(shù)據(jù),,合成音頻文件

咱們廢話不說一個(gè)一個(gè)來: 一、訊飛,,音頻屆的老大哥

支持多種語言開發(fā),,選擇適合自己的,我這里選的是WebAPI:

多種語言開發(fā)

01,、創(chuàng)建應(yīng)用

創(chuàng)建應(yīng)用

說明: 1和3: 是在代碼中具體使用到的 鑒權(quán)碼 2:表示試用期間的每天使用次數(shù) 4:請(qǐng)求IP要添加白名單,,不添加白名單會(huì)請(qǐng)求失敗 5:可以選擇不同的發(fā)音人:(分初級(jí)和高級(jí),高級(jí)的另收費(fèi))

code:

def tts_xunfei(text):
  # API請(qǐng)求地址,、API KEY,、APP ID等參數(shù),提前填好備用
  api_url = "http://api./v1/service/v1/tts"
  API_KEY = "API_KEY"
  APP_ID = "APP_ID"
  OUTPUT_FILE = "訊飛.wav"  # 輸出音頻的保存路徑,,請(qǐng)根據(jù)自己的情況替換
  TEXT = text

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

  # 構(gòu)造HTTP請(qǐng)求Body
  body = {"text": TEXT}
  body_urlencode = urllib.parse.urlencode(body)
  body_utf8 = body_urlencode.encode('utf8')

  # 發(fā)送HTTP POST請(qǐng)求
  req = urllib.request.Request(api_url, data=body_utf8, headers=header)
  response = urllib.request.urlopen(req)

  # 讀取結(jié)果
  response_head = response.headers['Content-Type']
  if (response_head == "audio/mpeg"):
      data = response.read()  # a 'bytes' object
      save_wav(data, OUTPUT_FILE)
  else:
      print(response.read().decode('utf8'))

注意:將上面的APP_ID和API_KEY更換為自己的即可,另外記得添加IP白名單

二,、阿里平臺(tái) 用戶鑒權(quán)有有效期,,到期了要重新獲取token

def tts_ali(text):

    # 獲取存儲(chǔ)的access_token, token_expireTime  兩個(gè)同時(shí)更新
    token_expireTime = 1551513046
    access_token = "9fcdcd2a190f49cb926dc5c2e24043c8"

    # 當(dāng)前的時(shí)間戳 和 token有效期對(duì)比,如果過期則重新生成
    local_time = int(time.time())
    if local_time >= token_expireTime:
        # 重新生成并存儲(chǔ)
        access_token, token_expireTime = get_token()

    headers = {
        "Content-Type": "application/json;charset=UTF-8",
        "X-NLS-Token":access_token,
        }

    data_info = {
        "appkey":"5dz4RRvAJufMAB6g",
        "text":text,
        "token":access_token,
        "format":"wav",
        "voice":"yina",
        "sample_rate":"16000",  # 音頻采樣率,,默認(rèn)是16000
        "volume":"50", # 音量,,范圍是0~100,默認(rèn)50
        "speech_rate":"45", # 語速,,范圍是-500~500,,默認(rèn)是0
        "pitch_rate":"0", # 語調(diào),范圍是-500~500,,默認(rèn)是0

        # 試聽發(fā)音人:https://ai.aliyun.com/nls/tts?spm=5176.8142029.388261.47.f8ed6d3e0NhBch
        # 發(fā)音人參數(shù):https://help.aliyun.com/document_detail/84435.html?spm=a2c4g.11186623.6.581.69a853d5E4c3vM
        # 推薦:小夢 思悅 小美 伊娜
        }

    data = json.dumps(data_info)

    ret = requests.post(ALI_URL, headers=headers, data=data, timeout=5)
    save_wav(ret.content, "ali2.wav")

提醒: token的獲取我代碼里有完整的 另外開發(fā)測試期間,,開發(fā)文檔會(huì)提供簡易的不過期token,,方便測試

三,、百度 調(diào)用方式簡單,開發(fā)文檔里有說明

# 百度
def tts_baidu(text):
    baidu_url = "http://tsn.baidu.com/text2audio?lan=zh&ctp=1&cuid=abcdxxx&tok=24.ed4dfdxxxxxff0af259fc.2592000.1553756573.282335-15631432&tex={}&vol=9&per=0&spd=5&pit=5&aue=6".format(text)

    ret = requests.get(baidu_url, timeout=5)
    save_wav(ret.content, "siyue.wav")

四,、騰訊 正在開發(fā)測試階段,,直接舍棄了

五、標(biāo)貝

# 標(biāo)貝
def tts_biaobei(text):
    """獲取tts語音"""
    tts_url = "http://1.203.80.138:8001/tts?user_id=xxx&domain=1&volume=0&language=zh&speed=5&audiotype=5&text=" + text
    f = requests.get(tts_url)
    voice = f.content
    return voice

六,、思必馳

 # 思必馳
def tts_dui(text):
    data_dict = {
        "context": {"productId": "productId"},
        "request": {"requestId": "tryRequestId",
        "audio": {"audioType": "WAV", "sampleRate": 16000, "channel": 1, "sampleBytes": 2},
            "tts": {
            "text": text,
            "textType": "text",
            "voiceId": "lili1f_shangwu"}}}
    data = json.dumps(data_dict)

    headers = {
        'content-type': 'application/json',
        'User-Agent': 'Mozilla/5.0 '}

    r = requests.post(DUI_URL, data=data, headers=headers, timeout=5)
    print(r)

    # 寫入文件生成音頻
    save_wav(r.content, "DUI.wav")

七,、捷通華聲(靈云)

 # 靈云
def tts_lingyun(text):

    linghyun_URL = "http://api.:8880/tts/synthtext"
    request_data = "2014-6-18 10:10:11"

    data = request_data + "應(yīng)用參數(shù)"
    md5 = hashlib.md5()
    md5.update(data.encode('utf-8'))  # 注意轉(zhuǎn)碼
    res = md5.hexdigest()

    headers = {"x-app-key": "c95d54cf", "x-sdk-version": "3.9", "x-request-date": request_data,
        "x-task-config": "capkey=tts.cloud.xiaokun,audioformat=mp3,speed=2,volume=9.99", "x-session-key": res,
        "x-udid": "101:1234567890"}

    r = requests.post(linghyun_URL, headers=headers,
                  data=text.encode('utf-8'),
                  timeout=5)

    # 獲取音頻數(shù)據(jù)
    ret = r.content
    ret = ret[ret.find(b'</ResponseInfo>') + 15:]

    # 寫入文件生成音頻
    save_wav(bytes(ret), "aasdasd.mp3")

沒有python示例代碼,返回參數(shù)比較變態(tài),,解析出音頻耗了我大量時(shí)間(因?yàn)槲壹夹g(shù)不佳)

使用過程中:百度無人回復(fù),,沒給報(bào)價(jià),思必馳沒找到任何公司人員 各平臺(tái)均有使用,,每天限次數(shù),,可以開發(fā)試聽一下, 效果比較個(gè)人感覺: 標(biāo)貝 > 訊飛 > 阿里 > 百度 > 思必馳 > 靈云

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多