👨‍👧

RVC WebUIで自分で録音した声を変換する

2023/04/21に公開

自分の音声を特定の話者の声質に変換する技術がWebUI付きで公開されました。使い方をまとめます。また、自身の音声を録音して音声変換した例を共有します。

おことわり

筆者は音声信号処理は初心者であり、参考書に1冊目を通した程度の理解度のため、説明に誤りが含まれる可能性があります。ご容赦ください。

動作環境

  • Ubuntu20.04
  • Python3.8.10

RVC WebUIとは

RVCとはリポジトリにも記載のある通り、Retrieval-based Voice Conversionの略です。現状の技術的な情報はgithubに公開されているソースコードがメインになっているかと思います。arXiv等技術詳細が公開されていると紹介しやすいのですが、力不足で見つかりませんでした。(2023/4/20時点)もし仕組みが紹介されている場所をご存じの方がいたらご紹介ください。

筆者の理解では、変換したい話者の音声のwavファイルを学習データとして用意し、話者の声質を表現する特徴を抽出した後、推論時に入力された音声の声質を、学習時の声質の特徴に置き換えたものと理解しています。

今回はRVC webUIの実行方法に絞って紹介します。

学習済みモデルの用意

@chihaya_369さんからRVC向け学習済みボイスモデルがMITライセンスで公開されました。再配布、商用利用、有料販売に対しても無料で使用することができます。今回はこちらで公開いただいた学習済みモデルを使用して音声変換をWebUIを経由して使用していきます。
https://chihaya369.booth.pm/items/4701666

上記のサイトにアクセスした後、BOOTHアカウントを作成し、右中段の「RVCモデル....zip」(243MB)をダウンロードします。こちらは後で適切な場所に配置します。

実行方法

実行には自身の声の録音とWebUIの設定が必要になります。順にまとめます。

自身の声を録音

スマホなどで録音した自分の音声を.wavファイルで保存しておきます。WebUI実行時にファイルまでの絶対パスを使用します。今回はスマホのAndroidアプリで録音しました。

WebUIの設定

下記のリポジトリをクローンして必要なライブラリをインストールします。pytorchのインストールを進められているので仮想環境をおすすめします、もしくはすでにインストールされている方はスキップできます。
https://github.com/liujing04/Retrieval-based-Voice-Conversion-WebUI

git clone https://github.com/liujing04/Retrieval-based-Voice-Conversion-WebUI
pip install torch torchvision torchaudio
pip install -r requirements.txt
sudo apt-get -y install ffmpeg

huggingface spaceから以下のモデルを手動でダウンロード
https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main

hubert_base.pt
./pretrained フォルダ以下の全てのファイル
./uvr5_weights フォルダ以下の全てのファイル
  1. クローンしたリポジトリのuvr5_weightsフォルダの中にhuggingface spaceからダウンロードした重みを配置します。

  2. 同様に、pretrainedフォルダの中にもhuggingface spaceからダウンロードしてきた重みを配置します。

  3. 次に、uvr5_weightsフォルダと同じ階層にhubert_base.ptを配置します。

  4. 最後に、ダウンロードした学習済みモデルが入ったRVCモデル....zipを解凍した中身をweightsフォルダ内に配置します。

  5. 以下のコマンドでWebUIを起動します。下記のようなWebUIがブラウザ上に表示されます。

cd Retrieval-based-Voice-Conversion-WebUI
python infer-web.py


6. 音源リストを更新をクリックし、左の音源推論ボタン右のトグルボタンからダウンロードしてきた学習済みモデルを選択します。画像ではAISO-HOWATTO.pthを選択しています。
7. 処理対象音声ファイルのパスを入力してください(デフォルトは正しいフォーマットの例です)欄に、録音した自身の音声の絶対パスを入力します。
8. ピッチ変更(整数、半音数、上下オクターブ12-12)欄から男性から女性の声に変換するには+, 女性から男性の声に変換するには-にピッチ数を調整します。男性が女性の声に変換する際はシンプルに+12でも問題ないです。
9. 画面右側の変換ボタンをクリックし、画面右の出力音声に変換音声が出力されれば完了です。

変換結果

音声ファイルの再生がgithub経由での公開になっています。現状は以下のリンクをクリックするとwavファイルがダウンロードされた後にローカルで再生して聴いてもらう形になります。記事内に埋め込める方法が分かり次第修正したいと思います。

元の音声

元の音声です。がっつり男の声です。再生時の音量にご注意ください。
https://raw.githubusercontent.com/ohashi3399/RVC-demo/master/booth.wav

学習済みモデルHOWATTO

ほわっと風味verに変換した音声です。
https://raw.githubusercontent.com/ohashi3399/RVC-demo/master/booth_HOWATTO.wav

学習済みモデルKAKKOII

かっこいい風味verに変換した音声です。
https://raw.githubusercontent.com/ohashi3399/RVC-demo/master/booth_KAKKOII.wav

学習済みモデルSARASARA

さらさら風味verに変換した音声です。
https://raw.githubusercontent.com/ohashi3399/RVC-demo/master/booth_SARASARA.wav

学習済みモデルSITTORI

しっとり風味verに変換した音声です。
https://raw.githubusercontent.com/ohashi3399/RVC-demo/master/booth_SITTORI.wav

学習済みモデルSYAKITTO

しゃきっと風味verに変換した音声です。
https://raw.githubusercontent.com/ohashi3399/RVC-demo/master/booth_SYAKITTO.wav
モデルの名前にもある印象と近い音声変換結果を得られていることが分かります。学習データである収録時の音声を、無響室など反響の少ない部屋で収録することでよりクリアな音声が得られるのかと思いました。また、今回の学習データは複数人の方の音声を混ぜて作成されたと記載がありましたので、混声による音質の低下の影響も考えられるかと思います。

一方で、音声自体は女性に変わっていますが、喋り方のくせや単語の発音などは、筆者の特徴が残されたまま音声が変換されていることが聴いて分かります。個人的には、音声合成で言葉尻をGUIで調整するのが面倒と感じてしまうため、自分の声で演じて修正できたほうが、より直感的な音声の編集が可能になると感じました。この点は特に、自分の音声を入力に使用することで、より具体的な解像度で理解することができました。

今回はベースの音声を無料で配布いただいた女性の学習済みモデルを使用しましたが、なりたい話者に依頼して学習データを録音してもらうことで、その話者の声質の再現が可能になります。応用としては俳優さんや声優さんが広く挙げられますが、祖父母や子供が小さいときの音声を撮っておくと、あとで音声付きで当時の音声が聞き返せる用になります。将来はこういった技術が当たり前の時代になるかも知れませんね。

まとめ

自身の音声を特定の話者の声質に変換するRVC WebUIの動作確認を行いました。音声変換は初めて挑戦してみましたが、自分の声がその場で違う音声で再生される経験は不思議でとても勉強になりました。音声は自分とはかけ離れているのに、なぜか自分の声だと分かるのも不思議な感覚でした。どこまで声を変換させると自分の声ではなくなる、と感じるのか調査してみたくなったので、いつか挑戦してみたいと思います。簡易なWebUIを使った音声変換ができるようになりました。

Discussion