何が起きたのか
ゼロショット音声クローンに対応した120MパラメータのTTS(text-to-speech、テキスト音声合成)モデル sopro-v2-turbo が、Apache 2.0ライセンスで公開されました。開発者は samuel-vitorino 氏で、モデルは Hugging Face でホストされています(Hugging Face モデルカード)。
モデルカードが示す速度は、次の3つです。
- M3 CPU でオフライン 0.24 RTF、ストリーミング 0.21 RTF
- H100 で 0.07 RTF
- ラップトップCPUでのストリーミング時、最初の音声が出るまで**(TTFA)約300ms**
Hugging Face の API が返すリポジトリのメタデータでは、モデルの作成日時は 2026-08-25 10:56:29 UTC、最終更新は 2026-08-27 00:39:57 UTC、API が F32 として集計する Safetensors パラメータ数は 121,574,193 です(Hugging Face API)。PyPI 側の sopro パッケージも 2.0.0 から 2.0.5 までが 2026年8月27日に一斉リリースされており(PyPI sopro)、公開は8月末の出来事です。
「CPUで実時間の5倍速」の出所は、開発者による r/StableDiffusion への告知投稿です。タイトルは「We open-sourced Sopro V2 Turbo - a 120M voice cloning TTS model that runs 5x faster than real time on CPU」で、当ブログのトレンド収集が8月30日朝に取得した記録と一致します。一方、モデルカードが記載しているのはオフライン 0.24 RTF(約4.2倍)とストリーミング 0.21 RTF(約4.8倍)で、「5倍」という数字そのものは配布物には現れません(Hugging Face モデルカード)。$1/0.21 \approx 4.76$ なので、ストリーミング値を整数に丸めた表現とみられます——ただし投稿者が丸め方を明言したわけではありません。以下では、この「5倍」と公称 RTF の数値上の対応を検証します。
「5倍」の分母を分解する
RTF(real-time factor、実時間係数)は、生成に要した時間を生成された音声の長さで割った値です。実時間に対する倍率 $S$ はその逆数になります。
$$\mathrm{RTF} = \frac{T_{\mathrm{gen}}}{T_{\mathrm{audio}}}, \qquad S = \frac{1}{\mathrm{RTF}}$$モデルカードの3つの数字を代入すると、こうなります。
| 条件 | RTF | $S = 1/\mathrm{RTF}$ |
|---|---|---|
| M3 CPU・ストリーミング | 0.21 | 約4.8倍 |
| M3 CPU・オフライン | 0.24 | 約4.2倍 |
| H100・オフライン | 0.07 | 約14.3倍 |
「5倍」に最も近いのは $1/0.21 \approx 4.76$、つまり M3 CPU のストリーミング値です。オフラインで回せば約4.2倍まで落ちます(H100 は約14倍ですが、そもそもCPUの話ではありません)。見出しの数字は CPU の2つの公称値のうち速いストリーミング値を整数に丸めたものとみられ、しかも「CPU一般」ではなく Apple M3 という特定機での、開発者自身による測定です。
CPUの世代とコア数で数倍の差が出る領域なので、手元の Intel や古い ARM のラップトップで同じ4.8倍が出る保証はモデルカードのどこにも書かれていません。
120Mが捨てたもの、拾ったもの
より効くのは、同じ作者の前バージョンとの比較です。旧モデル samuel-vitorino/sopro のモデルカードは、v1.5(2026年2月4日)について 135Mパラメータ・英語のみ、そして CPU で 0.05 RTF(M3ベースモデルで測定、32秒の音声を1.77秒で生成)、ストリーミングTTFA 250ms と記載しています。学習は単一のL40S GPUで、費用は約100ドルだったとされています(Hugging Face samuel-vitorino/sopro)。
同じ M3 クラスの機械での比較として並べると、次のようになります。
| v1.5(2026-02) | v2-turbo(2026-08) | |
|---|---|---|
| パラメータ | 135M | 120M |
| 言語 | 英語のみ | 英語・欧州ポルトガル語・仏語・独語 |
| CPU RTF | 0.05(約20倍) | 0.24 / 0.21(約4.2〜4.8倍) |
| ストリーミングTTFA | 250ms | 約300ms |
| 参照音声の長さ | 3〜12秒 | 5〜20秒 |
| 生成長の上限 | 約32秒(400フレーム) | 30秒/セグメント(長文は分割、総長は無制限) |
パラメータ数は135M→120Mと減っているのに、公表 RTF を単純比較すると v2-turbo の値は v1.5 の約4倍前後大きい(0.05 → 0.21〜0.24)ことになります。ただし両者の測定条件(生成長・Torch 環境・スレッド数など)は揃っておらず、この比をそのまま世代間の性能低下率とはみなせません(詳細は「残された不確実性」)。したがって、「turbo」が旧版よりCPUで速いことを意味する、という解釈は公称値からは支持されません。
代わりに拾ったものが、言語です。v1.5 は英語専用でしたが、v2-turbo は Hugging Face のタグにも en pt fr de が並びます。学習データには Emilia YODAS、LibriTTS-R に加えて FalAR が入っています。FalAR は欧州ポルトガル語の議会審議を約20年分・総量約5,800時間集めたコーパスで、うち4,850時間に話者同一性のアノテーションが付いています(arXiv:2605.27062)。Sopro がそのうちどの範囲・時間数を使ったかは公表されていません。欧州ポルトガル語をブラジルポルトガル語の亜種としてではなく主対象として扱う点が、このモデルの実質的な差別化です。
もう一つ注目したいのは TTFA です。公表 RTF が4倍前後大きくなったのに、TTFA は 250ms → 約300ms と2割程度しか伸びていません。TTFA は最初のチャンクを吐くまでの遅延なので、系列全体のスループットとは支配要因が違う、という当たり前の事実がここに出ています。対話UIの応答開始の体感を左右する主要因の一つは、RTF ではなく TTFA のほうです(もちろん途切れの有無や音質も体感を左右します)。
2ステップまで削った音響ヘッド
では v2-turbo の「turbo」は何に対する turbo なのか。sopro-v2-turbo を公開したのは Halo NeuroAI(研究ブログ名が Halo Research)ですが、Sopro 自体は同社を共同創業した samuel-vitorino 氏が2025年12月に個人プロジェクトとして始めたもので、モデルは同氏個人の Hugging Face アカウントでホストされています(Halo Research『Sopro V2: private, fast, on-device text-to-speech』)。同ブログによれば、最終段階で フローマッチングのソルバーステップを32から2へ削り、音響ヘッドを16倍高速化しています。手法は reflow を用いた自己蒸留で、32ステップ版と比べて品質・話者類似度・明瞭度に測定可能な劣化はなかったとされています——いずれも開発者自身の評価です(Halo Research『Sopro V2: private, fast, on-device text-to-speech』)。なお README は、難しい参照音声では 8〜32 ステップに増やすと品質が上がりうるとも述べています(GitHub README)。
つまり「turbo」は v1.5 との比較を意味する名前ではなく、ソルバーステップを2まで削った最終 reflow モデルに与えられた名称です(ブログは名称の比較対象を明示していません)。この読み替えをすると、先ほどの「v1.5から4倍遅くなった」も納得がいきます。v2 は v1.5 とアーキテクチャが違うのです。v1.5 のモデルカードは Transformer ではなく「WaveNet 風の dilated convolution と軽量なクロスアテンション」を使うと明記していましたが、v2-turbo の config.json を直接読むと構成はこうなっています。
- ARモデル: 512次元・12ブロック・8ヘッド
- 音響DiT: 512次元・深さ8・8ヘッド
- セマンティックエンコーダ: d_model 512・6層
- 話者エンコーダ: stem 128チャネル・3ステージ
- ボコーダ: 512次元・中間1536・14層(非ストリーミングは非因果、ストリーミング版は
causal=trueでルックアヘッド付き) - サンプリングレート 24,000Hz、テキスト語彙 8,192、セマンティック語彙 4,375
ストリーミングは chunked attention と因果ボコーダの組み合わせで実現されており、リポジトリには vocoder.safetensors と vocoder_streaming.safetensors の2本が別々に置かれています。モデルカードが「ストリーミング経路はオフライン経路とビット単位で一致しない」と明記しているのは、この二本立ての構造に対応します。
なお「120M」はパラメータ数であって配布サイズではありません。Hugging Face API が返すリポジトリ総使用量は 764,558,393 バイト(約729MiB)で、本体・セマンティックエンコーダ・話者エンコーダ・ボコーダ2本が別ファイルとして同梱されています。ただしこれは HF リポジトリ全体の量で、実際の転送・端末占有量はバックエンドで変わります(ブラウザ版は ONNX・モバイルでは量子化版を使用)。オンデバイス配布の検討では「120M」ではなくこちら側の数字を見るべき、という目安です。
オンデバイス音声UIとして使えるか
実務観点で評価できる材料を整理します。
使える方向の材料。 Apache 2.0 という制約の緩いライセンス、ONNX ランタイムによるブラウザ内実行(サーバ不要のデモが samuel-vitorino.github.io/sopro で公開)、pip install -U sopro で入る配布、CPU / CUDA / MPS の各デバイス対応、5〜20秒の参照音声だけで済むゼロショットクローン。TTFA 約300ms は、音声アシスタントの応答開始としては許容範囲に入る水準です。
慎重になるべき材料。 モデルカード自身が挙げる制約が率直です。ウォーターマークを入れていないこと、テキストフロントエンドが意図的に最小限で略語や数字の読み上げを誤りうること、混在言語のテキストが弱点であること、ストリーミング経路とオフライン経路が一致しないこと。加えて日本語は対応4言語に含まれません。
普及度も現時点では小さい規模です。Hugging Face API 上のダウンロード数は、8月30日の取得時点で81でした(この値はユニーク利用者数ではなく、時間とともに変動します)。公開から数日という時期を差し引く必要はありますが、広く検証された実績があるとは言えない段階です。
ベンチマークについては、Halo Research のブログが Seed-TTS-eval test-en、LibriSpeech test-clean(F5-TTS のプロトコル)、MiniMax の多言語テストセットの3つで評価し、WER を Whisper large-v3 で、話者類似度を WavLM ベースの話者照合モデルで計算したと説明しています。Seed-TTS test-en の表では Sopro V2 Turbo(120M・2ステップ)が WER 1.65 / SIM 0.651 で、F5-TTS(336M・32ステップ)の WER 1.83 / SIM 0.67 と並び、Qwen3-TTS 1.7B の WER 1.24 には届きません。同ブログはこれを「3〜14倍大きいモデルに対して明瞭度で SOTA 水準」と表現していますが、これは開発者自身の評価です。Sopro 各行の数値は開発者自身の測定で、第三者による再現は確認できていません。また、この表が全モデルを Halo が同一環境で測り直した比較であることを示すものでもありません。
残された不確実性
v1.5 と v2-turbo の RTF は同条件の測定ではない可能性があります。 v1.5 のカードは「32秒の音声を1.77秒で生成」と測定条件の一端(生成音声長)を示しますが、v2-turbo のカードは生成長すら示しません。両モデルカードとも、スレッド数や入力テキストの長さは記載していません(Hugging Face samuel-vitorino/sopro、sopro-v2-turbo モデルカード)。同じ M3 という記述だけで4〜5倍の差を厳密な性能比較として扱うのは無理があります。
「M3」の粒度も不明です。 v1.5 のカードは「M3ベースモデル」と書いていますが、v2 は単に「M3 CPU」です。同じチップ名でも構成差があり、この差が数値にどう効いているかは追えません。
Sopro の速度・品質の数値は開発者測定です。 RTF・TTFA と Seed-TTS 表の Sopro 行のいずれも、第三者による再現は確認できていません。導入判断に使うなら、自前のテキストと音声で実測することが前提になります。
日本語の扱いは未知数です。 対応言語に日本語が含まれない以上、日本語テキストを投げたときの挙動はモデルカードの保証範囲外です。
ウォーターマークがないことは運用上のリスクです。 5〜20秒の音声で声を複製できるモデルに検出手段が付いていない構成は、なりすまし対策を利用側で用意する必要があることを意味します。開発者自身が「なりすましに使わないでほしい」と注意を促していますが、それは技術的な制約ではありません。
まとめ
「CPUで実時間の5倍速」は、$1/0.21 \approx 4.8$ という M3 CPU のストリーミング値を丸めた表現とみられます。同じモデルカードにはオフライン 0.24 RTF(約4.2倍)も並んでおり、CPU の2つの測定値のうち速いほうが告知の見出しになったかたちです(H100 の0.07はそもそもCPUの話ではありません)。
そして同じ作者の v1.5 は、英語専用・135Mで CPU 0.05 RTF、すなわち約20倍を公称していました。v2-turbo は欧州ポルトガル語を含む4言語対応(総量約5,800時間の議会音声コーパス FalAR を学習データに挙げる)を含むアーキテクチャの全面改修で、公称 RTF の単純比較では v1.5 側の値が小さいまま——速度面の見返りは、公称値の上には現れていません。「turbo」も v1.5 に対する速さの主張ではなく、2ステップまで削った最終モデルへの命名でした。
Apache 2.0、ブラウザ内 ONNX 実行、TTFA 約300ms という組み合わせは、オンデバイス音声UIの検討材料としては十分に具体的です。ただし日本語は対象外、ウォーターマークなし、ダウンロード81件という現況を踏まえると、いま採用可否を判断できる段階ではなく、自前のテキストと音声で TTFA と RTF を実測してからの話になります。
主要出典
- samuel-vitorino/sopro-v2-turbo — Hugging Face モデルカード(2026-08-27最終更新)— 120Mパラメータ、Apache 2.0、0.24/0.21/0.07 RTF、TTFA約300ms、対応4言語、学習データ、制約事項の一次情報
- Hugging Face Models API — sopro-v2-turbo(2026-08-30取得)— Safetensorsパラメータ数121,574,193(F32集計)、作成2026-08-25、更新2026-08-27、リポジトリ総使用量764,558,393バイト
- sopro-v2-turbo config.json — ARモデル・音響DiT・ボコーダの各次元、24kHzサンプリング、ストリーミングボコーダの
causal=true設定 - samuel-vitorino/sopro — Hugging Face モデルカード(v1.5、2026-02-04)— 135M・英語のみ・CPU 0.05 RTF・TTFA 250ms・学習費用約100ドルの記載
- 開発者の告知投稿(r/StableDiffusion) — タイトル「…runs 5x faster than real time on CPU」。「5倍」の出所(当ブログの収集記録で取得時タイトルを確認)
- PyPI: sopro — 2.0.0〜2.0.5 が2026-08-27、1.5.0 が2026-02-03(UTC。JSTでは2-04)、1.0.0 が2026-01-07 というリリース履歴
- Halo Research『Sopro V2: private, fast, on-device text-to-speech』 — ソルバー32→2ステップのreflow自己蒸留、評価プロトコルと Seed-TTS 表の数値
- arXiv:2605.27062 FalAR: A Large-scale Speaker-Annotated European Portuguese Speech Corpus of Parliamentary Sessions — 学習データの1つ、欧州ポルトガル語議会音声5,800時間
関連する過去記事
- 同点52は『互角』か──Qwen3.8-27BがGPT-5.6 Lunaと並んだ指数と、推奨4bitが17〜19GBで16GBカードに載らない話 — オープンウェイトモデルの「パラメータ数」と「実際に手元へ載るか」のギャップを扱った回。今回の「本体120M(F32で約486MB)に補助モデルとボコーダ2本が加わって総量約729MiB」という構図と同じ論点です
- 14倍のはずが実タスクでは5.6倍──OpenAIが売り始めた『速度というSKU』とCerebras依存の内訳 — 公称速度と実測速度の分母がずれる構図の先行例。RTF 0.21 と 0.24 の使い分けと読み比べると差分が見えます
- 1.9倍と3.6倍は別のモデルの数字──OpenAI Jalapeñoの『kWあたり』は公称TDPで正規化されている — 複数ある測定値のうち有利な1つが見出しになる、という同型の問題を扱っています