Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: add Japanese translations to docs #318

Merged
merged 1 commit into from
Jul 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
125 changes: 125 additions & 0 deletions docs/ja/finetune.md
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 \
[email protected]_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)データでより良いパフォーマンスを発揮します。
128 changes: 128 additions & 0 deletions docs/ja/index.md
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)
94 changes: 94 additions & 0 deletions docs/ja/inference.md
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を構成できます。

お楽しみください!
Loading