[阿里云文本合成语音api文档]
3月免费试用,目前我的6.6号到期
1.免费;2.2路并发限制;3.提供公用并发服务资源(https://help.aliyun.com/document_detail/94737.html)
阿里云文本合成语音实操:
- 1 .安装SDK:
- 官方给的实例代码着实看不懂
- 我写的调用方式:
直接将返回的二进制音频数据输出到扬声器
一开始用的winsound,但是会出现问题:1.总是调用失效,不报错,也不响应。2.无法使用循环,也没见报错,直接跳出循环,用多线程也没用,自己不生效,而且会杀死所有的进程,真是搞不懂
后来就用了第三方库playsound,但是改库智能传参路径,不能传入二进制数据,那就只好先把阿里云返回的二进制数据保存,然后再调用playsound传入路劲,绕个弯子
- 代码实操:
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不能直接使用,需要修改源码中的几行代码,否则报错 参考这里
网友评论