Releases: litagin02/Style-Bert-VITS2
2.6.0
v2.6.0 (2024-06-16)
新機能
モデルのマージ時に、今までの new = (1 - weight) * A + weight * B
の他に、次を追加
new = A + weight * (B - C)
: 差分マージnew = a * A + b * B + c * C
: 加重和マージnew = A + weight * B
: ヌルモデルのマージ
差分マージは、例えばBを「Cと同じ話者だけど囁いているモデル」とすると、B - C
が囁きベクトル的なものだと思えるので、それをAに足すことで、Aの話者が囁いているような音声を生成できるようになります。
また、加重和でnew = A - B
を作って、それをヌルモデルマージで別のモデルに足せば、実質差分マージを実現できます。また謎にnew = -A
やnew = 41 * A
等のモデルも作ることができます。
これらのマージの活用法については各自いろいろ考えて実験してみて、面白い使い方があればぜひ共有してください。
囁きについて実験的に作ったヌルモデルをこちらに置いています。これをヌルモデルマージで使うことで、任意のモデルを囁きモデルにある程度は変換できます。
改善
- スタイルベクトルのマージ部分のUIの改善
- WebUIの
App.bat
の起動が少し重いので、それぞれの機能を分割したDataset.bat
,Inference.bat
,Merge.bat
,StyleVectors.bat
,Train.bat
を追加 (今までのApp.bat
もこれまで通り使えます)
v2.5.1 (2024-06-14)
ライセンスとのコンフリクトから、利用規約を開発陣からのお願いとデフォルトモデルの利用規約に変更しました。
2.5.0
v2.5.0 (2024-06-02)
このバージョンから利用規約が追加されました。ご利用の際は必ずお読みください。
新機能等
- デフォルトモデルに あみたろの声素材工房 のあみたろ様が公開しているコーパスとライブ配信音声を利用して学習した小春音アミとあみたろモデルを追加(あみたろ様には事前に連絡して許諾を得ています)
- アプデの場合は
Initialize.bat
をダブルクリックすればモデルをダウンロードできます(手動でダウンロードしてmodel_assets
フォルダに入れることも可能)
- アプデの場合は
- 学習時に音声データをスタイルごとにフォルダ分けしておくことで、そのフォルダごとのスタイルを学習時に自動的に作成するように
inputs
からスライスして使う場合はinputs
直下に作りたいスタイルだけサブフォルダを作りそこに音声ファイルを配置Data/モデル名/raw
から使う場合もraw
直下に同様に配置- サブフォルダの個数が0または1の場合は、今まで通りのNeutralスタイルのみが作成されます
- batファイルでのインストールの大幅な高速化(Pythonのライブラリインストールにuvを使用)
- 学習時に「カスタムバッチサンプラーを無効化」オプションを追加。これにより、長い音声ファイルも学習に使われるようになりますが、使用VRAMがかなり増えたり学習が不安定になる可能性があります。
- よくある質問を追加
- 英語の音声合成の速度向上( @gordon0414 さんによるPRです、ありがとうございます!)
- エディターの各種機能改善(多くが @kamexy 様によるエディターリポジトリへのプルリク群です、ありがとうございます!)
- 選択した行の下に新規の行を作成できるように
- Mac使用時に日本語変換のエンターで音声合成が走るバグの修正
- ペースト時に改行を含まない場合は通常のペーストの振る舞いになるように修正
その他の改善
- 上のスタイル自動作成機能を既存モデルでも使えるような機能追加。具体的には、スタイル作成タブにて、フォルダ分けされた音声ファイルのディレクトリを任意に指定し、そのフォルダ分けを使って既存のモデルのスタイルの作成が可能に
- 音声書き起こしにkotoba-whisperを追加
- 音声書き起こし時にHugging FaceのWhisperモデルを使う際に、書き起こしを順次保存するように改善
- (ライブラリとしてのみ)依存関係の軽量化、音声合成時に読み上げテキストの読みを表す音素列を指定する機能を追加 + 様々な改善 ( @tsukumijima 様によるプルリクです、ありがとうございます!)
内部変更
- これまでpath管理に
configs/paths.yml
を使っていたが、configs/default_paths.yml
にリネームし、configs/paths.yml
はgitの管理対象外に変更
バグ修正
- Gradioのアップデートにより、モデル選択時やスタイルのDBSCAN作成時等に
TypeError: Type is not JSON serializable: WindowsPath
のようなエラーが出る問題を修正 - TensorboardをWebUIから立ち上げた際にエラーが出る問題の修正 (#129)
インストール手順
- sbv2.zipをダウンロードし、解凍してください。
- グラボがある方は、
Install-Style-Bert-VITS2.bat
をダブルクリックします。 - グラボがない方は、
Install-Style-Bert-VITS2-CPU.bat
をダブルクリックします。CPU版では学習はできませんが、音声合成とマージは可能です。
アップデート手順
- 2.4.1からは
Update-Style-Bert-VITS2.bat
をダブルクリックしてください。 - 2.4.1未満からはアップデートができないので、sbv2.zipをダウンロードして新しい場所に新規インストールの上、手動で元のバージョンのところの
model_assets
やData
を移行するなどしてください。
2.4.1
v2.4.1 (2024-03-16)
batファイルでのインストール・アップデート方法の変更(インストール方法以外の変更はありません)
諸事情により、インストール・アップデートのbatファイルを変更しました(Gitが使えないのでバージョンアップ時のアップデートの対応が困難だったため、Gitがない環境の場合はPortableGitをダウンロードして使うように)。
伴って、これまでWindowsでbatファイルをダブルクリックしてインストールしていた方は再インストールが必須となります。大変申し訳ありません。
インストール手順
(インストールの流れは変わりませんが、batファイルは変わっているので、新しいzipを必ずダウンロードしてください)
- sbv2.zipをダウンロードし、解凍してください。
- グラボがある方は、
Install-Style-Bert-VITS2.bat
をダブルクリックします。 - グラボがない方は、
Install-Style-Bert-VITS2-CPU.bat
をダブルクリックします。CPU版では学習はできませんが、音声合成とマージは可能です。
アップデート手順
以前のバージョンからのアップデート
今までの環境を全て削除して新しくインストールする必要があります。
移行方法:
- 重要なデータが入っている可能性のある
Data
フォルダとmodel_assets
フォルダをバックアップ - 上のインストール手順から、新しい場所にStyle-Bert-VITS2をインストール
- インストールが終了したら、バックアップした
Data
フォルダとmodel_assets
フォルダを新しいStyle-Bert-VITS2
フォルダにコピー - これまでインストールされていたフォルダ(batファイルたち含む)は削除しても構いません
今後のアップデート
今後は、新しくインストールされた中のUpdate-Style-Bert-VITS2.bat
をダブルクリックしてください。今までのUpdate-Style-Bert-VITS2.bat
等のファイルは使えません。
2.4.0
v2.4.0 (2024-03-15)
大規模リファクタリング・日本語処理のワーカー化と機能追加等。データセット作り・学習・音声合成・マージ・スタイルWebUIは全てapp.py
(App.bat
) へ統一されましたのでご注意ください。
アップデート手順
- アップデートにより多くのファイルが移動したり使えなくなったりしたので、それらを削除するClean.batを
Update-Style-Bert-VITS2.bat
と同じ場所に保存して実行することを推奨します。 - 2.3未満(辞書・エディター追加前)からのアップデートの場合は、Update-to-Dict-Editor.batをダウンロードし、
Style-Bert-VITS2
フォルダがある場所(インストールbatファイルとかがあったところ)においてダブルクリックしてください。 - それ以外の場合は、単純に今までの
Update-Style-Bert-VITS2.bat
でアップデートできます。
内部改善
- tsukumijimaさんによる大規模リファクタリングのプルリク によって、内部コードが非常に整理され可読性が高まりライブラリ化もされた。@tsukumijima さん大変な作業を本当にありがとうございます!
- ライブラリとして
pip install style-bert-vits2
によりすぐにインストールでき、音声合成部分の機能が使えます(使用例は/library.ipynbを参照してください) - その他このプルリクに動機づけられ、多くのコードのリファクタリング・型アノテーションの追加等を行った
- 日本語処理のpyopenjtalkをソケット通信を用いて別プロセス化し、複数同時に学習や音声合成を立ち上げても辞書の競合エラーが起きないように。@kale4eat さんによるPR です、ありがとうございます!
バグ修正
- 上記にもある通り、音声合成と学習前処理など、日本語処理を扱うものを2つ以上起動しようとするとエラーが発生する仕様の解決。ユーザー辞書は追加すれば常にどこからでも適応されます。
raw
フォルダの直下でなくサブフォルダ内に音声ファイルがある場合に、wavs
フォルダでもその構造が保たれてしまい、書き起こしファイルとの整合性が取れなくなる挙動を修正し、常にwav
フォルダ直下へwav
ファイルを保存するように変更- スライス時に元ファイル名にピリオド
.
が含まれると、スライス後のファイル名がおかしくなるバグの修正
機能改善・追加
- 各種WebUIを一つ
app.py
App.bat
に統一 - その他以下の変更や、軽微なUI・説明文の改善等
データセット作成
- スライス処理の高速化(マルチスレッドにした、大量にスライス元ファイルファイルがある場合に高速になります)、またスライス元のファイルを
wav
以外のmp3
やogg
などの形式にも対応 - スライス処理時に、ファイル名にスライスされた開始終了区間を含めるオプションを追加 (@aka7774 さんによるPRです、ありがとうございます!)
- 書き起こしの高速化、またHugging FaceのWhisperモデルを使うオプションを追加。バッチサイズを上げることでVRAMを食う代わりに速度が大幅に向上します。
学習
- 学習元の音声ファイル(
Data/モデル名/raw
にいれるやつ)を、wav
以外のmp3
やogg
などの形式にも対応(前処理段階で自動的にwav
ファイルに変換されます)(ただし変わらず1ファイル2-12秒程度の範囲の長さが望ましい)
音声合成
- 音声合成時に、生成音声の音の高さ(音高)と抑揚の幅を調整できるように(ただし音質が少し劣化する)。
App.bat
やEditor.bat
のどちらからでも使えます。 Editor.bat
の複数話者モデルでの話者指定を可能にEditor.bat
で、改行を含む文字列をペーストすると自動的に欄が増えるように。また「↑↓」キーで欄を追加・行き来できるように(エディター側で以前に既にアプデしていました)Editor.bat
でモデル一覧のリロードをメニューに追加
API
server_fastapi.py
の実行時に全てのモデルファイルを読み込もうとする挙動を修正。音声合成がリクエストされて初めてそのモデルを読み込むように変更(APIを使わない音声合成のときと同じ挙動)server_fastapi.py
の音声合成エンドポイント/voice
について、GETメソッドに加えてPOSTメソッドを追加。GETメソッドでは多くの制約があるようなのでPOSTを使うことが推奨されます。
CLI
preprocess_text.py
で、書き起こしファイルでの音声ファイル名を自動的に正しいData/モデル名/wavs/
へ書き換える--correct_path
オプションの追加(WebUIでは今までもこの挙動でした)- その他上述のデータセット作成の機能追加に伴うCLIのオプションの追加(詳しくはCLI.mdを参照)
2.3.1 読みエラーのオプション追加等
v2.3.1 (2024-02-27)
バグ修正
- colabの学習用ノートブックが動かなかったのを修正
App.bat
やserver_fastapi.py
では読めない文字でまだエラーが発生するようになっていたので、推論時は必ず読めない文字を無視して強引に読むように挙動を変更
改善
- 読みが取得できない場合に、テキスト前処理完了時にエラーで中断する今までの挙動に加えて、「読み取得失敗ファイルを学習に使わずに進める」もしくは「読めない文字を無視して読んでファイルを学習に使い進める」というオプションを追加。
- マージ方法に線形補間の他に球面線形補完を追加 (@frodo821さんによるPRです、ありがとうございます!)
- デプロイ用
.dockerignore
を更新
アップデート手順
- 2.3未満からのアップデートの場合は、Update-to-Dict-Editor.batをダウンロードし、
Style-Bert-VITS2
フォルダがある場所(インストールbatファイルとかがあったところ)においてダブルクリックしてください。 - 2.3からのアップデートの場合は、単純に今までの
Update-Style-Bert-VITS2.bat
でアップデートできます。
2.3: ユーザー辞書機能とエディターの追加
v2.3 (2024-02-26)
大きな変更
大きい変更をいくつかしたため、アップデートはまた専用の手順が必要です。下記の指示にしたがってください。
ユーザー辞書機能
あらかじめ辞書に固有名詞を追加することができ、それが学習時・音声合成時の読み取得部分に適応されます。辞書の追加・編集は次のエディタ経由で行ってください。または、手持ちのOpenJTalkのcsv形式の辞書がある場合は、dict_data/default.csv
ファイルを直接上書きや追加しても可能です。
使えそうな辞書(ライセンス等は各自ご確認ください)(他に良いのがあったら教えて下さい):
辞書機能部分の実装 は、中のREADMEにある通り、VOICEVOX Editor のものを使っており、この部分のコードライセンスはLGPL-3.0です。
音声合成専用エディタ
音声合成専用エディタを追加。今までのWebUIでできた機能のほか、次のような機能が使えます(つまり既存の日本語音声合成ソフトウェアのエディタを真似ました):
- セリフ単位でキャラや設定を変更しながら原稿を作り、それを一括で生成したり、原稿を保存等したり読み込んだり
- GUIよる分かりやすいアクセント調整
- ユーザー辞書への単語追加や編集
Editor.bat
をダブルクリックかpython server_editor.py --inbrowser
で起動します。エディター部分はこちらの別リポジトリになります。フロントエンド初心者なのでプルリクや改善案等をお待ちしています。
バグ修正
- 特定の状況で読みが正しく取得できず
list index out of range
となるバグの修正 - 前処理時に、書き起こしファイルのある行の形式が不正だと、書き起こしファイルのそれ以降の内容が消えてしまうバグの修正
- faster-whisperが1.0.0にメジャーバージョンアップされ(今のところ)大幅に劣化したので、バージョンを0.10.1へ固定
改善
- テキスト前処理時に、読みの取得の失敗等があった場合に、処理を中断せず、エラーがおきた箇所を
text_error.log
ファイルへ保存するように変更。 - 音声合成時に、読めない文字があったときはエラーを起こさず、その部分を無視して読み上げるように変更(学習段階ではエラーを出します)
- コマンドラインで前処理や学習が簡単にできるよう、前処理を行う
preprocess_all.py
を追加(詳しくはCLI.mdを参照) - 学習の際に、自動的に自分のhugging faceリポジトリへ結果をアップロードするオプションを追加。コマンドライン引数で
--repo_id username/my_model
のように指定してください(詳しくはCLI.mdを参照)。🤗の無制限ストレージが使えるのでクラウドでの学習に便利です。 - 学習時にデコーダー部分を凍結するオプションの追加。品質がもしかしたら上がるかもしれません。
initialize.py
に引数--dataset_root
と--assets_root
を追加し、configs/paths.yml
をその時点で変更できるようにした
その他
- paperspaceでの学習の手引きを追加、paperspaceでのimageに使えるDockerfileを追加
- CLIでの各種処理の実行の仕方を追加
- Hugging Face spacesで遊べる音声合成エディタをデプロイするためのDockerfileを追加
アップデート手順
-
Update-to-Dict-Editor.batをダウンロードし、
Style-Bert-VITS2
フォルダがある場所(インストールbatファイルとかがあったところ)においてダブルクリックしてください。 -
手動での場合は、以下の手順で実行してください:
git pull
venv\Scripts\activate
pip uninstall pyopenjtalk-prebuilt
pip install -U -r requirements.txt
# python initialize.py # これを1.x系からのアップデートの場合は実行してください
python server_editor.py --inbrowser
新規インストール手順
このzipをダウンロードし、解凍してください。
を展開し、Install-Style-Bert-VITS2.bat
をダブルクリックしてください。
2.2
v2.2 (2024-02-09)
変更・機能追加
- bfloat16オプションはデメリットしか無さそうなので、常にオフで学習するよう変更
- バッチサイズのデフォルトを4から2に変更。学習が遅い場合はバッチサイズを下げて試してみて、VRAMに余裕があれば上げてください。JP-Extra使用時でのバッチサイズごとのVRAM使用量目安は、1: 6GB, 2: 8GB, 3: 10GB, 4: 12GB くらい、
VRAM使用量 = 4 + 2 * バッチサイズ
程度のようです。 - 学習の際の検証データ数をデフォルトで0に変更し、また検証データ数を学習用WebUIで指定できるようにした
- Tensorboardのログ間隔を学習用WebUIで指定できるようにした
- UIのテーマを
common/constants.py
のGRADIO_THEME
で指定できるようにした
バグ修正
- JP-Extra使用時にバッチサイズが1だと学習中にエラーが発生するバグを修正
- 「こんにちは!?!?!?!?」等、感嘆符等の記号が連続すると学習・音声合成でエラーになるバグを修正
—
(em dash, U+2014) や―
(quotation dash, U+2015) 等のダッシュやハイフンの各種変種が、種類によって-
(通常の半角ハイフン)に正規化されたりされていなかったりする処理を、全て正規化するように修正
新規インストール
Style-Bert-VITS2.zipを展開して中のInstall-Style-Bert-VITS2.batをダブルクリックでインストール(グラボがない方はInstall-Style-Bert-VITS2-CPU.batをダブルクリック)
アップデート
- 2.xからのアップデートには以前からある
Update-Style-Bert-VITS2.bat
、1.xからのアップデートするには、Update-to-JP-Extra.batを、Style-Bert-VITS2フォルダがあるフォルダ(Install-Style-Bert-VITS2.bat
とかがあったフォルダ)に保存してダブルクリック - 2.0.1でデフォルトモデルをJP-Extra版へアップデートしたので、まだアップデートしていなくて使いたい方はこのbatファイルを
Style-Bert-VITS2
フォルダがある場所(インストールbatファイルとかがあったところ)においてダブルクリック(既にやっている人は必要ありません)
2.1
v2.1 (2024-02-07)
変更
- 学習の際、デフォルトではbfloat16オプションを使わないよう変更(学習が発散したり質が下がることがある模様)
- 学習の際のメモリ使用量を削減しようと頑張った
バグ修正や改善
- 学習WebUIからTensorboardのログを見れるように
- 音声合成(やそのAPI)において、同時に別の話者が選択され音声合成がリクエストされた場合に発生するエラーを修正
- モデルマージ時に、そのレシピを
recipe.json
ファイルへ保存するように変更 - 「改行で分けて生成」がより感情が乗る旨の明記等、軽微な説明文の改善
- 「
ーーそれは面白い
」や「なるほど。ーーーそういうことか。
」等、長音記号の前が母音でない場合、長音記号ー
でなくダッシュ―
の勘違いだと思われるので、ダッシュ記号として処理するように変更
新規インストール
Style-Bert-VITS2.zipを展開して中のInstall-Style-Bert-VITS2.batをダブルクリックでインストール(グラボがない方はInstall-Style-Bert-VITS2-CPU.batをダブルクリック)
アップデート
- 2.xからのアップデートには以前からある
Update-Style-Bert-VITS2.bat
、1.xからのアップデートするには、Update-to-JP-Extra.batを、Style-Bert-VITS2フォルダがあるフォルダ(Install-Style-Bert-VITS2.bat
とかがあったフォルダ)に保存してダブルクリック - 2.0.1でデフォルトモデルをJP-Extra版へアップデートしたので、まだアップデートしていなくて使いたい方はこのbatファイルを
Style-Bert-VITS2
フォルダがある場所(インストールbatファイルとかがあったところ)においてダブルクリック(既にやっている人は必要ありません)
2.0.1 デフォルトモデルのアップデートとバグ修正
v2.0.1 (2024-02-05)
軽微なバグ修正や改善
- スタイルベクトルに
NaN
が含まれていた場合(主に音声ファイルが極端に短い場合に発生)、それを学習リストから除外するように修正 - colabにマージの追加
- 学習時のプログレスバーの表示がおかしかったのを修正
- デフォルトのjvnvモデルをJP-Extra版にアップデート。
アップデート方法
- 2.0からのアップデートには以前からある
Update-Style-Bert-VITS2.bat
、1.xからのアップデートするには、Update-to-JP-Extra.batを、Style-Bert-VITS2フォルダがあるフォルダ(Install-Style-Bert-VITS2.bat
とかがあったフォルダ)に保存してダブルクリック - 新しいデフォルトモデルを使いたい方は手動でこちらからダウンロードするか、
python initialize.py
をするか、このbatファイルをStyle-Bert-VITS2
フォルダがある場所(インストールbatファイルとかがあったところ)においてダブルクリックしてください
新規インストール
Style-Bert-VITS2.zipを展開して中のInstall-Style-Bert-VITS2.batをダブルクリックでインストール(グラボがない方はInstall-Style-Bert-VITS2-CPU.batをダブルクリック)
2.0, 日本語特化版の対応
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」で統一)
アップデート方法
- 以前のバージョンからアップデートするには、以前のアップデートファイルは使えないので、今回専用のUpdate-to-JP-Extra.batを、Style-Bert-VITS2フォルダがあるフォルダ(
Install-Style-Bert-VITS2.bat
とかがあったフォルダ)に保存してダブルクリック git pull
派の人は、git pull
したあと仮想環境からpython initialize.py
を実行する必要があります。
新規インストール
Style-Bert-VITS2.zipを展開して中のInstall-Style-Bert-VITS2.batをダブルクリックでインストール(グラボがない方はInstall-Style-Bert-VITS2-CPU.batをダブルクリック)