使用Python和百度对外共享的TTS接口实现文本转语音
起因#
近日,一个朋友给了我一张神奇的二维码:
我扫了一下,进入了这个链接:https://tts.baidu.com/text2audio?tex=%E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C%EF%BC%81&cuid=baike&lan=ZH&ie=utf-8&ctp=1&pdt=301&vol=9&rate=32&per=0
页面里就是一个mp3文件:
自动播放了一个“你好世界”的语音
看到tts.baidu.com
这种奇怪的字眼和熟悉的URL编码,我本能地去把编码解码出来,不用说你们也知道,解码结果就是你好世界!
那么,一切基本就真相大白了:
https://tts.baidu.com/text2audio
使用URL的参数来进行文本转语音,返回mp3文件。
经过#
再经过一段时间的摸索,我基本找到了参数的规律:
tex
参数:要转为语音的文本内容spd
参数:朗读速度,取值范围 [1,9]lan
参数:语言码,取值及其含义如下表:
语言码 | 含义 |
---|---|
ZH | 普通话 |
EN | 美式英语 |
UK | 英式英语 |
CTE | 粤语 |
per
参数:音色码,取值及其实际音色如下表(只有普通话有音色码,其他语音只有一种标准音音色,标准音音色的音色码可以设为0):
音色码 | 实际音色 |
---|---|
0 | 标准女音 |
1 | 标准男音 |
3 | 斯文男音 |
4 | 小萌萌 |
5 | 知性女音 |
6 | 老教授 |
8 | 葛平音 |
9 | 播音员 |
10 | 京腔 |
11 | 温柔大叔 |
使用表格以外的音色码或语言码可能会报错
其他参数作用未知,暂时设定朋友给的二维码里的值
这些音色码的“实际音色”其实都是我自己靠耳朵听出来,自己给那个音色起的名字。。。
希望有大神可以找出剩下参数的作用或是更多的音色码/语言码
代码#
于是,我使用Python的requests库写了一个方便调用百度TTS语音功能的程序:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
#import os
def TTS(text, speed, lan, per):
"""普通话-音色:
标准女音
标准男音
斯文男音
小萌萌
知性女音
老教授
葛平音
播音员
京腔
温柔大叔
英式英语-音色:
标准音
美式英语-音色:
标准音
粤语-音色:
标准音
"""
convertTable = { #建立易读文本和音色码/语言码的关系表
'中文': ('ZH', {
'标准女音': 0,
'标准男音': 1,
'斯文男音': 3,
'小萌萌': 4,
'知性女音': 5,
'老教授': 6,
'葛平音': 8,
'播音员': 9,
'京腔': 10,
'温柔大叔': 11
}),
'英式英语': ('UK', {
'标准音': 0
}),
'美式英语': ('EN', {
'标准音': 0
}),
'粤语': ('CTE', {
'标准音': 0
})
}
data = {
'tex': text,
'spd': speed,
'lan': convertTable[lan][0],
'per': convertTable[lan][1][per],
'ctp': 1,
'cuid': 'baike',
'ie': 'UTF-8',
'pdt': 301,
'vol': 9,
'rate': 32
}
result = requests.get('https://tts.baidu.com/text2audio', params=data)
try:
result.json()
except:
return result.content
else:
raise ValueError
if __name__ == '__main__':
try:
bindata = TTS('''测试一下,你好世界!''', 5, '中文', '小萌萌')
except:
print('Error')
else:
with open('result.mp3', 'wb+') as f:
f.write(bindata) #在同级目录写入为mp3文件
#os.startfile('result.mp3') #自动运行生成的mp3
作者:木子欢儿
出处:https://www.cnblogs.com/HGNET/p/16304126.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
部分文章来源于网络,如疏漏未标注原文地址或侵权,请联系进行删除。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!