虎の穴開発室ブログ

虎の穴ラボ株式会社所属のエンジニアが書く技術ブログです

MENU

【VOICEVOX × RVC】ずんだもんに自分の声で喋ってもらった #虎の穴ラボ Advent Calendar 2023

  • 本記事は 虎の穴ラボ Advent Calendar 2023 22日目の記事です
  • 昨日は naga さんの 『Whisper Micを使ってライブ配信リスナーと会話してみた』でした
  • 次回は 植竹 さんの『「サイバーリスクマネジメントの強化書」を読んだ感想』です。ご期待ください!

こんにちは、虎の穴ラボのT.Hです!
今年は生成AIの進化が目覚ましく、生活はもちろん業務の中でも身近な存在となりましたね
そんな2023年の締めとして、音声にまつわる生成AIの分野で何か面白いものが作れないか?という実験をした結果をご紹介させていただきます!

目次

概要

VOICEVOXで作成した音声を、Retrieval-based-Voice-Conversion-WebUI(以下RVC)を利用して自分の声に変換することを目指します!
全体の流れは以下の通りです

  1. 学習元音声となる自分の声を収録する
  2. 変換元音声となるずんだもんの読み上げ音声を作成する
  3. 1.の音声を使って自分の声を再現するための音声モデルを作成する
  4. 3.の音声モデルを使って2.で収録したずんだもんの声を自分の声に変換する

VOICEVOX

AIを使った音声合成ソフトウェアです
細やかなイントネーション調整ができることや、多種多様な音源が公開されていることが特徴です

RVC

AIを使ったボイスチェンジャーです
従来の手法に比べ、リアルタイム処理が可能なほど短時間で自然な変換が行えることが特徴です

環境

  • マシン : MacBook Pro M2

  • OS : Ventura 13.6.3

  • 学習元音声収録・加工 : Audacity 3.4.2 www.audacityteam.org

  • 学習・音声変換 : Retrieval-based-Voice-Conversion-WebUI 1006v2 github.com

  • 変換元音声作成 : VOICEVOX 0.14.10 voicevox.hiroshiba.jp

  • 変換元音源 : VOICEVOX:ずんだもん zunko.jp

学習元音声の処理

はじめにAudacityを使って、学習元となる自分の声を収録・加工します
学習には累計10分程度の音声が必要です
台本には芥川龍之介さんの「蜘蛛の糸」を使用させてきただきました
<芥川龍之介 蜘蛛の糸>

  • [録音]ボタン→収録→[停止]ボタン の操作で収録することができます
  • ノイズのサンプリングのために声が入っていない範囲を数秒分選択し、 [エフェクト]→[ノイズ除去と修復]→[ノイズを低減]→[ノイズプロファイルを取得] を選択します
  • cmd + A で音源全体を選択してから再度 [ノイズを低減] を開き、[OK] で処理を実行します
  • 音声を聞き直してノイズが残っているようであれば、一旦 cmd + Z で元に戻し、 [ノイズ低減(dB)(N)] のパラメータを調節して再度実行してみてください
  • [ファイル]→[オーディオをエクスポート] を選択し、 [形式] でWAVを選択して [エクスポート] を実行します

これで学習元音声の作成は完了です!

変換元音声の作成

次にVOICEVOXを使って、変換元となるずんだもんの音声を作成します
入力するテキストは、宮澤賢治さんの「雨ニモマケズ」を使用させていただきました
<宮澤賢治 〔雨ニモマケズ〕>

  • [ファイル]→[新規プロジェクト] でプロジェクトを作成し、テキストを入力します
  • 行ごとに発音を確認し、間違いがあれば修正します
  • 全ての行の終了無音を0.50に変更し、行ごとに区切りが生まれるように設定します
  • [ファイル]→[音声を繋げて書き出し] を選択し、音声ファイルを出力します

これで変換元音声の作成は完了です!

RVCの導入

今回の主役となるRVCの導入です
ここではREADMEを引用しつつ、途中で詰まってしまったところを紹介します

  • GitHubからダウンロード
    リリースページから1006v2版のソースコードをダウンロードします github.com

  • Pythonの導入
    最新版では学習に使うライブラリが動かなかったので、3.9系の最新である3.9.18をpyenvで導入しました

$ pyenv install 3.9.18
  • Pytorch関連ライブラリをインストール
$ pip install torch torchvision torchaudio
  • Poetryをインストール
$ brew install poetry
  • Poetryを使用して依存関係をインストール
$ poetry install
  • WebUIを起動する
$ ./run.sh
  • 起動に失敗した場合、エラーメッセージを確認して不足しているライブラリをインストールしてください
    私の環境では、以下の2つが不足していたのでインストールしました
    ※xzをインストールした場合は、Pythonを再インストールする必要があります
brew install xz aria2

音声モデルのトレーニング

最初に作成した学習元音声を入力に使用して、自分の声を再現するための音声モデルのトレーニングを行います
RVC WebUIが起動したら [トレーニング] タブを開き、各種項目を設定します
デフォルト値から変更したのは以下のパラメータです

  • モデル名 : 音声変換時に使用するので、自分で識別できる名称にします
  • モデルに高音ガイドがあるかどうか : False 歌唱ではないので、Falseに設定します
  • トレーニング用フォルダのパス : 学習元の音声が保存されているフォルダのパスを設定します

設定が完了したら、[ワンクリックトレーニング]を実行します
私の環境では60分ほどでトレーニングが完了しました

モデル推論

作成した音声モデルと変換元音声を使ったモデル推論を行います
これにより、ずんだもんの声を自分の声に変換します
[モデル推論] タブを開いて [音源リストとインデックスパスの更新] を実行すると、作成したモデルが一覧に表示されるので、選択します
デフォルト値から変更したのは以下のパラメータです

  • ピッチ変更 : -12
    高音→低音への変更のため、-12を設定します
  • 処理対象音声ファイルのパス : 変換元の音声のパスを設定します

設定が完了したら、 [変換] を実行します
私の環境では70秒の音声の処理で、約15秒かかりました
変換が完了すると、画面上で再生とダウンロードができるようになります

感想

「ずんだもんに自分の声で喋ってもらう」という目標を達成することができました!
最終的に出力される音声の品質をパラメータ調整によって上げる余地はまだまだありますので、今後も研究を続けていきたいと思います!

採用情報

虎の穴ラボでは一緒に働く仲間を募集中です!
この記事を読んで、興味を持っていただけた方はぜひ弊社の採用情報をご覧ください toranoana-lab.co.jp