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 を開いて、クローンした声でテキストを聴いてみてください。
ベストプラクティスのヒント
- 参考音声 – 静かで背景ノイズの少ないクリアな録音を使用してください。 3〜12 秒で十分です。
- パラメータ調整 –
--style_strengthは FiLM 影響を制御します。声の類似度を高めたい場合は上げてください。 - ストップヘッド – 短い文の場合、早期停止ヘッドが失敗することがあります。
--stop_thresholdや--stop_patienceを下げて信頼性を向上させてください。 - 音韻ベースのテキスト – 可能な限りスペルアウトされた単語を使用し、略語は避けてください。モデルは「CPU」「TTS」は扱えますが、複雑な記号は混乱を招くことがあります。
- 非ストリーム優先 – 最高の音質を求める場合は非ストリーミング API を使用してください。ストリーミングは主に UI レイテンシの目的です。
今後の展望とコミュニティ
- 追加言語への拡張 – 現在のアーキテクチャは任意の音韻表現をサポートします。
- 原音の音声埋め込みの向上 – 事前トークナイズされたクリップではなく、ロウオーディオでの訓練。
- 畳み込み状態のキャッシュ以降の合成速度向上。
- フルトレーニングパイプラインを公開し、コミュニティの貢献を可能に。
このプロジェクトが役立った場合は、作者をサポートしてください: https://buymeacoffee.com/samuelvitorino。
結論
Sopro は、商用モデルが必要とする多くのリソースのほんの一部で、実用的で高速なオープンソース TTS システムを構築できることを示しています。音声アシスタントのプロトタイピング、アクセシビリティ向けナレーション生成、または音声クローン研究の実験に関係なく、Sopro はほとんどの最新 CPU で実行可能な実用的で低コストのエントリーポイントを提供します。
楽しいクローン体験を!
元の記事:
オリジナルを見る