- 官方文档
- 示例代码
- 在线语音合成API接口
- Github-TTS
- 为了方便理解,精简后的部分源码:
import json
from playsound import playsound
from urllib.request import urlopen
from urllib.request import Request
from urllib.parse import urlencode
from urllib.parse import quote_plus
TEXT = "请介绍下兵马俑"
# 发音人选择, 基础音库:0为度小美,1为度小宇,3为度逍遥,4为度丫丫,
# 精品音库:5为度小娇,103为度米朵,106为度博文,110为度小童,111为度小萌,默认为度小美
PER = 4
# 语速,取值0-15,默认为5中语速
SPD = 5
# 音调,取值0-15,默认为5中语调
PIT = 5
# 音量,取值0-9,默认为5中音量
VOL = 5
# 下载的文件格式, 3:mp3(default) 4: pcm-16k 5: pcm-8k 6. wav
AUE = 6
FORMATS = {3: "mp3", 4: "pcm", 5: "pcm", 6: "wav"}
FORMAT = FORMATS[AUE]
CUID = "123456PYTHON"
if __name__ == '__main__':
token = fetch_token() #获取Access Token,不再赘述
tex = quote_plus(TEXT) # 此处TEXT需要两次urlencode
params = {'tok': token, 'tex': tex, 'per': PER, 'spd': SPD, 'pit': PIT, 'vol': VOL, 'aue': AUE, 'cuid': CUID,
'lan': 'zh', 'ctp': 1} # lan ctp 固定参数
data = urlencode(params)
req = Request(TTS_URL, data.encode('utf-8'))
has_error = False
f = urlopen(req)
result_str = f.read() #音频文件数据
headers = dict((name.lower(), value) for name, value in f.headers.items())
save_file = "error.txt" if has_error else 'result.' + FORMAT #result.wav
with open(save_file, 'wb') as of: #保存文件
of.write(result_str)
#播放
playsound('result.wav')
(1)
tex = quote_plus(TEXT) # 此处TEXT需要两次urlencode
- 官方文档解释:
- 参考链接:
Python之urlencode()使用
Python encode()和decode()方法:字符串编码转换



