モデルの比較

Supertonic と SuperClonica:同じモデルで、より速く、よりクリーンに

モデルは同じ Supertonic 3、声もテキストもシードも同じです。ロシア語・英語・ドイツ語の短いチャット文を純正の Supertonic と SuperClonica で読み上げ、速度と音を比べました。

結論から言うと、SuperClonica はグラフィックカードで1.7倍、プロセッサーで1.6倍速く、話し始めまでの無音は0.5秒から0.08秒に縮み、間のノイズを取り除き、語尾が途切れることも大幅に減りました。以下に測定結果、純正版のほうが有利な点、そして実際に聞き比べられる全録音を載せています。

速度

2つのエンジンは同じプロセスで動かし、文ごとに交互に、しかも毎回順番を入れ替えて実行しました。こうすればパソコンのバックグラウンド負荷は両方に同じように影響します。チャットのように毎回新しい文が来る想定で、呼び出しごとに新しいシードを使いました。どちらのエンジンも事前に作成し、ウォームアップ済みです。

グラフィックカードでの高速化は CUDA グラフによるものです。モデル全体を一度記録し、あとは1つの命令で実行します。プロセッサーでは、モデルをマルチスレッド計算向けに書き直しています。SuperClonica はグラフィックカードで10文すべて、プロセッサーで24文すべてにおいて速くなりました。

SupertonicSuperClonica
グラフィックカード、1文あたりの中央値202 ms117 ms
グラフィックカード、10文を連続で2.03 秒1.19 秒
プロセッサー、1文あたりの中央値855 ms530 ms
プロセッサー、8言語24文を連続で22.03 秒14.39 秒

音

モデルが同じなので、声とイントネーションは一致します。違いは言葉の周りで起きることです。前後の無音、間のノイズ、そしてモデルがときどき加える余計な音です。

グラフは1つの文を共通の時間軸で示しています。純正版は最初の単語の前に0.5秒、最後の単語の後に0.5秒以上の無音を残しますが、SuperClonica は0.08秒と0.2秒なので、話し始めが早くなります。単語間の間にあるバックグラウンドノイズも除去されます。

サンプル10文での結果SupertonicSuperClonica
最初の単語までの無音(中央値)0.50 秒0.08 秒
最後の単語の後の無音(中央値)0.63 秒0.20 秒
10ファイルの合計の長さ37.6 秒30.0 秒
単語間の間のノイズ(中央値、ピーク比)−48 dB−92 dB

数千回の生成テストでわかったこと

10文はあくまでサンプルです。以下は、はるかに規模の大きい独自テストの結果です。

  • 文末の余計な音。最後の単語の後に、モデルがクリック音、息、うなり、余分な音節を付け足すことがあります。1800文と1392文の2回のテスト(12言語と18言語、Whisper で認識)では、そうした語尾がそれぞれ27件と26件ありました。SuperClonica の処理後は0件と3件でした。
  • 言葉は削られません。処理結果は音素認識器を使ってモデルの生の出力と照合しています。最近のバージョンでは30以上の言語で25,000回を超える生成を確認し、実際の発話が削られた例は1件もありません。
  • 長文でのつまずきが減少。SuperClonica は自然な区切りでテキストを最大160文字に分割し、純正版は300文字ごとに分割します。160文字以下の分割では単語の繰り返しが1800回の生成中1回、200〜290文字の分割では1〜4%で発生しました。
  • クリッピングなし。モデルはときどきフルスケールを超えるピークを出します。先読みリミッターがそのピークだけを下げます。

語尾の途切れが減少

モデルは最後の音をフル音量のまま切ってしまうことがあります。まるで単語の途中で録音を止めたようです。耳にはクリック音や「飲み込んだ」語尾として聞こえます。SuperClonica はそうした語尾を自然なフェードアウトに整え、音そのものは残します。

チャット文をそれぞれ4つの標準ボイスで読み上げ、両エンジンで声とシードを揃えました。発話の終わりで2ミリ秒以内に25 dB を超えて音量が落ちた場合を途切れとしています。下に3つの例を示します。文末を拡大表示し、破線が発話の終わりを示します。

文末の急な途切れ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 を含む文で、各言語2つのシードを使い、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 モデルは独自のライセンスで配布されています。