前言
弄一个 TTS 的想法在好几个爱好领域都产生过,最初是看到了 Real-Time-Voice-Cloning ,再往后推可能是折腾 VNR 的时候,最近一次则是在福吧刷到的 宁宁小剧场(1) 。
顺藤摸瓜,看了 纸片人与机器学习 列表的 4 条视频之后,决定开干。
项目架构
- 主程序: MoeGoe
- GUI: MoeGoe_GUI
- 预训练模型: TTSModels
使用教程
其实有了 GUI,操作非常简单,打开 GUI 然后选择 MoeGoe.exe
和模型配置文件就好了。
语言合成
新版使用方法
直接在「文本」右侧的文本框输入内容,唯一需要注意的就是要在中/日文两端加上 [ZH]
/[JA]
进行区分。
[ZH]你是我的[ZH][JA]おにちゃん[JA][ZH]吗?[ZH]
PS:试了一下 1.1.0 版本更新的功能 ,双击文本框打开高级模式,可以编辑文本和声调。没成功,不知道为啥 因为 1.2.0 版更新 改成右击了。
一些隐藏操作:
- 右击文本框可以清理文字、调整时长和噪声比等参数设置,GUI 2.1.2 及以上版本还可以输入国际音标合成其他语言
- To LOVE Ru 的 TTS 模型可以在清理界面自定义回声,在需要添加回声效果的音节后面加上
@
或#
,对应室内和室外回声 - 光标位于文本框内可以按 Ctrl + 1/2/3/4/5 快速输入
[ZH]
/[JA]
/[KO]
/[SA]
/[EN]
等语言标记块。
传统使用方法
需要对文本进行预处理
日语
非常简单,下载 japanese_g2p,然后直接运行下面的命令就可以转换成带语调和分词的罗马字:
.\japanese_g2p.exe -rsa 授業中に出したら、学生生活終わるなり
不过需要注意,可执行文件路径不能包含中文。
更进一步的说明(虽然也没详细多少),可以查看 基于 VITS 的中日双语模型尝试(day1-2) 。
韩语
没实际试过,根据 基于 VITS 的韩语语音合成 的说法,需要以下几步:
- 用 jamo 分词
- 将冷门的双收音拆成两个字母
- 数字念法: 枚举(检测数字后面的量词判断训读还是音读)
中文
好麻烦,快跑
- jieba: 分词
- cn2an: 将数字转为汉字
- pypinyin: 将汉字转为注音符号1
- 各种骚操作
衍生项目
- MoeGoe 底层程序: tacotron2-japanese (DIY 语音)
- vits ( interactive Colab demo )
- Moe TTS And Voice Conversion Using VITS Model : Hugging Face demo
- MoeGoe Azure Cloud Function API (仅支持日韩)
- emotional-vits: VITS 情感控制语音合成
比起拼音,注音符号的标注更加规整;并且有效区分了拼音一字多音和简化拼读的问题 ↩︎