3 ポイント 投稿者 GN⁺ 2026-01-10 | 1件のコメント | WhatsAppで共有
  • Sopro TTS は英語ベースの軽量な テキスト音声変換モデル で、ゼロショット音声クローニングとストリーミング生成をサポート
  • 1億6900万パラメータを持ち、CPUで 0.25 RTF の速度で30秒の音声を約7.5秒で生成
  • 3〜12秒の参照音声だけで話者の声を複製でき、WaveNetスタイルの dilated conv と軽量な cross-attention 構造を使用
  • 単一の L40S GPU で学習された低予算プロジェクトで、データ品質を改善すれば性能向上の余地あり
  • ストリーミングおよび非ストリーミングモード、CLI・Python API・Webデモをすべてサポートしており、開発者の実験や統合への活用性が高い

Sopro TTS 概要

  • Sopro はポルトガル語で「息吹」を意味し、軽量な英語TTSモデルとして開発
    • Transformer の代わりに dilated convolution と cross-attention を組み合わせた構造
    • 単一の L40S GPU で学習された個人プロジェクト
  • 主な特徴
    • 169Mパラメータストリーミング対応ゼロショット音声クローニング
    • CPU基準で 0.25 RTF、30秒の音声を7.5秒で生成
    • 3〜12秒の参照音声で音声クローニングが可能

インストールと実行

  • 最小限の依存バージョンのみが指定されており、別途環境を作成せずにインストール可能
    • 例: torch==2.6.0 バージョンでは M3 CPU で約3倍の性能向上
  • インストール方法
    • PyPI: pip install sopro
    • GitHub リポジトリ: git clone 後に pip install -e .

使用例

  • CLI 実行例
    • テキスト、参照音声、出力ファイルを指定可能
    • --style_strength, --no_stop_head, --stop_threshold, --stop_patience などの詳細制御パラメータを提供
  • Python API 例
    • SoproTTS.from_pretrained("samuel-vitorino/sopro", device="cpu") でモデルを読み込み
    • 非ストリーミングストリーミングの両方をサポート
    • ストリーミングモードでは、生成された音声チャンクを順次結合可能

インタラクティブなストリーミングデモ

  • インストール後、uvicorn demo.server:app コマンドでローカルサーバーを起動
  • または Docker でビルドおよび実行可能
    • docker build -t sopro-demo .
    • docker run --rm -p 8000:8000 sopro-demo
  • ブラウザで http://localhost:8000 にアクセスするとデモを確認可能

注意事項と限界

  • 出力の一貫性が不足する可能性があり、パラメータ調整が必要
  • 音声クローニング品質はマイク品質と周囲の騒音に大きく依存
  • 非ストリーミング版のほうが高音質
  • 生成長は約32秒(400フレーム) に制限され、超過すると幻覚的な出力が発生
  • torchaudio 使用時は ffmpeg が必要soundfile の使用を推奨
  • 学習データは 事前トークナイズ済みの形式で、元の音声は保存容量の問題により破棄済み
  • 今後 学習コードの公開および多言語対応の拡大 を計画していると述べられている

学習データ

  • Emilia YODASLibriTTS-RMozilla Common Voice 22MLS データセットを使用

参考および基盤技術

  • Mimi Codec (Kyutai)WaveNetAttentive Stats PoolingAudioLMCSM などの研究およびコードを基盤として活用

