用ibm的watson tts实现覆盆子pi的简单文本到语音接口
watson-text-talker的Python项目详细描述
沃森文本通话器
关于
我为一个运行在树莓pi 3b上的基于语音的机器人创建了这个界面,我正在使用aiy语音帽,但是我对谷歌提供的机器人语音非常不满意。在研究了其他一些语音选项后,我决定使用IBM的Watson,因为它具有高质量的韵律和语调。为了达到我的目的,我添加了一些特性,并决定其他特性可能会在我的努力中找到一些好处。该软件包应适用于其他可连接互联网和声音输出的设备。
安装
pip3 install watson-text-talker --user
获取IBM credentials对于watson文本到语音,lite计划是free
简单使用
fromwatson_text_talkerimport*text_talker=TextTalker(username='your-watson-tts-credentials-username',password='your-watson-tts-credentials-password')text_talker.say("Hello world!")
功能
语音文件缓存
- 降低云层往返次数
- 降低成本
短语分组
- 分段短语/句子
- 每个细分市场都有自己的重要因素
重要因素
- 一个短语被发声的可选百分比
安静水平
- 可选的静音水平因子可应用于所有可选短语
- 增加或减少可选短语被发声的可能性
使用高质量的waston语音
- 非常逼真的声音,有适当的节奏和语调
- 语音选择:see here for selection available
- 免费等级计划:无需信用卡,每月10000个字符,无需支付任何费用
语音文件缓存
包总是将新短语缓存到文件中。缓存目录默认为./voice_mp3s
,但也可以在TT-config中定义。为了调整文件名,我把这个短语删掉了。这样做的好处是可以让人读懂。唯一需要注意的是这个短语必须限制在255个字符以内。
短语分组
短语分组基于元组数组。
fromwatson_text_talkerimport*text_talker=TextTalker(username='credentials-username',password='credentials-password')importance=TT_Importance()grouping_example=[(importance.SAY_30_PERCENT,"I'm your assistant."),(importance.SAY_50_PERCENT,"How are you?"),(importance.SAY_ALWAYS,"Nice to meet you")]text_talker.say_group(grouping_example)
元组由文本短语的重要性组成。
重要因素
# TT_Importance is a class of numeric constantsSAY_ALWAYS=1SAY_90_PERCENT=2SAY_80_PERCENT=3SAY_70_PERCENT=4SAY_60_PERCENT=5SAY_50_PERCENT=6SAY_40_PERCENT=7SAY_30_PERCENT=8SAY_20_PERCENT=9SAY_10_PERCENT=10SAY_NEVER=11
如上所述,我们可以简单地说:
fromwatson_text_talkerimport*text_talker=TextTalker(username='credentials-username',password='credentials-password')grouping_example=[(8,"I'm your assistant."),(6,"How are you?"),(1,"Nice to meet you")]text_talker.say_group(grouping_example)
安静水平
该包包括一个全局应用的quite level
,它增加或减少了可选短语被发声的可能性。
fromwatson_text_talkerimport*text_talker=TextTalker(username='credentials-username',password='credentials-password')importance=TT_Importance()grouping_example=[(importance.SAY_30_PERCENT,"I'm your assistant."),(importance.SAY_ALWAYS,"Nice to meet you")]text_talker.quiet_level=+2text_talker.say_group(grouping_example)
在上面的例子中,I'm your assistant
短语只会说10%的时间,因为+2指定为安静级别。不影响Nice to meet you
。
配置
使用tt_config类覆盖配置默认值
# TT_Config's standard defaultsUSERNAME='--watson tts credentials username goes here--'PASSWORD='--watson tts credentials password goes here--'TTS_VOICE='en-US_AllisonVoice'TTS_ACCEPT='audio/mp3'CACHE_DIRECTORY='voice_mp3s'CACHE_DIRECTORY_IS_RELATIVE=TrueVOICE_FILE_EXTENSION='mp3'
像这样使用:
fromwatson_text_talkerimport*config=TT_Config()config.CREDENTIALS_USERNAME='your watson credentials'config.CREDENTIALS_PASSWORD='your watson password'config.TTS_Voice='en-US_MichaelVoice'congig.CACHE_DIRECTORY='custom_cache'text_talker=TextTalker(config=config)text_talker.say("Hello world!")
归属
- pygame用于处理MP3语音文件
- python-slugify用于创建缓存文件名