用Python将文本转换成语音TTS(Text-To-Speech)
将文本转换成语音TTS(Text-To-Speech),最近试了几款TTS引擎,包括pyttsx3、gtts、科大讯飞,做个简单记录。
1. pyttsx3
pyttsx3 - Text-to-speech x-platform使用系统的语音引擎。在Windows下,用Win + r
打开运行窗口,键入regedit
,打开注册表,在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\
,可以看到有3个语音引擎。
- MSTTS_V110_zhCN_HuihuiM
- MSTTS_V110_zhCN_KangkangM
- MSTTS_V110_zhCN_YaoyaoM
但奇怪的是,使用pyttsx3输出的语音引擎只有下面两个。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_ZH-CN_HUIHUI_11.0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_ZIRA_11.0
使用pyttsx3很简单,可以参见Using pyttsx3 examples。
import pyttsx3
engine = pyttsx3.init() # object creation
def main():
voices = engine.getProperty('voices')
for voice in voices:
print(voice.id)
engine.setProperty('voice', voice.id)
engine.say('由联合国原子能委员会(United Nations Atomic Energy Commission)创建')
engine.runAndWait()
值得注意的下,不要忘了加上engine.runAndWait()
,否则程序执行完退出,声音还没生成。
另,将语音保存成文件用engine.save_to_file(audio_text, audio_path)
。改变音量用(实测,没什么效果):
volume = engine.getProperty('volume')
engine.setProperty('volume', volume-0.25)
尽管pyttsx3使用起来很简单,但生成的语音不够自然。
2. gtts
gtts使用谷歌翻译文本转语音的接口。使用也很简单:
from gtts import gTTS
if __name__ == '__main__':
audio = gTTS(text="Hello World", lang='en')
audio.save("test.mp3")
但提示错误gtts.tts.gTTSError: Failed to connect. Probable cause: Unknown
。
3. NeoSpeech
NeoSpeech TTS,官网在这Lifelike Text to Speech (TTS) - ReadSpeaker。好不容易下载(下载链接)下来,安装上,不知道怎么用。在控制面板 --> 语音 --> 添加语音,看来设置是不对的。
4. 科大讯飞
使用科大讯飞的在线语音合成服务,很简单。新用户,在线语音合成可以免费使用1年,5万次交互量(详情见讯飞开放平台-新用户免费礼包)。
从科大讯飞语音合成 - 在线语音合成 - WebAPI 文档 - 调用示例下载Python3版本的demo。简单修改demo,完成自己想要的功能。
(1)发音人
科大讯飞提供5个基础发音人,免费,可以在在线语音合成_免费试用试听下效果。设置参数vcn
(指voice_name
)指定发音人:
讯飞小燕 xiaoyan
讯飞许久 aisjiuxu
讯飞小萍 aisxping
讯飞小婧 aisjinger
讯飞许小宝 aisbabyxu
(2)音频编码
参数aue
(audio encoding)指定音频编码,默认值为raw
,即未压缩的pcm。如果要直接保存为mp3格式,将aue
设为lame
。
LAME is a high quality MPEG Audio Layer III (MP3) encoder
(3)其他业务参数
还可以设置语速speed
、音量volume
、音高pitch
、背景音bgs
等,详情见:语音合成(流式版)WebAPI 文档 接口调用流程https://www.bookstack.cn/read/xfyun-rest_api/5fd15e96ef1b147d.md)下`业务参数说明(business)`小节。
参考资料:
[1] 讯飞开放平台-用户等级中心