Feat: add kotoba-whisper, etc

This commit is contained in:
litagin02
2024-05-26 22:03:19 +09:00
parent e27bd4dfbc
commit e5c189125f
7 changed files with 101 additions and 36 deletions

View File

@@ -405,6 +405,15 @@ def run_tensorboard(model_name: str):
yield gr.Button("Tensorboardを開く")
change_log_md = """
**Ver 2.5以降の変更点**
- `raw/`フォルダの中で音声をサブディレクトリに分けて配置することで、自動的にスタイルが作成されるようになりました。詳細は下の「使い方/データの前準備」を参照してください。
- これまでは1ファイルあたり14秒程度を超えた音声ファイルは学習には用いられていませんでしたが、Ver 2.5以降ではその制限がなくなりました。ただし:
- 音声ファイルが長い場合の学習効率は悪いかもしれず、挙動も確認していません
- この変更で要求VRAMが増えるので、学習に失敗したりVRAM不足になる場合は、バッチサイズを小さくするか、学習ボタンの横の「カスタムバッチサンプラーを使う」を試してみてくださいこの場合は以前と同じ挙動となります
"""
how_to_md = """
## 使い方
@@ -416,9 +425,6 @@ how_to_md = """
- 途中から学習を再開する場合は、モデル名を入力してから「学習を開始する」を押せばよいです。
注意: 標準スタイル以外のスタイルを音声合成で使うには、スタイルベクトルファイル`style_vectors.npy`を作る必要があります。これは、`Style.bat`を実行してそこで作成してください。
動作は軽いはずなので、学習中でも実行でき、何度でも繰り返して試せます。
## JP-Extra版について
元とするモデル構造として [Bert-VITS2 Japanese-Extra](https://github.com/fishaudio/Bert-VITS2/releases/tag/JP-Exta) を使うことができます。
@@ -426,40 +432,60 @@ how_to_md = """
"""
prepare_md = """
まず音声データwavファイルで1ファイルが2-12秒程度の、長すぎず短すぎない発話のものをいくつかと、書き起こしテキストを用意してください。
まず音声データと、書き起こしテキストを用意してください。
それを次のように配置します。
```
├── Data
├── Data/
│ ├── {モデルの名前}
│ │ ├── esd.list
│ │ ├── raw
│ │ │ ├── ****.wav
│ │ │ ├── ****.wav
│ │ │ ├── ...
│ │ ├── raw/
│ │ │ ├── foo.wav
│ │ │ ├── bar.mp3
│ │ │ ├── style1/
│ │ │ │ ├── baz.wav
│ │ │ │ ├── qux.wav
│ │ │ ├── style2/
│ │ │ │ ├── corge.wav
│ │ │ │ ├── grault.wav
...
```
wavファイル名やモデルの名前は空白を含まない半角で、wavファイルの拡張子は小文字`.wav`である必要があります。
`raw` フォルダにはすべてのwavファイルを入れ、`esd.list` ファイルには、以下のフォーマットで各wavファイルの情報を記述してください。
### 配置の仕方
- 上のように配置すると、`style1/`と`style2/`フォルダの内部(直下以外も含む)に入っている音声ファイルたちから、自動的にデフォルトスタイルに加えて`style1`と`style2`というスタイルが作成されます
- 特にスタイルを作る必要がない場合や、スタイル分類機能等でスタイルを作る場合は、`raw/`フォルダ直下に全てを配置してください。このように`raw/`のサブディレクトリの個数が0または1の場合は、スタイルはデフォルトスタイルのみが作成されます。
- 音声ファイルのフォーマットはwav形式以外にもmp3等の多くの音声ファイルに対応しています
### 書き起こしファイル`esd.list`
`Data/{モデルの名前}/esd.list` ファイルには、以下のフォーマットで各音声ファイルの情報を記述してください。
```
****.wav|{話者名}|{言語ID、ZHかJPかEN}|{書き起こしテキスト}
path/to/audio.wav(wavファイル以外でもこう書く)|{話者名}|{言語ID、ZHかJPかEN}|{書き起こしテキスト}
```
- ここで、最初の`path/to/audio.wav`は、`raw/`からの相対パスです。つまり、`raw/foo.wav`の場合は`foo.wav`、`raw/style1/bar.wav`の場合は`style1/bar.wav`となります。
- 拡張子がwavでない場合でも、`esd.list`には`wav`と書いてください、つまり、`raw/bar.mp3`の場合でも`bar.wav`と書いてください。
例:
```
wav_number1.wav|hanako|JP|こんにちは、聞こえて、いますか?
wav_next.wav|taro|JP|はい、聞こえています……。
foo.wav|hanako|JP|こんにちは、元気ですか?
bar.wav|taro|JP|はい、聞こえています……。何か用ですか?
style1/baz.wav|hanako|JP|今日はいい天気ですね。
style1/qux.wav|taro|JP|はい、そうですね。
...
english_teacher.wav|Mary|EN|How are you? I'm fine, thank you, and you?
...
```
日本語話者の単一話者データセットでも構いません。
- 音声ファイルはrawフォルダの直下でなくてもサブフォルダに入れても構いません。その場合は、`esd.list`の最初には`raw`からの相対パスを記述してください。
もちろん日本語話者の単一話者データセットでも構いません。
"""
def create_train_app():
with gr.Blocks().queue() as app:
gr.Markdown(change_log_md)
with gr.Accordion("使い方", open=False):
gr.Markdown(how_to_md)
with gr.Accordion(label="データの前準備", open=False):