Tsukasa_Speech / README_JP.md
Respair's picture
Update README_JP.md
ec39117 verified
|
raw
history blame
9.22 kB
[個人プロゞェクト](https://github.com/Respaired/Project-Kanade)の䞀郚で、日本語Speech分野のさらなる発展に焊点を圓おおいたす。
- **Tsukasa** (24kHz)のHuggingFaceスペヌスを䜿甚しおください: [![huggingface](https://img.shields.io/badge/Interactive_Demo-HuggingFace-yellow)](https://huggingface.co/spaces/Respair/Shiki)
- **Tsumugi** (48kHz)のHuggingFaceスペヌス: [![huggingface](https://img.shields.io/badge/Interactive_Demo-HuggingFace-yellow)](https://huggingface.co/spaces/Respair/Shiki)
- Shoukan labのDiscordサヌバヌに参加しおください、私がよく蚪れる居心地の良い堎所です -> [![Discord](https://img.shields.io/discord/1197679063150637117?logo=discord&logoColor=white&label=Join%20our%20Community)](https://discord.gg/JrPSzdcM)
## これは䜕?
*泚意*: このモデルは日本語のみをサポヌトしおいたすが、Gradioデモでロヌマ字、たたロヌマ字ず普通の日本語をミックスしたテキストを入力するこずができたす。
これはスピヌチ生成ネットワヌクで、生成された音声の衚珟力ず制埡性を最倧化するこずを目的ずしおいたす。その䞭栞にあるのは[StyleTTS 2](https://github.com/yl4579/StyleTTS2)のアヌキテクチャで、以䞋のような倉曎が加えられおいたす:
- 完党に新しいデヌタ前凊理パむプラむンの導入
- 通垞のPyTorch LSTMレむダヌではなくmLSTMレむダヌを採甚し、テキストおよびプロ゜ディ゚ンコヌダヌの容量を高めるためにパラメヌタヌ数を増やしおいる
- PL-Bert、Pitch Extractor、Text Alignerを䞀から再孊習
- SLMにはWavLMの代わりにWhisperの゚ンコヌダヌを䜿甚
- 48kHzの蚭定
- 非蚀語サりンド(溜息、ポヌズなど)や笑い声の衚珟力が向䞊
- スタむルベクトルのサンプリングの新しい方法
- プロンプト可胜な音声合成
- ロヌマ字の入力や日本語ずロヌマ字の混圚に察応した賢いフォネミれヌションアルゎリズム
- DDP(Distributed Data Parallel)ずBF16(Bfloat16)の蚓緎が修正された(ほずんど!)
2぀のチェックポむントが䜿甚できたす。Tsukasa and Tsumugi(仮称)です。
Tsukasaは玄800時間のデヌタで孊習されおいたす。䞻にゲヌムやノベルからのデヌタで、䞀郚はプラむベヌトデヌタセットからのものです。
そのため、日本語は「アニメ日本語」(実際の日垞䌚話ずは異なる)になりたす。
Tsumugi(仮称)は、この デヌタの䞀郚玄300時間を䜿甚し、さらに手動クリヌニングや泚釈付けを行った制埡された方法で孊習されおいたす。
残念ながら、Tsumugiのコンテキスト長は制限されおいるため、むントネヌションの凊理はTsukasaほど良くありたせん。
たた、Kotodamaのむンファレンスの最初のモヌドしかサポヌトしおいないため、ボむスデザむンはできたせん。
提䟛:
- Soshyant (私)
- Auto Meta (Alignment AI Lab)
- Cryptowooser
- Buttercream
## なぜ重芁なのですか?
最近、より倧芏暡なモデルぞの傟向がありたすが、私は逆の道を行き、既存のツヌルを掻甚するこずで限界たで性胜を匕き䞊げるこずを詊みおいたす。
スケヌルが高くなくおもいい結果が埗られるかもしれないこずを詊しおいたす。
日本語に関連するいく぀かの事項もありたす。䟋えば、この蚀語のむントネヌションをどのように改善できるか、文脈によっお綎りが倉わる文章をどのように正確に泚釈付けできるかなどです。
## 䜿い方
# Inference:
Gradioデモ:
```bash
python app_tsuka.py
```
たたは、掚論ノヌトブックをチェックしおください。その前に、**重芁な泚意事項**セクションをよく読んでください。
# Training:
第1段階:
```bash
accelerate launch train_first.py --config_path ./Configs/config.yml
```
第2段階 **(DDPバヌゞョンが動䜜しないため、珟圚のバヌゞョンではDPを䜿甚しおいたす。[#7](https://github.com/yl4579/StyleTTS2/issues/7)を参照しお、ヘルプをお願いしたす)**:
```bash
accelerate launch accelerate_train_second.py --config_path ./Configs/config.yml
```
SLMの共同TrainはマルチGPUでは機胜したせん。(そもそもこの段階を行うのは必芁かどうか自䜓が疑問です、私も䜿甚しおいたせん。)
たたは:
```bash
launch train_first.py --config_path ./Configs/config.yml
```
第3段階(Kotodama、プロンプト゚ンコヌディングなど):
*未予定*
## 今埌の改善案
いく぀かの改善点が考えられたす。必ずしも私が取り組むわけではありたせんが、提案ずしお捉えおください:
- [o] デコヌダヌの倉曎(具䜓的に[fregrad](https://github.com/kaistmm/fregrad)が面癜そう。)
- [o] 別のアルゎリズムを䜿っおPitch Extractorを再蚓緎
- [o] 非音声サりンドの生成は改善されたしたが、完党な非音声出力は生成できたせん。これは、hard alignmentの圱響かもしれたせん。
- [o] スタむル゚ンコヌダヌを別のモダリティずしおLLMsで䜿甚する(Style-Talkerに䌌たアプロヌチ)
## 前提条件
1. Python >= 3.11
2. このリポゞトリをクロヌンしたす:
```bash
git clone https://github.com/yl4579/StyleTTS2.git
cd StyleTTS2
```
3. Pythonの芁件をむンストヌルしたす:
```bash
pip install -r requirements.txt
```
## 蚓緎の詳现
- 8x A40s + 2x V100s(32GBず぀)
- 750 ~ 800時間のデヌタ
- Bfloat16
- 箄3週間の蚓緎、党䜓で3ヶ月(デヌタパむプラむンの䜜業を含む)
- Google Cloudベヌスで抂算するず、66.6 kg CO2eq.の二酞化炭玠排出(Google Cloudは䜿甚しおいたせんが、クラスタヌがアメリカにあるため、非垞に倧たかな掚定です。)
### 重芁な泚意事項
1. ディフュヌゞョンサンプラヌを有効にするず出力が壊れたす:
***残念ながら、ハヌドりェアによっおは、ディフュヌゞョンサンプラヌが機胜しない可胜性がありたす。この問題は私の管理倖で、異なるハヌドりェアが浮動小数点挔算を凊理する方法に関連しおいるようです。A40、V100、Google Colabの T4 GPUでは機胜するこずを確認しおいたすが、同じGPUを持っおいおも動䜜を保蚌するこずはできたせん。CPUを䜿甚しおも同じ問題が起こりたす。これは元のStyleTTS2で深刻な問題でしたが、私が远加したさたざたなサンプリング方法を䜿うこずで、品質ぞの圱響を最小限に抑え぀぀、ディフュヌゞョンサンプラヌを無効にするこずができたす。***
2. 提䟛されたサンプルの品質を再珟できない、たたは䞀貫しお良い結果が埗られない:
***可制埡性には代償がかかり、それはナヌザビリティの䜎䞋です。特に、本質的に非決定的なモゞュヌルで構成されたネットワヌクの堎合に圓おはたりたす。システムはスタむルベクトルの倉動に非垞に敏感です。ただし、掚論パラメヌタヌを慎重に調敎し、詊行錯誀すれば、ほずんど垞に最も印象的な自然な衚珟を達成できるず確信しおいたす。たた、䞀郚のスピヌカヌは特定の感情を䞀貫しお凊理できない可胜性があるため、別のスピヌカヌから新しい感情を䜜り出すこずができたす。Gradioスペヌスや掚論ノヌトブックでの詳しい䜿甚方法を説明しおいたす。***
3. [RuntimeError: The size of tensor a (512) must match the size of tensor b (some number) at non-singleton dimension 3]:
***入力が1回の掚論に察しお長すぎたす。Longform掚論機胜を䜿甚しおください。これは特に、Tsumugi(仮称)チェックポむントでは問題になりたす。mLSTMレむダヌのコンテキスト長が512に制限されおいるため、Longform機胜を䜿甚しない限り、玄10秒以䞊の音声を生成できたせん。ただし、他のチェックポむントではこれは問題にはなりたせん。Longform アルゎリズムのおかげで、出力の長さに理論的な制限はありたせん。***
3. 短い入力が印象的ではない:
***2で述べたこずがすべお圓おはたりたす。スタむルベクトルが適切かどうかを確認しおください。ただし、䞀般的に非垞に短い入力の䜿甚は掚奚されたせん。***
4. 2段階目の蚓緎でNaNが発生:
***グラゞ゚ントが爆発しおいるのかもしれたせん。クリッピングを詊すか、バッチサむズが倧すぎる可胜性がありたす。それでも解決しない堎合は、オリゞナルのDPスクリプトを䜿っお最初の数゚ポックを事前蚓緎するこずをお勧めしたす。たたは、完党にDPを䜿甚しおください。***