このリポジトリは、日本語音声データセットを用いてContentVecを学習させるためのコードを提供します。
English version is here.
本プロジェクトには以下が含まれます:
- 日本語音声データセット用前処理ユーティリティ(現在JVSコーパスとReazonSpeechを使用)
- 教師ラベル作成スクリプト
- ContentVecJPモデル用トレーニングスクリプト
- モデル評価用のスクリプト(CTCデコーダーによるCER/WER評価)
Important
本リポジトリ(特に上流タスク)は、モデル精度向上のため開発中です。そのため、互換性を損なう変更が導入される可能性があります(現在のバージョンでも動作します)。
コードはPyTorch、TorchAudio、PyTorch Lightningバージョン2.5以降を使用して構築されています。
Python3.11以降で必要なパッケージをインストールしてください。
# リポジトリをクローン(submoduleのspeech-resynthesisもクローン)
git clone https://github.com/flect-higashi/contentvecjp.git --recursive
cd contentvecjp
# Poetryで依存関係をインストール
poetry install
# またはpipで依存関係をインストール
pip install -e .詳細はupstreamディレクトリとREADMEを参照してください。
テストをgradient accumulationを使用してGPU1枚 (RTX5090)で行ったため、1枚のGPUで動かすためのスクリプトと設定ファイルを提供しています(引用元の論文ではGPU36枚でトレーニングされています)。
デフォルト設定でトレーニングを実行するには、上流タスク完了後にbash run_single.shを実行してください。32GB以上のVRAMの使用を推奨します。
マルチノード/マルチGPU構成など環境で実行する場合、設定ファイルと学習用のコードを改変して以下のように実行してください。
python train_contentvec.py -i <your_yaml_config>詳細はdownstreamディレクトリとREADMEを参照してください。
後日公開予定
本プロジェクトはMITライセンスの下で提供されます。詳細はLICENSEファイルを参照してください。 ただし、一部のファイルは異なる条件で提供されています。詳細は各ファイルを参照してください。
-
JVSコーパス:教師ラベル作成過程で使用(変更予定)。CC BY-SA 4.0 ライセンス下で提供されていますが、音声データは非営利目的での利用に限定されています。詳細は論文およびプロジェクトページを参照してください。
-
ReazonSpeech: 教師ラベル作成とモデルの学習で使用。CDLA 1.0 にライセンス下で提供されていますが、データセットを著作権法第30条第4項で認められた目的のみに使用することに同意する必要があります。詳細は論文およびプロジェクトページを参照してください。
-
JSUTコーパス:学習済みモデルの評価で使用。CC BY-SA 4.0 ライセンス下で提供されていますが、音声データは非営利目的での利用に限定されています。詳細は論文およびプロジェクトページを参照してください。
以下のオープンソースプロジェクトに感謝します:
- ContentVec - オリジナルの実装
- HuBERT(TorchAudio) - 事前学習プロセス
- Xvector-JtubeSpeech - 話者埋め込み抽出
- Kushinada-HuBERT-Base - 特徴量抽出
- 依存関係ファイルに記載のライブラリ