亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

使用python語(yǔ)言調(diào)用科大訊飛離線語(yǔ)音合成

系統(tǒng) 2083 0

科大訊飛屬于第三方服務(wù),但是支持的語(yǔ)言里面沒(méi)有python,所以我們?cè)谶@種情況下還想使用它的功能的話,可以通過(guò)調(diào)用C語(yǔ)言的包,來(lái)間接的使用。

代碼貼上來(lái):

            
              def text_to_voice(text):
    """
    科大訊飛離線語(yǔ)音合成
    :param text: 轉(zhuǎn)換文本

    開(kāi)發(fā)API文檔:http://mscdoc.xfyun.cn/windows/api/iFlytekMSCReferenceManual/files.html
    API調(diào)用流程:https://doc.xfyun.cn/msc_windows/%E8%AF%AD%E9%9F%B3%E5%90%88%E6%88%90.html

    LoadLibrary: 將指定的模塊加載到調(diào)用進(jìn)程的地址空間中(C++)
    MSPLogin: 初始化msc,用戶登錄
    QTTSSessionBegin: 開(kāi)始一次語(yǔ)音合成,分配語(yǔ)音合成資源
    QTTSTextPut: 寫(xiě)入要合成的文本
    QTTSAudioGet: 獲取合成音頻
    QTTSSessionEnd: 結(jié)束本次語(yǔ)音合成
    MSPLogout:  退出登錄
    :return:
    """
    try:
        # 此方法引用:windows/ubuntu/centos三種環(huán)境均測(cè)試過(guò),可以調(diào)用
        from ctypes import cdll, c_int, byref, string_at
    except Exception as e:
        return e
    try:
        # 該配置文件需要放到python安裝目錄下,否則會(huì)報(bào)錯(cuò)(如果不在該目錄,則需要單獨(dú)配置環(huán)境變量)
        msc_load_library = config.get_MSC_LOAD_LIBRARY()  # 這里的config是增加了另一層封裝,沒(méi)有粘出代碼來(lái),下面的代碼會(huì)配上配置文件中的格式,只要對(duì)應(yīng)的把配置文件中的內(nèi)容替換到這里就可以了。
        app_id = config.get_APP_ID()
        work_dir = config.get_WORK_DIR()
        voice_name = config.get_VOICE_NAME()
        login_tts_res_path = config.get_LOGIN_TTS_RES_PATH()
        session_tts_res_path = config.get_SESSION_TTS_RES_PATH()
    except Exception as e:
        return e

    frame_rate = 8000  # 頻率
    MSP_SUCCESS = 0
    MSP_TTS_FLAG_STILL_HAVE_DATA = 1
    MSP_TTS_FLAG_DATA_END = 2  # 結(jié)束標(biāo)識(shí)
    MSP_TTS_FLAG_CMD_CANCELED = 4

    login_params = "appid=%s, engine_start=tts, tts_res_path=%s, work_dir=%s" % (app_id, login_tts_res_path, work_dir)
    session_begin_params = b"engine_type=local, voice_name=%s, text_encoding=utf8, tts_res_path=%s, sample_rate=8000, speed=80, volume=50, pitch=50, rdn=2, effect=0, speed_increase=1, rcn=1" % ( voice_name, session_tts_res_path)
    dll = cdll.LoadLibrary(msc_load_library)
    ret = dll.MSPLogin(None, None, login_params)
    # print ret
    errorCode, audio_len, synth_status, getret = c_int(), c_int(), c_int(), c_int()
    sessionID = dll.QTTSSessionBegin(session_begin_params, byref(errorCode))
    # print sessionID
    # text_s = text.encode()
    text_s = text  # 測(cè)試代碼
    string = text_s.replace("(", "(").replace(")", ")")
    string = string.replace("[", "【").replace("]", "】")
    ret = dll.QTTSTextPut(sessionID, ctypes.c_char_p(string), len(string), None)
    # print ret
    # 1、打開(kāi)WAV文檔
    wavFile = wave.open(r"tts_voice.wav", "wb")
    # 2、配置聲道數(shù)、量化位數(shù)和取樣頻率
    wavFile.setnchannels(1)
    wavFile.setsampwidth(2)
    wavFile.setframerate(frame_rate)
    start_time = get_this_time()
    while True:
        end_time = get_this_time()
        print (end_time - start_time).seconds
        pdata = dll.QTTSAudioGet(sessionID, byref(audio_len),
                                 byref(synth_status), byref(getret))
        # print getret.value
        if getret.value != MSP_SUCCESS:
            break
        if pdata:
            data = string_at(pdata, audio_len.value)
            # 3、將wav_data轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)寫(xiě)入文件
            wavFile.writeframes(data)
        if synth_status.value == MSP_TTS_FLAG_DATA_END:
            break
        time.sleep(0.1)  # 這里為官方建議,可以去除不使用,避免轉(zhuǎn)換時(shí)間過(guò)長(zhǎng)
    # 4、關(guān)閉文件
    wavFile.close()
    ret = dll.QTTSSessionEnd(sessionID, "Normal")
    dll.MSPLogout()
            
          

