模型对比

Supertonic 与 SuperClonica:同一模型,更快更干净

同一个 Supertonic 3 模型,同样的声音、同样的文本、同样的种子。我们用原版 Supertonic 和 SuperClonica 分别朗读俄语、英语和德语的短聊天句子,比较速度和声音。(Supertonic 3 目前不支持中文,所以测试句子没有中文。)

简而言之:SuperClonica 在显卡上快 1.7 倍,在处理器上快 1.6 倍,开口前的静音从半秒缩短到 0.08 秒,去除了停顿中的底噪,句尾被截断的情况也少得多。下面是测量结果、原版更好的情况,以及全部录音,方便您亲耳对比。

速度

两个引擎在同一个进程中运行,逐句轮流处理,每句都交换先后顺序。这样电脑的后台负载对两者的影响相同。每次调用都使用新的种子,就像聊天里每句话都是新的。两个引擎都提前创建并完成了预热。

在显卡上,加速来自 CUDA 图:整个模型只录制一次,之后用一条命令启动。在处理器上,模型被改写为多线程计算。SuperClonica 在显卡上的全部 10 句、处理器上的全部 24 句都更快。

SupertonicSuperClonica
显卡,每句中位数202 毫秒117 毫秒
显卡,连续 10 句2.03 秒1.19 秒
处理器,每句中位数855 毫秒530 毫秒
处理器,8 种语言连续 24 句22.03 秒14.39 秒

声音

模型相同,所以音色和语调一致。区别在于词语周围发生的事情:首尾的静音、停顿里的噪声,以及模型偶尔添加的杂音。

图中是同一句话在共同时间轴上的对比。原版在第一个词前保留半秒静音,在最后一个词后保留超过半秒;SuperClonica 只留 0.08 秒和 0.2 秒,因此语音开始得更早。词与词之间停顿中的底噪也被去除。

10 个示例句子SupertonicSuperClonica
第一个词前的静音(中位数)0.50 秒0.08 秒
最后一个词后的静音(中位数)0.63 秒0.20 秒
10 个文件总时长37.6 秒30.0 秒
词间停顿的底噪(中位数,相对峰值)−48 dB−92 dB

数千次生成测试的结果

十个句子只是样本。以下结果来自我们规模大得多的自有测试。

  • 句尾杂音。模型有时会在最后一个词后加上咔嗒声、呼吸声、嗡嗡声或多余的音节。在 1800 句和 1392 句的两轮测试中(12 种和 18 种语言,用 Whisper 识别),这样的结尾分别有 27 个和 26 个。经过 SuperClonica 清理后,只剩 0 个和 3 个。
  • 不会截掉词语。清理结果会用音素识别器与模型的原始输出核对。在最近的版本中,覆盖 30 多种语言的 25,000 多次生成里,确认截掉真实语音的情况为 0。
  • 长文本更少卡顿。SuperClonica 在自然停顿处把文本切成最多 160 个字符的片段,原版按 300 个字符切分。片段不超过 160 个字符时,1800 次生成中只出现 1 次重复词;片段为 200–290 个字符时,出现概率为 1–4%。
  • 没有削波。模型有时会产生超过满刻度的峰值。前瞻限幅器只压低这些峰值。

句尾截断更少

模型有时会在最大音量时突然切断最后一个音,就像录音在词中间被关掉。听起来像一声咔嗒,或是被吞掉的结尾。SuperClonica 会把这类结尾处理成自然的淡出,同时保留声音本身。

我们使用聊天句子,每句用 4 个标准声音朗读,两个引擎的声音和种子相同。语音结尾处 2 毫秒内音量下降超过 25 dB 即计为截断。下面是三个示例,句尾经过放大,虚线标出语音结束的位置。

句尾突然截断SupertonicSuperClonica
俄语,312 条37 · 11.9%3 · 1.0%
英语,300 条53 · 17.7%6 · 2.0%
德语,132 条14 · 10.6%0 · 0.0%
合计,744 条104 · 14.0%9 · 1.2%

数字

原版把数字原样交给模型。模型能读对小数字,但在部分语言中会读错大数字。SuperClonica 在 27 种语言中把数字转换成单词朗读。

数字测试使用一个包含 3、25、2024 和 150 的句子,每种语言两个种子,用 Whisper 识别。

语言SupertonicSuperClonica
es两个种子下“150”都含糊不清正确
fr两个种子下“150”都听起来像“105”正确
de其中一个种子下“150”变成“eine 50”正确
pl其中一个种子下“2024”读错正确
ru, uk, it正确正确

亲耳听听

测量用到的全部句子。每段录音下方是它的音量包络,语音前后的静音以阴影标出。

原版 Supertonic 更好的地方

SuperClonica 并非处处领先。以下是我们已知的取舍。

  • 启动。SuperClonica 启动时要在显卡上检查 CUDA 图,并为处理器改写模型,因此启动更慢:显卡上 9.5 秒(原版 1.2 秒),处理器上 4.0 秒(原版 0.9 秒)。建议只创建一次引擎并一直保留。
  • 显卡上的长段落。文本会被切成最多 160 个字符的片段,所以长段落可能比原版稍慢;在我们的测量中没有出现这种情况。作为交换,卡顿更少。
  • 数字不变格。俄语“в 2024 году”会按基数而不是序数朗读,英语年份听起来像普通数字。参数 numbers=False 会像原版一样把数字原样交给模型。

测量方法

未做后处理的 Supertonic 1.3.1(模型 supertonic-3)对比使用默认设置的 SuperClonica 0.6.23。两个引擎都以 1.05 倍速、8 步运行,每句的声音和种子相同。显卡为 RTX 5070 Ti,ONNX Runtime GPU 1.26(10 轮)。处理器为 Ryzen 7 5800X,两者均为 4 线程,8 种语言的 24 个聊天句子(2 轮)。

测试用的是日常工作的电脑,开着其他应用。在空闲的机器上,绝对毫秒数会更低,但比例保持不变。声音指标来自显卡上的另一轮测量,静音和底噪按 10 毫秒帧、相对句子峰值计算。

SuperClonica 是 Supertonic 的独立衍生项目,不是 Supertone 的官方发布。Supertonic 3 模型按其自身的许可证发布。