Sopro – 軽量テキスト音声合成(Zero‑Shot Voice Cloning)

Sopro – 軽量テキスト音声合成(Zero‑Shot Voice Cloning)

Sopro は、拡張畳み込みネットワーク(WaveNet に似た構造)と軽量クロスアテンション層を採用した、軽量で低コストの英語テキスト音声合成モデルです。重い Transformer スタックに代わる構造を採用しています。Samuel Vitorino によってサイドプロジェクトとして開発され、1 台の L40S GPU で訓練され、Apache‑2.0 ライセンスの下でリリースされています。


なぜ Sopro が際立つのか

特徴 重要性
169 Mパラメータ M3 CPU (.25 RTF) で快適に動作し、まだ可聴品質を提供できるほど小さい
ストリーミング合成 会話型 AI とライブデモのリアルタイム生成に対応
ゼロショット音声クローン 3〜12 秒の参照音声だけで新しい声をクローンできる – ファインチューニングは不要
高速 CPU 合成 M3 ベースモデルで約 7.5 秒で 30 秒の音声を生成 – エッジデバイスに最適
クロスアテンション & Conv ベース Transformer アテンションのオーバーヘッドを持たずに性能を維持

Sopro はすべての指標で最先端ではありませんが、限られたハードウェアで使える TTS システムを構築し、コミュニティで共有できることを示しています。


インストール & クイックスタート

PyPI から

pip install sopro

リポジトリから

git clone https://github.com/samuel-vitorino/sopro
cd sopro
pip install -e .

⚙️ 注意: Apple Silicon では torch==2.6.0 を使用し、torchvision を省略すると約 3 倍の速度向上が期待できます。

CLI の例

soprotts \
    --text "Sopro は 169 万パラメータで構成された軽量のテキスト読み上げモデルです。主な特徴はストリーミング、ゼロショット音声クローン、CPU で 0.25 のリアルタイム係数です。" \
    --ref_audio ref.wav \
    --out out.wav

Python API – 非ストリーミング

from sopro import SoproTTS

tts = SoproTTS.from_pretrained("samuel-vitorino/sopro", device="cpu")

wav = tts.synthesize(
    "こんにちは! これは非ストリーミングの Sopro TTS の例です。",
    ref_audio_path="ref.wav",
)

tts.save_wav("out.wav", wav)

Python API – ストリーミング

import torch
from sopro import SoproTTS

tts = SoproTTS.from_pretrained("samuel-vitorino/sopro", device="cpu")

chunks = []
for chunk in tts.stream(
    "こんにちは! これはストリーミングの Sopro TTS の例です。",
    ref_audio_path="ref.mp3",
):
    chunks.append(chunk.cpu())

wav = torch.cat(chunks, dim=-1)
tts.save_wav("out_stream.wav", wav)

インタラクティブデモ

Sopro は軽量 FastAPI デモを付属しており、ローカルまたは Docker で実行できます。

pip install -r demo/requirements.txt
uvicorn demo.server:app --host 0.0.0.0 --port 8000

または Docker で:

docker build -t sopro-demo .
docker run --rm -p 8000:8000 sopro-demo

http://localhost:8000 を開いて、クローンした声でテキストを聴いてみてください。


ベストプラクティスのヒント

  1. 参考音声 – 静かで背景ノイズの少ないクリアな録音を使用してください。 3〜12 秒で十分です。
  2. パラメータ調整--style_strength は FiLM 影響を制御します。声の類似度を高めたい場合は上げてください。
  3. ストップヘッド – 短い文の場合、早期停止ヘッドが失敗することがあります。--stop_threshold--stop_patience を下げて信頼性を向上させてください。
  4. 音韻ベースのテキスト – 可能な限りスペルアウトされた単語を使用し、略語は避けてください。モデルは「CPU」「TTS」は扱えますが、複雑な記号は混乱を招くことがあります。
  5. 非ストリーム優先 – 最高の音質を求める場合は非ストリーミング API を使用してください。ストリーミングは主に UI レイテンシの目的です。

今後の展望とコミュニティ

  • 追加言語への拡張 – 現在のアーキテクチャは任意の音韻表現をサポートします。
  • 原音の音声埋め込みの向上 – 事前トークナイズされたクリップではなく、ロウオーディオでの訓練。
  • 畳み込み状態のキャッシュ以降の合成速度向上。
  • フルトレーニングパイプラインを公開し、コミュニティの貢献を可能に。

このプロジェクトが役立った場合は、作者をサポートしてください: https://buymeacoffee.com/samuelvitorino


結論

Sopro は、商用モデルが必要とする多くのリソースのほんの一部で、実用的で高速なオープンソース TTS システムを構築できることを示しています。音声アシスタントのプロトタイピング、アクセシビリティ向けナレーション生成、または音声クローン研究の実験に関係なく、Sopro はほとんどの最新 CPU で実行可能な実用的で低コストのエントリーポイントを提供します。

楽しいクローン体験を!

この記事を共有