使用Python和百度对外共享的TTS接口实现文本转语音
2022/5/25 1:23:07
本文主要是介绍使用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
这篇关于使用Python和百度对外共享的TTS接口实现文本转语音的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程