1件のコメント

 
GN⁺ 2026-01-10
Hacker Newsのコメント
  • 素晴らしくて実用的なプロジェクトだと思う
    個人的には、Chatterbox-TTS-Server が最良の代替だと思っている
    速度は遅いが、音質はかなり高い

    • 私は IndexTTS2 の方が好み
      このモデルは 音声クローニング と感情ベクトルによる手動の感情制御が可能で、非常に強力なツールだと感じる
      現在進行中のモデルオーケストレーションプロジェクトで特に役立った
      外部の感情分類モデルが LLM のペルソナと TTS 出力を同時に制御し、一貫性を維持する
      感情状態によって「記憶」の検索確率も変化するが、IndexTTS2 ほど細かな制御ができる TTS はほとんどない
    • ただし Chatterbox-TTS の出力品質ははるかに優れている
      Sopro TTS の出力は GitHub の動画を見る限り深刻に悪く、実用には耐えないレベルだ
      一方で Chatterbox は驚くような結果を出す
      私の GPU は RTX5090 だが、1秒の生成に約2秒のランタイムで非常に速い
      1つ目のサンプル2つ目のサンプル を参考にできる。後者はユーチューバー ArbitorIan の声をクローニングしたデモだ
  • 本当にすごい!
    私はローカルで Kokoro (82M) を使っているが、動作も速く 音質 も素晴らしい

    • 誰か良い オープンソースの音声アシスタントスタック を知らない?
      私は ricky0123/vad で音声アクティベーションを処理し、Web Speech API で高速認識した後に商用 TTS を使っている
      まだオープンソースでは速度の良いものを見つけられていない
    • ブラウザで動く Kokoro-JS も使ってみたが、レイテンシ が大きすぎて、欲しい言語もサポートしていなかったのが残念だった
  • zero-shot」がどういう意味なのか気になった

    • zero-shot は、単一のプロンプト(またはファイル形式の追加コンテキストを含む)でモデルを動かす方式だ
      few-shot はいくつかの例を与えてモデルを誘導することで、multi-shot は複数回のプロンプトと修正の過程を経るものだ
    • この場合は、別の 音声サンプル を与えなくても良いクローンを得られる、という意味に見える
  • 長いコンパイルなしで Mission Impossible 級の音声クローニングを実現したような感じだ
    関連する YouTube動画ことば遊びの詩 も共有しておく

  • 英語で試してみたが、かなり впечатляющийだった
    低予算 のプロジェクトとしては驚くべき結果で、使うのもとても簡単だった

    • ただし英語専用なので、他の言語は試せなかった
      ドイツ語版があればぜひ使ってみたい
  • 制約を考えればかなり印象的な結果だ
    もっと強力なバージョン(アーティファクトが少なく、より多くの計算資源を必要とするもの)を公開する予定があるのか気になる
    普段は Chatterbox を使っているが、これが高音質に発展すれば良い代替になりそうだ

    • これは私の サイドプロジェクト
      計算コストはかなり高いが、コミュニティの反応が良ければさらに発展させるつもりだ
      ちなみに Chatterbox は素晴らしいモデルであり、インスピレーションの源でもある
  • 「zero-shot」の意味が気になった

    • こういう *-shot 用語は、実質的に 意味のない業界用語 だと思う
      Big O 記法よりもさらに恣意的だ
    • Wikipedia の定義 によれば、zero-shot とは学習時に見ていないクラスのサンプルをテスト時に予測する問題設定のことだ
      つまり、モデルが P(Audio|Voice) の条件付き確率を学習し、訓練中に見ていない音声クラスに対してサンプリングできるなら zero-shot だ
      参照オーディオを与えることはモデルの重みを変えるのではなく、コンテキストを与えること に当たる
  • オーディオを聴いてみたが、音質があまりにもひどく て驚いた
    15年前のコンピュータ音声以下で、なぜ人々が良いと言うのか理解できない
    複数のブラウザで試したが同じだった

    • 一部の リファレンス音声 が品質低下を引き起こす可能性がある
      そこまでひどいなら別の問題があるかもしれないので、一緒に見てみたい
    • もしこのサンプルがデモ中で最高のものなら、発音の歪み がひどくて即座に拒否感があった
    • 一瞬 RFK の声かと思った
    • いくつもの音声を試したが、生成されたオーディオはまったく似ておらず、まともな声 ですらなかった
    • 私も聴きながら信じがたかった。1分以上聴くのがつらいほど 不快な音質 だった
  • 本当に素晴らしい技術だ
    今後さらに良くなると思う
    ただ、暫定措置でもいいので ざらついた音色(razziness) を減らす簡単なオーディオ後処理を追加するとよさそうだ

  • こうしたモデルの中に、speech-to-speech のボイスチェンジャー のように動くものがあるのか気になる
    つまり、1つの固定音声サンプル(プロンプト)とリアルタイムの入力オーディオストリームを受け取り、入力の声をプロンプトの トーンと音色 に変換する方式だ
    V-tuber のような用途ではプロンプトを頻繁に変える必要がないので、1回の fine-tuning で固定の音色を当てることもできそうだ

    • Chatterbox TTS が「voice cloning」モードでこれをサポートしている
      ただしストリーミング処理は自分で実装する必要がある
      オーディオ A(スタイル)と B(コンテンツ)を入力し、A の 音色 と B の 発音・抑揚 を組み合わせる
      こうしたモデルは実質的に「TTS」というより S+STS (speech+style to speech) と見る方が適切だ
    • オープンソースは分からないが、ElevenLabs はかなり前からこのアイデアを実装している
      公式ブログ に詳しく説明されている
    • RVC (Retrieval Voice Conversion) も良いオープンソースの音声変換器だ
      ただし元の作者と開発者の間で対立があるので、メインフォークは避けて、英語で管理されている最新フォークを探すのがよい
    • 実際、多くの V-tuber がこうした技術を使っているので、安定したソリューションは確実に存在するはずだ