美文网首页
python调用阿里云文本合成语音服务

python调用阿里云文本合成语音服务

作者: sexy_cyber | 来源:发表于2022-03-06 17:21 被阅读0次

    [阿里云文本合成语音api文档]
    3月免费试用,目前我的6.6号到期
    1.免费;2.2路并发限制;3.提供公用并发服务资源(https://help.aliyun.com/document_detail/94737.html)

    阿里云文本合成语音实操:
    • 1 .安装SDK
      1. 官方给的实例代码着实看不懂
      1. 我写的调用方式:

    直接将返回的二进制音频数据输出到扬声器
    一开始用的winsound,但是会出现问题:1.总是调用失效,不报错,也不响应。2.无法使用循环,也没见报错,直接跳出循环,用多线程也没用,自己不生效,而且会杀死所有的进程,真是搞不懂

    后来就用了第三方库playsound,但是改库智能传参路径,不能传入二进制数据,那就只好先把阿里云返回的二进制数据保存,然后再调用playsound传入路劲,绕个弯子

      1. 代码实操:
    from aliyunsdkcore.client import AcsClient
    from aliyunsdkcore.request import CommonRequest
    import json
    import requests
    import os
    from playsound import playsound
    
    accessKey = 'LTAc5egijV'
    accessSecret = 'QyJwNVd'
    appKey = 'Ualy1fQRU'
    
    
    def get_aliyun_secret():
        client = AcsClient(accessKey,accessSecret,'cn-shanghai')
        request = CommonRequest()
        request.set_method('POST')
        request.set_domain('nls-meta.cn-shanghai.aliyuncs.com')
        request.set_version('2019-02-28')
        request.set_action_name('CreateToken')
        r = client.do_action_with_exception(request)
        r = json.loads(r.decode())
        return r['Token'].get('Id')
    
    def tts(text,voice):
        data = {
            'appkey':appKey,               #语音合成项目里的appkey
            "text": text,                       #要语音合成的文字
            'token':get_aliyun_secret(),        #上一步的鉴权秘钥
            'format':'wav',                     #合成语音的格式
            "volume":'100',                      #音量
            "voice":voice                     #发音人 参数详见 https://help.aliyun.com/document_detail/84435.html
        }
        header = {
            "Content-Type": "application/json;charset=UTF-8"
        }
        r = requests.post('https://nls-gateway.cn-shanghai.aliyuncs.com/stream/v1/tts',data=json.dumps(data),headers=header)
        print(r.content)
        with open(f'{voice}.wav','wb') as f:
            f.write(r.content)
        playsound(f'{voice}.wav')
        os.remove(f'{voice}.wav')
    
    
    

    其中需要注意:

    安装playsound不能直接使用,需要修改源码中的几行代码,否则报错 参考这里

    相关文章

      网友评论

          本文标题:python调用阿里云文本合成语音服务

          本文链接:https://www.haomeiwen.com/subject/ufrwrrtx.html