怪談コンテストに猥談を出したら落選して朗読してもらえなかったので女友達に声質を借りてBert-VITS2で音声生成した件

## 手順

1. 小説を書きます（落選します）
1. ネット上の創作友達とその小説の朗読動画を作ります
1. また小説を書きます（落選します）
1. その友達に声質を借りる許可を取ります
1. その朗読動画の音声をBert-VITS2に学習させます
1. 感情が足りないので自分の声を学習させてマージします
1. 小説のテキストをそれっぽく編集して朗読させます
1. 動画にしてYouTubeにアップします

この記事では、主に上記「5」から「7」までについて記載します。

## 環境
- **OS**: Windows 11 Pro (24H2)
- **OS Build**: 26100.1.amd64fre.ge_release.240331-1435
- **GPU**: NVIDIA GeForce RTX 4070
- **Python**: 3.10.11

## 利用ソフト

Style-Bert-VITS2(Version 2.6.1)を使用させていただきました。
https://github.com/litagin02/Style-Bert-VITS2

![スクリーンショット 2024-12-29 093604.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2866483/614c904d-f9a1-9824-7d07-8afaef2d4c3a.png)

こちらを用いて、ローカルのWebUIで学習と音声生成が可能です。Bert-VITS2 v2.1とJapanese-Extraを基に開発されており、日本語として自然な感情や発話スタイル・強弱を含めることができます。詳細はGitHubページのReadMeを参照ください。

### 学習済みモデル利用規約

Style-Bert-VITS2に同梱されている学習済みモデルには利用規約が明示されています。

- **JVNVコーパス (jvnv-F1-jp, jvnv-F2-jp, jvnv-M1-jp, jvnv-M2-jp)**
https://sites.google.com/site/shinnosuketakamichi/research-topics/jvnv_corpus
ライセンスはCC BY-SA 4.0です。
https://creativecommons.org/licenses/by-sa/4.0/deed.ja
利用した場合、同クリエイティブコモンズライセンスを継承する必要があります。
</br>

- **小春音アミ (koharune-ami) / あみたろ (amitaro)**
クレジット表記、再配布制限、倫理的利用などの規約が下記に記載されています。
https://amitaro.net/voice/voice_rule/
https://amitaro.net/voice/livevoice/#index_id6
</br>

- **本記事で作成した学習済みモデル**
今回の学習データは、自分と、友人の声を録音したものを基に作成しています。これらの声質に関する肖像権は、それぞれの声の所有者に属します。当学習済みモデルは公開されておらず、彼女の声質の使用と動画公開にあたっては、事前に本人の許可を得ています。**他人の声を使用する際は、必ず事前に許可を得て、適切に権利を尊重しましょう。**

### セットアップ

上記ReadMeページから、Windows環境インストーラ用のZipをダウンロードし、「Install-Style-Bert-VITS2.bat」にてインストールしました。以下2点、止まったポイントのメモです。

#### Setupバッチの書換え
ただ、既存のpython環境を用いるため、同Zipファイル内の「Setup-Python.bat」を下記のように書き換えています。

```bat
@echo off
chcp 65001 > NUL
@REM https://github.com/Zuntan03/EasyBertVits2 より引用・改変

@REM Python環境を指定
set PYTHON_BASE_DIR=★既存のPythonの置き場をここに記載★
set PYTHON_CMD=%PYTHON_BASE_DIR%\python.exe
set PYTHON_DIR=%PYTHON_BASE_DIR%

if "%2" neq "" (
	set VENV_DIR=%~dp0%~2
) else (
	set VENV_DIR=%~dp0venv
)

echo --------------------------------------------------
echo PYTHON_CMD: %PYTHON_CMD%
echo PYTHON_DIR: %PYTHON_DIR%
echo VENV_DIR: %VENV_DIR%
echo --------------------------------------------------
echo.

if not exist %VENV_DIR%\ (
	echo --------------------------------------------------
	echo Creating virtual environment with venv...
	echo --------------------------------------------------
	echo Executing: "%PYTHON_CMD%" -m venv "%VENV_DIR%"
	"%PYTHON_CMD%" -m venv "%VENV_DIR%"
	if !errorlevel! neq 0 ( pause & exit /b !errorlevel! )
)

echo --------------------------------------------------
echo Completed.
echo --------------------------------------------------

```

もとのbatではPythonをダウンロードして仮想環境を構築していましたが、自分の環境ではうまく動きませんでした。自PCには別の機械学習用のPython環境がありましたので、それを参照するように書き換え、仮想環境はvirtualenvからvenvに変更しています。

#### ffmpegの追加

無事webUIが起動しましたが、文字起こしの際に以下のエラーとなりました。
```
FileNotFoundError: [WinError 2] The system cannot find the file specified
```
audio_utils.pyでFFMPEGが無いということでした。
https://ffmpeg.org/download.html
上記公式サイトからバイナリをダウンロードしてパスを通すことで、以降の処理が動きました。

## 学習時のポイント

WebUIのインストラクションに従って学習ができます。10秒程度の短い録音でも十分に声質を抽出できました。

冒頭に記載した通り、今回は過去に友人と作成した朗読動画の音声がありますので、その素材を用いています。しかし、その朗読音声だけでは感情に応じた抑揚が足りず、マージを行う必要がありました。以下画面の通り、「声質」・「声の高さ」を友人のものとし、「話し方」・「テンポ」に他の学習データを加えて補正します。

![スクリーンショット 2024-12-29 110755.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2866483/f96c876c-5e9c-cad8-83d9-4a3921ba45b4.png)


僕は過去にバ美肉動画を作ったことがあるので、その動画の音声を用いました。しかし、それだけでもまだ感情（**主にエロい成分**）が足りず、自分の肉声も加えて調整を繰り返します。深夜に一人でこの悪魔合体作業を行うのはなかなかの変態度です（筆者は子持ちの既婚者です）。

## 朗読作成時のポイント

「改行で分けて生成」を選ぶと、行ごとに感情を乗せてくれます。

ただ、小説のテキストをそのまま読ませると、たまにイントネーションがおかしくりますので、テキスト自体を微調整します。

![スクリーンショット 2024-12-29 110628.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2866483/f63a55ee-1301-2dff-69b9-dd539f0c0dc9.png)

具体的には、以下のような調整をしました。

- 「、」「…」などで間を調整する
- 「？」で語尾を上げる（足りない場合は？を連打）
- 漢字の読みが正しくない場合はカナで書く
- 同じ発音の別の単語に差し替えるのもあり

上記の「…」や「？」「！」などの感嘆符の解釈は、文字起こしで流し込んだテキストに依存すると思います。

## 動画作成（手動）

動画はMovavi Video Editor 2024で作成しました。原稿をPDFから画像に変換し、ページをめくるトランジションをつけただけの簡易なものです。

動画の最後に拍手の効果音を入れており、それは以下サイトよりEzAudioで生成しました。
https://ai-sound-generator.com/jp.php

BGMや動画生成もAIでやってみたかったですが、有料のサービスも多く、人間が手でやるほうが適している場合もあります。それはまたの機会にしたいと思います。

## 生成物

ということで、元小説と生成物を貼っておきます。タイトルに記載の通り、入賞者は朗読してもらえる企画でした。声質の主ご本人曰く、自分では読まない作品だが、AI生成音声ということが分かるので許すとのことでした。

ノベルアッププラス 代々木怪談コンテスト2024応募小説「芝浜の死神」

https://novelup.plus/story/605044141

同作AI朗読動画

https://youtu.be/XphuGfMe2nw

以上、今年もお疲れ様でした。