-
Notifications
You must be signed in to change notification settings - Fork 583
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
docs: add Japanese translations to docs (#318)
- Loading branch information
Showing
5 changed files
with
573 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,125 @@ | ||
# 微調整 | ||
|
||
明らかに、このページを開いたとき、few-shot 事前トレーニングモデルのパフォーマンスに満足していなかったことでしょう。データセット上でのパフォーマンスを向上させるためにモデルを微調整したいと考えています。 | ||
|
||
現在のバージョンでは、「LLAMA」部分のみを微調整する必要があります。 | ||
|
||
## LLAMAの微調整 | ||
### 1. データセットの準備 | ||
|
||
``` | ||
. | ||
├── SPK1 | ||
│ ├── 21.15-26.44.lab | ||
│ ├── 21.15-26.44.mp3 | ||
│ ├── 27.51-29.98.lab | ||
│ ├── 27.51-29.98.mp3 | ||
│ ├── 30.1-32.71.lab | ||
│ └── 30.1-32.71.mp3 | ||
└── SPK2 | ||
├── 38.79-40.85.lab | ||
└── 38.79-40.85.mp3 | ||
``` | ||
|
||
データセットを上記の形式に変換し、「data」ディレクトリに配置する必要があります。音声ファイルの拡張子は「.mp3」、「.wav」、または「.flac」にすることができ、注釈ファイルの拡張子は「.lab」にする必要があります。 | ||
|
||
!!! warning | ||
データセットにラウドネス正規化を適用することをお勧めします。これを行うには、[fish-audio-preprocess](https://github.com/fishaudio/audio-preprocess) を使用できます。 | ||
|
||
```bash | ||
fap loudness-norm data-raw data --clean | ||
``` | ||
|
||
|
||
### 2. セマンティックトークンのバッチ抽出 | ||
|
||
VQGANの重みをダウンロードしたことを確認してください。まだダウンロードしていない場合は、次のコマンドを実行してください。 | ||
|
||
```bash | ||
huggingface-cli download fishaudio/fish-speech-1.2 --local-dir checkpoints/fish-speech-1.2 | ||
``` | ||
|
||
次に、次のコマンドを実行してセマンティックトークンを抽出できます。 | ||
|
||
```bash | ||
python tools/vqgan/extract_vq.py data \ | ||
--num-workers 1 --batch-size 16 \ | ||
--config-name "firefly_gan_vq" \ | ||
--checkpoint-path "checkpoints/fish-speech-1.2/firefly-gan-vq-fsq-4x1024-42hz-generator.pth" | ||
``` | ||
|
||
!!! note | ||
`--num-workers` と `--batch-size` を調整して抽出速度を上げることができますが、GPUメモリの制限を超えないようにしてください。 | ||
VITS形式の場合、`--filelist xxx.list` を使用してファイルリストを指定できます。 | ||
|
||
このコマンドは、`data`ディレクトリに`.npy`ファイルを作成します。以下のように表示されます。 | ||
|
||
``` | ||
. | ||
├── SPK1 | ||
│ ├── 21.15-26.44.lab | ||
│ ├── 21.15-26.44.mp3 | ||
│ ├── 21.15-26.44.npy | ||
│ ├── 27.51-29.98.lab | ||
│ ├── 27.51-29.98.mp3 | ||
│ ├── 27.51-29.98.npy | ||
│ ├── 30.1-32.71.lab | ||
│ ├── 30.1-32.71.mp3 | ||
│ └── 30.1-32.71.npy | ||
└── SPK2 | ||
├── 38.79-40.85.lab | ||
├── 38.79-40.85.mp3 | ||
└── 38.79-40.85.npy | ||
``` | ||
|
||
### 3. データセットをprotobufにパックする | ||
|
||
```bash | ||
python tools/llama/build_dataset.py \ | ||
--input "data" \ | ||
--output "data/protos" \ | ||
--text-extension .lab \ | ||
--num-workers 16 | ||
``` | ||
|
||
コマンドの実行が完了すると、`data`ディレクトリに`quantized-dataset-ft.protos`ファイルが表示されます。 | ||
|
||
### 4. 最後に、LoRAを使用して微調整する | ||
|
||
同様に、`LLAMA`の重みをダウンロードしたことを確認してください。まだダウンロードしていない場合は、次のコマンドを実行してください。 | ||
|
||
```bash | ||
huggingface-cli download fishaudio/fish-speech-1.2 --local-dir checkpoints/fish-speech-1.2 | ||
``` | ||
|
||
最後に、次のコマンドを実行して微調整を開始できます。 | ||
|
||
```bash | ||
python fish_speech/train.py --config-name text2semantic_finetune \ | ||
project=$project \ | ||
+lora@model.model.lora_config=r_8_alpha_16 | ||
``` | ||
|
||
!!! note | ||
`fish_speech/configs/text2semantic_finetune.yaml` を変更して、`batch_size`、`gradient_accumulation_steps` などのトレーニングパラメータを変更し、GPUメモリに適合させることができます。 | ||
|
||
!!! note | ||
Windowsユーザーの場合、`trainer.strategy.process_group_backend=gloo` を使用して `nccl` の問題を回避できます。 | ||
|
||
トレーニングが完了したら、[推論](inference.md)セクションを参照し、`--speaker SPK1` を使用して音声を生成します。 | ||
|
||
!!! info | ||
デフォルトでは、モデルは話者の発話パターンのみを学習し、音色は学習しません。音色の安定性を確保するためにプロンプトを使用する必要があります。 | ||
音色を学習したい場合は、トレーニングステップ数を増やすことができますが、これにより過学習が発生する可能性があります。 | ||
|
||
トレーニングが完了したら、推論を行う前にLoRAの重みを通常の重みに変換する必要があります。 | ||
|
||
```bash | ||
python tools/llama/merge_lora.py \ | ||
--lora-config r_8_alpha_16 \ | ||
--base-weight checkpoints/fish-speech-1.2 \ | ||
--lora-weight results/$project/checkpoints/step_000000010.ckpt \ | ||
--output checkpoints/fish-speech-1.2-yth-lora/ | ||
``` | ||
!!! note | ||
他のチェックポイントを試すこともできます。要件を満たす最も早いチェックポイントを使用することをお勧めします。これらは通常、分布外(OOD)データでより良いパフォーマンスを発揮します。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,128 @@ | ||
# イントロダクション | ||
|
||
<div> | ||
<a target="_blank" href="https://discord.gg/Es5qTB9BcN"> | ||
<img alt="Discord" src="https://img.shields.io/discord/1214047546020728892?color=%23738ADB&label=Discord&logo=discord&logoColor=white&style=flat-square"/> | ||
</a> | ||
<a target="_blank" href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=jCKlUP7QgSm9kh95UlBoYv6s1I-Apl1M&authKey=xI5ttVAp3do68IpEYEalwXSYZFdfxZSkah%2BctF5FIMyN2NqAa003vFtLqJyAVRfF&noverify=0&group_code=593946093"> | ||
<img alt="QQ" src="https://img.shields.io/badge/QQ Group-%2312B7F5?logo=tencent-qq&logoColor=white&style=flat-square"/> | ||
</a> | ||
<a target="_blank" href="https://hub.docker.com/r/lengyue233/fish-speech"> | ||
<img alt="Docker" src="https://img.shields.io/docker/pulls/lengyue233/fish-speech?style=flat-square&logo=docker"/> | ||
</a> | ||
</div> | ||
|
||
!!! warning | ||
私たちは、コードベースの違法な使用について一切の責任を負いません。お住まいの地域のDMCA(デジタルミレニアム著作権法)およびその他の関連法については、現地の法律を参照してください。 | ||
|
||
このコードベースは `BSD-3-Clause` ライセンスの下でリリースされており、すべてのモデルは CC-BY-NC-SA-4.0 ライセンスの下でリリースされています。 | ||
|
||
<p align="center"> | ||
<img src="/assets/figs/diagram.png" width="75%"> | ||
</p> | ||
|
||
## 要件 | ||
|
||
- GPUメモリ: 4GB(推論用)、16GB(微調整用) | ||
- システム: Linux、Windows | ||
|
||
## Windowsセットアップ | ||
|
||
Windowsのプロユーザーは、コードベースを実行するためにWSL2またはDockerを検討することができます。 | ||
|
||
非プロのWindowsユーザーは、Linux環境なしでコードベースを実行するために以下の方法を検討することができます(モデルコンパイル機能付き、つまり `torch.compile`): | ||
|
||
<ol> | ||
<li>プロジェクトパッケージを解凍します。</li> | ||
<li><code>install_env.bat</code>をクリックして環境をインストールします。 | ||
<ul> | ||
<li><code>install_env.bat</code>の<code>USE_MIRROR</code>項目を編集して、ミラーサイトを使用するかどうかを決定できます。</li> | ||
<li><code>USE_MIRROR=false</code>は、最新の安定版<code>torch</code>をオリジナルサイトからダウンロードします。<code>USE_MIRROR=true</code>は、最新の<code>torch</code>をミラーサイトからダウンロードします。デフォルトは<code>true</code>です。</li> | ||
<li><code>install_env.bat</code>の<code>INSTALL_TYPE</code>項目を編集して、コンパイル環境のダウンロードを有効にするかどうかを決定できます。</li> | ||
<li><code>INSTALL_TYPE=preview</code>は、コンパイル環境付きのプレビュー版をダウンロードします。<code>INSTALL_TYPE=stable</code>は、コンパイル環境なしの安定版をダウンロードします。</li> | ||
</ul> | ||
</li> | ||
<li>ステップ2で<code>USE_MIRROR=preview</code>の場合、このステップを実行します(オプション、コンパイルモデル環境を有効にするため): | ||
<ol> | ||
<li>以下のリンクを使用してLLVMコンパイラをダウンロードします: | ||
<ul> | ||
<li><a href="https://huggingface.co/fishaudio/fish-speech-1/resolve/main/LLVM-17.0.6-win64.exe?download=true">LLVM-17.0.6(オリジナルサイトダウンロード)</a></li> | ||
<li><a href="https://hf-mirror.com/fishaudio/fish-speech-1/resolve/main/LLVM-17.0.6-win64.exe?download=true">LLVM-17.0.6(ミラーサイトダウンロード)</a></li> | ||
<li><code>LLVM-17.0.6-win64.exe</code>をダウンロードした後、ダブルクリックしてインストールし、適切なインストール場所を選択し、最も重要なのは<code>Add Path to Current User</code>をチェックして環境変数に追加することです。</li> | ||
<li>インストールが完了したことを確認します。</li> | ||
</ul> | ||
</li> | ||
<li>Microsoft Visual C++ 再頒布可能パッケージをダウンロードしてインストールし、潜在的な.dllの欠落問題を解決します。 | ||
<ul> | ||
<li><a href="https://aka.ms/vs/17/release/vc_redist.x64.exe">MSVC++ 14.40.33810.0 ダウンロード</a></li> | ||
</ul> | ||
</li> | ||
<li>Visual Studio Community Editionをダウンロードしてインストールし、MSVC++ビルドツールを取得し、LLVMのヘッダーファイル依存関係を解決します。 | ||
<ul> | ||
<li><a href="https://visualstudio.microsoft.com/zh-hans/downloads/">Visual Studio ダウンロード</a></li> | ||
<li>Visual Studio Installerをインストールした後、Visual Studio Community 2022をダウンロードします。</li> | ||
<li>以下の図のように<code>Modify</code>ボタンをクリックし、<code>Desktop development with C++</code>オプションを見つけてチェックしてダウンロードします。</li> | ||
<p align="center"> | ||
<img src="/assets/figs/VS_1.jpg" width="75%"> | ||
</p> | ||
</ul> | ||
</li> | ||
</ol> | ||
</li> | ||
<li><code>start.bat</code>をダブルクリックして、Fish-Speechトレーニング推論設定WebUIページに入ります。 | ||
<ul> | ||
<li>(オプション)直接推論ページに行きたい場合は、プロジェクトルートディレクトリの<code>API_FLAGS.txt</code>を編集し、最初の3行を次のように変更します: | ||
<pre><code>--infer | ||
# --api | ||
# --listen ... | ||
...</code></pre> | ||
</li> | ||
<li>(オプション)APIサーバーを起動したい場合は、プロジェクトルートディレクトリの<code>API_FLAGS.txt</code>を編集し、最初の3行を次のように変更します: | ||
<pre><code># --infer | ||
--api | ||
--listen ... | ||
...</code></pre> | ||
</li> | ||
</ul> | ||
</li> | ||
<li>(オプション)<code>run_cmd.bat</code>をダブルクリックして、このプロジェクトのconda/pythonコマンドライン環境に入ります。</li> | ||
</ol> | ||
|
||
## Linuxセットアップ | ||
|
||
```bash | ||
# python 3.10仮想環境を作成します。virtualenvも使用できます。 | ||
conda create -n fish-speech python=3.10 | ||
conda activate fish-speech | ||
|
||
# pytorchをインストールします。 | ||
pip3 install torch torchvision torchaudio | ||
|
||
# fish-speechをインストールします。 | ||
pip3 install -e . | ||
|
||
# (Ubuntu / Debianユーザー) soxをインストールします。 | ||
apt install libsox-dev | ||
``` | ||
|
||
## 変更履歴 | ||
|
||
- 2024/07/02: Fish-Speechを1.2バージョンに更新し、VITSデコーダーを削除し、ゼロショット能力を大幅に強化しました。 | ||
- 2024/05/10: Fish-Speechを1.1バージョンに更新し、VITSデコーダーを実装してWERを減少させ、音色の類似性を向上させました。 | ||
- 2024/04/22: Fish-Speech 1.0バージョンを完成させ、VQGANおよびLLAMAモデルを大幅に修正しました。 | ||
- 2023/12/28: `lora`微調整サポートを追加しました。 | ||
- 2023/12/27: `gradient checkpointing`、`causual sampling`、および`flash-attn`サポートを追加しました。 | ||
- 2023/12/19: webuiおよびHTTP APIを更新しました。 | ||
- 2023/12/18: 微調整ドキュメントおよび関連例を更新しました。 | ||
- 2023/12/17: `text2semantic`モデルを更新し、音素フリーモードをサポートしました。 | ||
- 2023/12/13: ベータ版をリリースし、VQGANモデルおよびLLAMAに基づく言語モデル(音素のみサポート)を含みます。 | ||
|
||
## 謝辞 | ||
|
||
- [VITS2 (daniilrobnikov)](https://github.com/daniilrobnikov/vits2) | ||
- [Bert-VITS2](https://github.com/fishaudio/Bert-VITS2) | ||
- [GPT VITS](https://github.com/innnky/gpt-vits) | ||
- [MQTTS](https://github.com/b04901014/MQTTS) | ||
- [GPT Fast](https://github.com/pytorch-labs/gpt-fast) | ||
- [Transformers](https://github.com/huggingface/transformers) | ||
- [GPT-SoVITS](https://github.com/RVC-Boss/GPT-SoVITS) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
# 推論 | ||
|
||
推論は、コマンドライン、HTTP API、およびWeb UIをサポートしています。 | ||
|
||
!!! note | ||
全体として、推論は次のいくつかの部分で構成されています: | ||
|
||
1. VQGANを使用して、与えられた約10秒の音声をエンコードします。 | ||
2. エンコードされたセマンティックトークンと対応するテキストを例として言語モデルに入力します。 | ||
3. 新しいテキストが与えられた場合、モデルに対応するセマンティックトークンを生成させます。 | ||
4. 生成されたセマンティックトークンをVITS / VQGANに入力してデコードし、対応する音声を生成します。 | ||
|
||
## コマンドライン推論 | ||
|
||
必要な`vqgan`および`llama`モデルをHugging Faceリポジトリからダウンロードします。 | ||
|
||
```bash | ||
huggingface-cli download fishaudio/fish-speech-1.2 --local-dir checkpoints/fish-speech-1.2 | ||
``` | ||
|
||
### 1. 音声からプロンプトを生成する: | ||
|
||
!!! note | ||
モデルにランダムに音声の音色を選ばせる場合、このステップをスキップできます。 | ||
|
||
```bash | ||
python tools/vqgan/inference.py \ | ||
-i "paimon.wav" \ | ||
--checkpoint-path "checkpoints/fish-speech-1.2/firefly-gan-vq-fsq-4x1024-42hz-generator.pth" | ||
``` | ||
`fake.npy`ファイルが生成されるはずです。 | ||
|
||
### 2. テキストからセマンティックトークンを生成する: | ||
```bash | ||
python tools/llama/generate.py \ | ||
--text "変換したいテキスト" \ | ||
--prompt-text "参照テキスト" \ | ||
--prompt-tokens "fake.npy" \ | ||
--checkpoint-path "checkpoints/fish-speech-1.2" \ | ||
--num-samples 2 \ | ||
--compile | ||
``` | ||
|
||
このコマンドは、作業ディレクトリに`codes_N`ファイルを作成します。ここで、Nは0から始まる整数です。 | ||
|
||
!!! note | ||
`--compile`を使用してCUDAカーネルを融合し、より高速な推論を実現することができます(約30トークン/秒 -> 約500トークン/秒)。 | ||
それに対応して、加速を使用しない場合は、`--compile`パラメータをコメントアウトできます。 | ||
|
||
!!! info | ||
bf16をサポートしていないGPUの場合、`--half`パラメータを使用する必要があるかもしれません。 | ||
|
||
!!! warning | ||
自分で微調整したモデルを使用している場合、発音の安定性を確保するために`--speaker`パラメータを必ず持たせてください。 | ||
|
||
### 3. セマンティックトークンから音声を生成する: | ||
|
||
#### VQGANデコーダー(推奨されません) | ||
```bash | ||
python tools/vqgan/inference.py \ | ||
-i "codes_0.npy" \ | ||
--checkpoint-path "checkpoints/fish-speech-1.2/firefly-gan-vq-fsq-4x1024-42hz-generator.pth" | ||
``` | ||
|
||
## HTTP API推論 | ||
|
||
推論のためのHTTP APIを提供しています。次のコマンドを使用してサーバーを起動できます: | ||
|
||
```bash | ||
python -m tools.api \ | ||
--listen 0.0.0.0:8000 \ | ||
--llama-checkpoint-path "checkpoints/fish-speech-1.2" \ | ||
--decoder-checkpoint-path "checkpoints/fish-speech-1.2/firefly-gan-vq-fsq-4x1024-42hz-generator.pth" \ | ||
--decoder-config-name firefly_gan_vq | ||
|
||
推論を高速化したい場合は、--compileパラメータを追加できます。 | ||
|
||
その後、http://127.0.0.1:8000/でAPIを表示およびテストできます。 | ||
|
||
## WebUI推論 | ||
|
||
次のコマンドを使用してWebUIを起動できます: | ||
|
||
```bash | ||
python -m tools.webui \ | ||
--llama-checkpoint-path "checkpoints/fish-speech-1.2" \ | ||
--decoder-checkpoint-path "checkpoints/fish-speech-1.2/firefly-gan-vq-fsq-4x1024-42hz-generator.pth" \ | ||
--decoder-config-name firefly_gan_vq | ||
``` | ||
|
||
!!! note | ||
Gradio環境変数(`GRADIO_SHARE`、`GRADIO_SERVER_PORT`、`GRADIO_SERVER_NAME`など)を使用してWebUIを構成できます。 | ||
|
||
お楽しみください! |
Oops, something went wrong.