美文网首页
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