MIT App Inventor 中的文字转语音与自定义声音
用 MIT App Inventor 很容易做出会说话的安卓应用:拖入 TextToSpeech 组件并调用 Speak 即可。问题在于声音:它用的是手机自带的声音,每台设备听起来都不一样。
本指南介绍内置组件的用法,以及如何用免费的 SuperClonica 引擎生成音频文件,给应用配上专属的角色、旁白或你自己的声音。注意:SuperClonica 引擎不支持中文朗读,可以用英语等 31 种语言生成。
内置的 TextToSpeech 组件
根据 App Inventor 参考文档,TextToSpeech 用 Speak 朗读消息,用 Stop 停止,并触发 BeforeSpeaking 和 AfterSpeaking 事件。Pitch 和 SpeechRate 的取值范围是 0 到 2,1.0 为正常值。Language 改变的是单词的发音,而不是所说的语言:把语言设为法语去读英文,听起来就像带法国口音的英语。可用的语言和国家取决于设备。
为什么不同手机声音不同
这个组件使用手机自带的语音引擎,所以同一个应用在不同手机上听起来不同,也无法指定某个角色或旁白。做问答、游戏或有辨识度声音的语音助手时,请改为播放录好的音频。
用音频文件实现自定义声音
用免费的 SuperClonica 引擎为应用的固定台词配音:用 python -m pip install superclonica-cpu 安装,然后运行,例如 superclonica --text "Well done! Next level." --voice voice.json --lang en --normalize --output well_done.wav。在设计器中把文件作为 Media 上传。参考文档建议短文件(如音效和短句)用 Sound 组件,长文件用 Player 组件;设置 Source 并调用 Play。可以先在各声音页面用 30 到 100 个字符免费试听。
运行时才确定的文本
对于只有在应用运行时才知道的文本,比如用户名,可以用 Web 组件带上你的密钥把文本发送到 SuperClonica 语音 API,用 SaveResponse 把返回结果保存为文件,再交给 Player 播放。免费密钥每天提供 3 分钟音频;请求格式见你工作区的 Speech API 部分。手机离线时,可保留内置 TextToSpeech 作为备用。
学校项目点子
会说话的单词卡、问答主持人、阅读伙伴或游戏旁白,用几十句预先生成的台词就能做得很好。所有文件使用同一个声音和 seed,应用的声音就始终一致。引擎支持 31 种语言,目前不支持中文。声音库中的角色声音由粉丝制作,使用它们的项目请保持非商业性质。