Changelog
v2.3 (2024-02-25)
大きな変更
ユーザー辞書機能
あらかじめ辞書に固有名詞を追加することができ、それが学習時・音声合成時の読み取得部分に適応されます。辞書の追加・編集は次のエディタ経由で行ってください。
辞書部分の実装 は、中のREADMEにある通り、VOICEVOX Editor のものを使っており、この部分のコードライセンスはLGPL-3.
音声合成専用エディタ
音声合成専用エディタを追加。今までのWebUIでできた機能のほか、次のような機能が使えます(つまり既存の日本語音声合成ソフトウェアのエディタを真似ました):
- セリフ単位でキャラや設定を変更しながら原稿を作り、それを一括で生成したり、原稿を保存等したり読み込んだり
- GUIよる分かりやすいアクセント調整
- ユーザー辞書への単語追加や編集
Editor.bat
をダブルクリックかpython server_editor.py --inbrowser
で起動します。エディター部分はこちらの別リポジトリになります。フロントエンド初心者なのでプルリクや改善案等をお待ちしています。
改善
- 学習時にデコーダー部分を凍結するオプションの追加。品質がもしかしたら上がるかもしれません。
v2.2 (2024-02-09)
変更・機能追加
- bfloat16オプションはデメリットしか無さそうなので、常にオフで学習するよう変更
- バッチサイズのデフォルトを4から2に変更。学習が遅い場合はバッチサイズを下げて試してみて、VRAMに余裕があれば上げてください。JP-Extra使用時でのバッチサイズごとのVRAM使用量目安は、1: 6GB, 2: 8GB, 3: 10GB, 4: 12GB くらいのようです。
- 学習の際の検証データ数をデフォルトで0に変更し、また検証データ数を学習用WebUIで指定できるようにした
- Tensorboardのログ間隔を学習用WebUIで指定できるようにした
- UIのテーマを
common/constants.py
のGRADIO_THEME
で指定できるようにした
バグ修正
- JP-Extra使用時にバッチサイズが1だと学習中にエラーが発生するバグを修正
- 「こんにちは!?!?!?!?」等、感嘆符等の記号が連続すると学習・音声合成でエラーになるバグを修正
—
(em dash, U+2014) や―
(quotation dash, U+2015) 等のダッシュやハイフンの各種変種が、種類によって-
(通常の半角ハイフン)に正規化されたりされていなかったりする処理を、全て正規化するように修正
v2.1 (2024-02-07)
変更
- 学習の際、デフォルトではbfloat16オプションを使わないよう変更(学習が発散したり質が下がることがある模様)
- 学習の際のメモリ使用量を削減しようと頑張った
バグ修正や改善
- 学習WebUIからTensorboardのログを見れるように
- 音声合成(やそのAPI)において、同時に別の話者が選択され音声合成がリクエストされた場合に発生するエラーを修正
- モデルマージ時に、そのレシピを
recipe.json
ファイルへ保存するように変更 - 「改行で分けて生成」がより感情が乗る旨の明記等、軽微な説明文の改善
- 「
ーーそれは面白い
」や「なるほど。ーーーそういうことか。
」等、長音記号の前が母音でない場合、長音記号ー
でなくダッシュ―
の勘違いだと思われるので、ダッシュ記号として処理するように変更
v2.0.1 (2024-02-05)
軽微なバグ修正や改善
- スタイルベクトルに
NaN
が含まれていた場合(主に音声ファイルが極端に短い場合に発生)、それを学習リストから除外するように修正 - colabにマージの追加
- 学習時のプログレスバーの表示がおかしかったのを修正
- デフォルトのjvnvモデルをJP-Extra版にアップデート。新しいモデルを使いたい方は手動でこちらからダウンロードするか、
python initialize.py
をするか、このbatファイルをStyle-Bert-VITS2
フォルダがある場所(インストールbatファイルとかがあったところ)においてダブルクリックしてください。
v2.0 (2024-02-03)
大きい変更
モデル構造に Bert-VITS2の日本語特化モデル JP-Extra を取り込んだものを使えるように変更、事前学習モデルもBert-VITS2 JP-Extraのものを改造してStyle-Bert-VITS2で使えるようにしました (モデル構造を見直して日本語での学習をしていただいた @Stardust-minus 様に感謝します)
- これにより、日本語の発音やアクセントや抑揚や自然性が向上する傾向があります
- スタイルベクトルを使ったスタイルの操作は変わらず使えます
- ただしJP-Extraでは英語と中国語の音声合成は(現状は)できません
- 旧モデルも引き続き使うことができ、また旧モデルで学習することもできます
- デフォルトのJVNVモデルは現在は旧verのままです
改善
Merge.bat
で、声音マージを、より細かく「声質」と「声の高さ」の点でマージできるように。
バグ修正
- PyTorchのバージョンに由来するバグを修正(torchのバージョンを2.1.2に固定)
―
(ダッシュ、長音記号ではない)が2連続すると学習・音声合成でエラーになるバグを修正- 「三円」等「ん+母音」のアクセントの仮名表記が「サネン」等になり、また偶にエラーが発生する問題を修正(「ん」の音素表記を内部的には「N」で統一)
v1.3 (2024-01-09)
大きい変更
- 元々のBert-VITS2に存在した、日本語の発音・アクセント処理部分のバグを修正・リファクタリング
車両
がシャリヨオ
、思う
がオモオ
、見つける
がミッケル
等に発音・学習されており、その単語以降のアクセント情報が全て死んでいた私はそれを見る
のアクセントがワ➚タシ➘ワ ソ➚レ➘オ ミ➘ル
だったのをワ➚タシワ ソ➚レオ ミ➘ル
に修正- 学習・音声合成で無視されていたアルファベット・ギリシャ文字を無視しないように変更(基本はアルファベット読みだけど簡単な単語は読めるらしい、学習の際は念のためカタカナ等にしたほうがよいです)
- 修正の影響で、前処理時に(今まで無視されていた)読めない漢字等で引っかかるようになりました。その場合は書き起こしを確認して修正するようにしてください。
- アクセントを調整して音声合成できるように(完全に制御できるわけではないが改善される場合がある)。
これまでのモデルもこれまで通り使え、アクセントや発音等が改善される可能性があります。新しいバージョンで学習し直すとより良くなる可能性もあります。が劇的に良くなるかは分かりません。
改善
Dataset.bat
の音声スライスと書き起こしをよりカスタマイズできるように(スライスの秒数設定や書き起こしのWhisperモデル指定や言語指定等)Style.bat
のスタイル分けで、スタイルごとのサンプル音声を指定した数だけ複数再生できるように。また新しい次元削減方法(UMAP)と新しいスタイル分けの方法(DBSCAN)を追加(UMAPのほうがよくスタイルが分かれるかもしれません)App.bat
での音声合成時に複数話者モデルの場合に話者を指定できるように- colabのノートブックで、音声ファイルのみからデータセットを作成するオプション部分を追加
- クラウド実行等の際にパスの指定をこちらでできるように、パスの設定を
configs/paths.yml
にまとめた(colabのノートブックもそれに伴って更新)。デフォルトはdataset_root: Data
とassets_root: model_assets
なので、クラウド等でやる方はここを変更してください。 - どのステップ数の出力がよいかの「一つの」指標として SpeechMOS を使うスクリプトを追加:
python speech_mos.py -m <model_name>
ステップごとの自然性評価が表示され、mos_results
フォルダのmos_{model_name}.csv
とmos_{model_name}.png
に結果が保存される。読み上げさせたい文章を変えたかったら中のファイルを弄って各自調整してください。あくまでアクセントや感情表現や抑揚を全く考えない基準での評価で、目安のひとつなので、実際に読み上げさせて選別するのが一番だと思います。
- 学習時のウォームアップオプションを機能するように( @kale4eat 様によるPRです、ありがとうございます!)。前処理時に生成される
config.json
のtrain
のwarmup_epochs
を変更することで、ウォームアップのエポック数を変更できます。デフォルトは0
で今までと同じ学習率の挙動です。
その他
Dataset.bat
の音声スライスでノーマライズ機能を削除(学習前処理で行えるため)Train.bat
の音量ノーマライズと無音切り詰めをデフォルトでオフに変更- 学習時の進捗を全体エポック数で表示し、学習全体の進捗を見やすいように( @RedRayz 様によるPRです、ありがとうございます!)
- その他バグ修正等( @tinjyuu 様、 @darai0512 様ありがとうございます!)
config.json
にスタイル埋め込み部分を学習しないfreeze_style
オプションを追加(デフォルトはfalse
)
TIPS
- 日本語学習の場合、
config.json
のfreeze_bert
とfreeze_en_bert
をtrue
にしておくと、英語と中国語の発話能力が学習の過程で落ちないかもしれませんが、あまり比較していなので分かりません。
v1.2 (2023-12-31)
- グラボがないユーザーでの音声合成をサポート、
Install-Style-Bert-VITS2-CPU.bat
でインストール。 - Google Colabでの学習をサポート、ノートブックを追加
- 音声合成のAPIサーバーを追加、
python server_fastapi.py
で起動します。API仕様は起動後に/docs
にて確認ください。( @darai0512 様によるPRです、ありがとうございます!) - 学習時に自動的にデフォルトスタイル Neutral を生成するように。特にスタイル指定が必要のない方は、学習したらそのまま音声合成を試せます。これまで通りスタイルを自分で作ることもできます。
- マージ機能の新規追加:
Merge.bat
,webui_merge.py
- 前処理のリサンプリング時に音声ファイルの開始・終了部分の無音を削除するオプションを追加(デフォルトでオン)
スタイルテキスト (style text)
がスタイル指定と紛らわしかったので、アシストテキスト (assist text)
に変更- その他コードのリファクタリング
v1.1 (2023-12-29)
- TrainとDatasetのWebUIの改良・調整(一括事前処理ボタン等)
- 前処理のリサンプリング時に音量を正規化するオプションを追加(デフォルトでオン)
v1.0 (2023-12-27)
- 初版