![見出し画像](https://assets.st-note.com/production/uploads/images/127243534/rectangle_large_type_2_761eb935017e4d5dd21c2d8831342f14.png?width=1200)
Google Colab で Style-Bert-VITS2 を試す
「Google Colab」で「Style-Bert-VITS2」を試したのでまとめました。
1. Style-Bert-VITS2
「Style-Bert-VITS2」は、入力されたテキストの内容をもとに感情豊かな音声を生成する「Bert-VITS2 v2.1」を元に、感情や発話スタイルを強弱込みで自由に制御できるようにしたツールです。
2. 学習データの準備
今回は、「東北ずんこ・ずんだもんプロジェクト」で提供されている「ずんだもん ノーマル 朗読324」を使います。
(1) 「東北ずんこ・ずんだもんプロジェクト」の「マルチモーダルデータベース」を開いてログインし、「ITAコーパスマルチモーダルデータベース」の「ずんだもん ノーマル 朗読324」の「ボイスデータ」をクリック。
![](https://assets.st-note.com/img/1704884988516-TLT1IqB1Zg.png?width=1200)
(2) 「ITAコーパス」のリポジトリから台本「recitation_transcript_utf8.txt」をダウンロード。
![](https://assets.st-note.com/img/1704885148397-ukdx8GnAeC.png?width=1200)
3. 学習
学習の手順は、次のとおりです。
(1) 公式のノートブックを開き、Colabのメニュー「ファイル→ドライブにコピーを保存」で自分のドライブに移動。
(2) 「0. 環境構築」の2つのセルを実行。
パッケージをインストール後、Googleドライブにマウントします。
(3) 「1. 初期設定」のセルを実行。
「configs/paths.yml」に「dataset_root」と「assets_root」を設定します。
・dataset_root : 学習に必要なファイルや途中経過が保存されるディレクトリ
・assets_root : 学習結果(音声合成に必要なファイルたち)が保存されるディレクトリ
(4) 「2. 学習に使うデータ準備」の「2.2 音声ファイルと書き起こしデータがすでにある場合」のセルを実行。
dataset_rootフォルダ (/content/drive/MyDrive/Style-Bert-VITS2/Data) が生成されます。
(5) Dataフォルダ直下に以下のように学習データを配置。
今回はモデル名を「zundamon」としました。
・Data フォルダ
・zundamon フォルダ
・ recitation_transcript_utf8.txt
・raw フォルダ
・recitation001〜324.wav
(6) 以下のコードのセルを追加および実行し、「recitation_transcript_utf8.txt」を「esd.list」に変換。
# ファイルを読み込む
with open(dataset_root + "/zundamon/recitation_transcript_utf8.txt", "r", encoding="utf-8") as file:
lines = file.readlines()
# コンバート
result = []
for line in lines:
strs = line.split(",")[0].split(":")
result.append("recitation" + strs[0][-3:] + ".wav|zundamon|JP|" + strs[1] + "\n")
# 変更をファイルに保存
with open(dataset_root + "/zundamon/esd.list", "w", encoding="utf-8") as file:
file.writelines(result)
・recitation_transcript_utf8.txt
RECITATION324_001:女の子がキッキッ嬉しそう。,オンナノコガキッキッウレシソー。
RECITATION324_002:ツァツォに旅行した。,ツァツォニリョコーシタ。
RECITATION324_003:民衆がテュルリー宮殿に侵入した。,ミンシュウガテュルリーキュウデンニシンニュウシタ。
:
・esd.list
recitation001.wav|zundamon|JP|女の子がキッキッ嬉しそう。
recitation002.wav|zundamon|JP|ツァツォに旅行した。
recitation003.wav|zundamon|JP|民衆がテュルリー宮殿に侵入した。
:
(7) 「esd.list」内の「去々年、虚数とヘ長調について学んだ。」の行を削除
次の前処理実行時に「去々年」の読み方がわからなくエラーになるため、先に削除しておきます。
(8) 「3. 学習の前処理」のセルを以下のように編集して実行。
モデル名に「zundamon」を指定し、音声ファイルの音量の正規化、無音空間の削除を有効化しました。
# 上でつけたフォルダの名前`Data/{model_name}/`
model_name = "zundamon"
# 学習のバッチサイズ。VRAMのはみ出具合に応じて調整してください。
batch_size = 4
# 学習のエポック数(データセットを合計何周するか)。
# 100ぐらいで十分かもしれませんが、もっと多くやると質が上がるのかもしれません。
epochs = 100
# 保存頻度。何ステップごとにモデルを保存するか。分からなければデフォルトのままで。
save_every_steps = 1000
# 音声ファイルの音量を正規化するかどうか。`True`もしくは`False`
normalize = True
# 音声ファイルの開始・終了にある無音区間を削除するかどうか
trim = True
(9) 前処理のセルを実行。
学習データに対して前処理が実行されます。
(10) 「4. 学習」のセルを以下のように編集して実行。
モデル名に「zundamon」を指定して、学習が実行されます。T4で3時間11分かかりました。
# 上でつけたモデル名を入力。学習を途中からする場合はきちんとモデルが保存されているフォルダ名を入力。
model_name = "zundamon"
4. 推論
推論の手順は、次のとおりです。
(1) ノートブック最後の「学習結果を試すならここから」のセルを実行。
(2) 「https://XXXX.gradio.live」が表示されたらクリック。
![](https://assets.st-note.com/img/1704886702019-2pWjAMoWb6.png?width=1200)
(3) 「ロード」でモデルをロードし、テキストにセリフを入力し、「音声合成」で音声ファイルを生成し、再生ボタンで音声を再生。
![](https://assets.st-note.com/img/1704886840003-3A7DHOic1O.png?width=1200)