欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python使用京东NeuHub平台语音合成,高自然语音合成

程序员文章站 2022-07-14 19:59:31
...

python使用京东NeuHub平台语音合成,高自然语音合成

京东人工智能平台入口:http://neuhub.jd.com/

需要安装京东python 语音sdk

http://jdai.oss.cn-north-1.jcloudcs.com/aisdk/sdk-python.zip

安装完成到运行目录 setup.py

完整代码如下

import wx_sdk
import base64
import json
import os,time
import uuid

def jdvoice():
    tim_list = [0,1,3]
    while True:    
        bodyStr = input('请输入想转换为语音的字符串,输入n结束!') #body中的内容
        if bodyStr == 'n':
            print('-------------\n感谢使用!')
            break
        tim = input('-------------\n请输入选择语音助手序号数字,默认为0!0:桃桃(女声) 1:斌斌(男声) 3:婷婷(女声):')
        sp = input('-------------\n请输入期望语速,默认为1.0!取值范围:[0.5, 2.0]')

        if bodyStr == '':
            print('-------------\n您没有输入任何语句内容哟,请重新输入')
            jdvoice()
            pass
        else:
            if tim =='' and sp =='':
                tim = 0
                sp = 1.0
            elif sp =='' and tim !='':
                sp = 1.0
            elif tim =='' and sp !='':
                tim = 0
            elif float(sp)>2 or float(sp)<0.5:
                print('-------------\n您输入的语速不正确哟!请重新输入!')
                jdvoice()
            elif int(tim) not in tim_list:
                print('-------------\n你输入的声优没有哦,请重新开始!')
                jdvoice()

            print('tim:',tim,'sp:',sp)
            uuid_str = uuid.uuid1()
            url = 'https://aiapi.jd.com/jdai/tts'
            encode_str = bodyStr.encode('utf-8')
            params = { 
                'Service-Type' : 'synthesis',
                'Request-Id' : uuid_str,
                'Sequence-Id' : '-1',
                'Protocol' : '1',
                'Net-State' : '2',
                'Applicator' : '1',
                'Property' : '{"platform":"Linux","version":"0.0.0.1","parameters":{"aue":"3","vol":"2.0","sr":"24000","sp":'+str(sp)+',"tim":'+str(tim)+',"tte":"0"}}',
                'appkey' : '你的京东appkey',
                'secretkey' : '你的京东secretkey'
            }

            response = wx_sdk.wx_post_req(url, params, bodyStr=encode_str)
            strss=json.loads(response.text)
            resultdata=base64.b64decode(strss['result']['audio'])  #转换成base64编码
            file_name = r'C:\Users\Administrator\Desktop/'+bodyStr[:20]+'.mp3'
            print('保存路径为:',file_name)
            file = open(file_name,"wb")#保存为mp3文件
            file.write(resultdata)
            file.close()

def main():
    print('开始转换(*^▽^*)')
    jdvoice()
    print('完成转换Thanks♪(・ω・)ノ')
    time.sleep(4)

if __name__ == '__main__':
    main()