GPT-SoVITS 実践分析
Pre-trainingとFine-tuningが実際のコードでどう動作するか
GPT-SoVITSは1分分の音声だけで話者の声を複製できるオープンソースFew-shot TTSシステムです。2段階パイプラインで構成されています。
Stage 1 — GPT(Text-to-Semantic): テキストと参照音声を入力してSemantic Token(意味トークン)を生成します。24層Transformerで、自己回帰(autoregressive)方式でトークンを一つずつ予測します。核心はCN-HuBERT(自己教師あり学習SSLモデル)が抽出したsemantic tokenを予測ターゲットとして使用することです。
Stage 2 — SoVITS(Semantic-to-Audio): Semantic Tokenを実際のオーディオ波形に変換します。VITSアーキテクチャベースで、VQ(Vector Quantization)コードブック + Flowモデル + HiFi-GANデコーダーで構成されます。
Pre-trainingで学習されるもの:
CN-HuBERT: 2,000〜5,000時間の多話者データで音声の意味表現を学習(SSL)
Chinese-RoBERTa: テキストのBERT特徴抽出器(別途事前学習)
SoVITS VQコードブック: 多話者データで汎用音声コードブックを学習
GPTモデル: 多話者データでテキスト→semantic tokenマッピングを学習
Fine-tuningで行うこと:
ユーザーが1分の音声 + テキストを提供
データ前処理: 音素抽出、BERT/SSL/Semanticトークン抽出
s1_train.py: GPTモデルを対象話者データで20エポック学習(lr=0.01)
s2_train.py: SoVITSモデルを対象話者データで〜100エポック学習(lr=0.0001)
v3ではCFMモジュールにLoRA(rank=32)を適用して効率的な微調整
キーコンセプト
Pre-training ① CN-HuBERT: 数千時間の音声データで自己教師あり学習 → 音声のsemantic表現を学習
Pre-training ② SoVITS VQ: 多話者データで汎用音声コードブック学習 → semantic↔acousticマッピング
Pre-training ③ GPTモデル: 多話者データでテキスト→semantic token自己回帰生成を学習
Fine-tuningデータ準備: 1分音声 → 音素(phoneme)、BERT特徴、SSL特徴、semantic token抽出
Fine-tuning ① s1_train.py: GPTモデルを対象話者データで20エポック学習(lr=0.01)
Fine-tuning ② s2_train.py: SoVITSモデルを対象話者データで〜100エポック学習(lr=0.0001)
推論: テキスト → GPTがsemantic tokenを生成 → SoVITSが対象話者の音声波形に変換
メリット
- ✓ 1分のデータだけで高品質な音声複製
- ✓ オープンソース — コード分析とカスタマイズが可能
- ✓ 2段階パイプラインで各段階を独立最適化
- ✓ v3でLoRAサポート → Fine-tuning効率向上
- ✓ Pre-training/Fine-tuningの概念を実践で理解可能
デメリット
- ✗ Pre-trainedモデルの品質に依存
- ✗ 中国語中心の事前学習 → 他の言語で性能低下の可能性
- ✗ GPU必要(Fine-tuningにVRAM 6GB+)
- ✗ 音声ディープフェイク悪用のリスク