下面是配置的文件,是上文中的config調(diào)用config.ini文件

            
              [XUN_FEI_TEXT_TO_VOICE]
MSC_LOAD_LIBRARY = E:/python2.7/Windows_aisound_exp1226_5cf60162/bin/msc_x64.dll
APP_ID = 5cf60162  # 這個(gè)是需要到科大訊飛的web端申請(qǐng)的一串id,一個(gè)用戶有三臺(tái)免費(fèi)裝機(jī)量
WORK_DIR = E:/python2.7/Windows_aisound_exp1226_5cf60162/include
; 需要使用\\否則會(huì)提示錯(cuò)誤碼:10102,找不到離線資源文件
LOGIN_TTS_RES_PATH = fo|E:\\python2.7\\Windows_aisound_exp1226_5cf60162\\bin\\msc\\res\\tts\\xiaoyan.jet
SESSION_TTS_RES_PATH = fo|E:\\python2.7\\Windows_aisound_exp1226_5cf60162\\bin\\msc\\res\\tts\\xiaoyan.jet;fo|E:\\python2.7\\Windows_aisound_exp1226_5cf60162\\bin\\msc\\res\\tts\\common.jet
            
          
            
              這個(gè)目錄Windows_aisound_exp1226_5cf60162需要到官網(wǎng)上面下載到本地,然后放到python環(huán)境下,我這邊使用的是python2.7環(huán)境
            
          

當(dāng)我們生成語(yǔ)音文件以后,想要測(cè)試語(yǔ)音是否正確的時(shí)候,使用下圖這個(gè)軟件,比較專業(yè)?。?!

使用python語(yǔ)言調(diào)用科大訊飛離線語(yǔ)音合成_第1張圖片


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。?!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 中文字幕日韩专区 | 国产精品人成福利视频 | 精品人人 | 中文字幕亚洲一区 | 国产一级毛片视频 | 日韩欧美亚洲一区精选 | 国产91精品福利在线观看 | 国产香蕉一区二区精品视频 | 久久er热这里只有精品23 | 久久综合久久美利坚合众国 | 神马不卡伦影视 | www色综合 | 四虎4hu永久在线观看 | 国产成人亚洲毛片 | 亚洲欧美成人在线 | 一级免费片 | 日本精品视频一视频高清 | 久久99精品国产一区二区三区 | 国产中文字幕第一页 | 99精品国产高清一区二区 | 一级激情视频 | 国产日韩欧美中文字幕 | 久久伦理影院 | 日本爱爱视频网站 | 四虎4hu | 欧美三级一区二区三区 | 国产ww久久久久久久久久 | 亚洲高清资源 | 日日操免费视频 | 国产精品视频一 | 91最新在线 | 天堂精品高清1区2区3区 | 亚洲欧美色综合精品 | 99久久一区二区精品 | 精品午夜寂寞影院在线观看 | 中文字幕不卡一区 | 美女羞羞视频 | 欧美狠狠入鲁的视频极速 | 日日噜噜夜夜狠狠久久aⅴ 日日噜噜夜夜狠狠久久丁香 | 美女视频黄a视频免费全过程在线 | 五月天国产精品 |