Supertonic 与 SuperClonica:同一模型,更快更干净
同一个 Supertonic 3 模型,同样的声音、同样的文本、同样的种子。我们用原版 Supertonic 和 SuperClonica 分别朗读俄语、英语和德语的短聊天句子,比较速度和声音。(Supertonic 3 目前不支持中文,所以测试句子没有中文。)
简而言之:SuperClonica 在显卡上快 1.7 倍,在处理器上快 1.6 倍,开口前的静音从半秒缩短到 0.08 秒,去除了停顿中的底噪,句尾被截断的情况也少得多。下面是测量结果、原版更好的情况,以及全部录音,方便您亲耳对比。
速度
两个引擎在同一个进程中运行,逐句轮流处理,每句都交换先后顺序。这样电脑的后台负载对两者的影响相同。每次调用都使用新的种子,就像聊天里每句话都是新的。两个引擎都提前创建并完成了预热。
在显卡上,加速来自 CUDA 图:整个模型只录制一次,之后用一条命令启动。在处理器上,模型被改写为多线程计算。SuperClonica 在显卡上的全部 10 句、处理器上的全部 24 句都更快。
| Supertonic | SuperClonica | |
|---|---|---|
| 显卡,每句中位数 | 202 毫秒 | 117 毫秒 |
| 显卡,连续 10 句 | 2.03 秒 | 1.19 秒 |
| 处理器,每句中位数 | 855 毫秒 | 530 毫秒 |
| 处理器,8 种语言连续 24 句 | 22.03 秒 | 14.39 秒 |
声音
模型相同,所以音色和语调一致。区别在于词语周围发生的事情:首尾的静音、停顿里的噪声,以及模型偶尔添加的杂音。
图中是同一句话在共同时间轴上的对比。原版在第一个词前保留半秒静音,在最后一个词后保留超过半秒;SuperClonica 只留 0.08 秒和 0.2 秒,因此语音开始得更早。词与词之间停顿中的底噪也被去除。
| 10 个示例句子 | Supertonic | SuperClonica |
|---|---|---|
| 第一个词前的静音(中位数) | 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 即计为截断。下面是三个示例,句尾经过放大,虚线标出语音结束的位置。
| 句尾突然截断 | Supertonic | SuperClonica |
|---|---|---|
| 俄语,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 识别。
| 语言 | Supertonic | SuperClonica |
|---|---|---|
| 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 模型按其自身的许可证发布。