全部文章

· Casimiro Ferreira· 1 分钟阅读

两个声音,所有语言:Miro 与 Dii

  • phoonnx
  • TTS
  • OVOS
  • voice cloning
  • G2P
  • language inclusion

现在就听: 声音演示 会在你的浏览器里现场运行 Miro 和 Dii——挑一种语言, 输入一个句子,然后聆听。无需安装,无需服务器。

人们记住一个助手的声音,胜过记住它的名字。所以,我们与 OpenVoiceOS 合作的核心问题很实际:在每一种语言里,这个助手应该听起来像谁?

答案是 Miro(男声)与 Dii(女声)——两个贯穿 OpenVoiceOS 所支持的每一种语言的声音身份。一个在里斯本配置了助手、之后又切换到德语的用户,应该听到同一个熟悉的说话者。一个品牌声音,所有语言,归社区所有。

一个身份,多种语言

获得多语言声音的惯常做法,是用许多种语言一次性训练单个模型。它管用,但往往会把结果抹糊:口音在语言之间渗透,发音变得含糊,声音失去了母语者的那份清晰。

我们选择更难的路。对每一种语言,我们都构建一个 单语 模型——一个模型,一种语言,被训练来把那一种语言做好。把它们联系在一起的窍门是 声音克隆:每个单语的 Miro 模型都从同一个源身份克隆而来,Dii 也是如此。结果是一个按语言划分的模型家族,它们各自都像母语者一样说话,却全都共享同样的音色、同样的性格、同样的”Miro 感”或”Dii 感”。你得到的是母语级的发音 以及 一个单一可辨识的身份,而不必用其中之一去换另一个。

这些模型用 phoonnx 训练和提供服务,那是我们开放的 TTS 框架——基于 VITS,导出为 ONNX,仅用 CPU。这些声音完全离线运行;没有云,没有 API 密钥,没有数据离开你的硬件。在 OpenVoiceOS 内部,ovos-tts-plugin-phoonnx 插件负责获取并加载它们。要了解完整的硬件与架构来龙去脉,请看 能在土豆上运行的 TTS

使这一切成为可能的 G2P 研究

把一门语言说好,不仅仅关乎声音——它关乎知道书写 本该 如何发音。那正是 字素转音素(G2P) 转换的职责:把书面文本变成模型实际发出的音素序列。我们承接的每一种新语言,都带着它自己的 G2P 研究,而大量真正的工作就存在于那份研究之中。

phoonnx 在这里刻意保持灵活。它可以驱动一整套音素化器——eSpeak、Gruut、Epitran、基于模型的 ByT5 G2P,以及在通用引擎力有不逮之处使用的特定语言工具。这直接连接到我们更广泛的语音学技术栈:我们的 正字法转 IPA 研究 以及我们为葡萄牙语族构建的 葡语系音素化器 都服务于同一个目标——为那些大型 TTS 供应商从未费心仔细建模的语言提供准确的 IPA。当一门语言没有好用的现成音素化器时,那个空白 就是 项目本身。我们先做拼写到声音的研究,然后声音才随之而来。

为每一种被请求的语言提供两个模型

这就是具体的承诺,也是这场合作的核心:对每一种有人请求的语言,我们都会构建两个 TTS 模型——Miro 和 Dii。 不是一张”某天也许”的路线图;而是一项长期承诺。请求一种语言,这对通用声音就会来到它面前。

而且我们指的是 每一种 语言,不只是那些让人舒适、在商业上显而易见的。世界上缺失的声音,很少是那些拥有一亿使用者的语言——它们是那些 濒危和少数族群语言,被主流 TTS 悄悄忽视,因为市场太小、不值一顾。而那些恰恰正是我们想要触及的语言:这些社区从未拥有过一个可以称之为自己的高质量合成声音,也没有理由指望某个硅谷供应商会去提供。

这不是一句留待日后兑现的承诺。截至撰写本文时,Hugging Face 上的 phoonnx TTS 模型合集 已列出 13 种至少拥有一个已发布声音的语言,其中 8 种——巴斯克语、阿拉伯语、欧洲葡萄牙语、阿斯图里亚斯语阿拉贡语弗里西语、奥克语和哥伦比亚西班牙语——已经同时拥有 Miro 与 Dii。

开放且自托管

这些声音是 自由开源的离线且自托管 运行,因此你说的话不会离开你的硬件;而且整个技术栈——引擎、音素化器、G2P 研究、训练好的声音——都是开放的,供一个社区自行取用并长久保有。

如果你的语言还不在列表中,那并不是一扇关上的门——那是一个等待被提出的请求。