本アプリケーションは、各種音声変換 AI(VC, Voice Conversion)を用いてリアルタイム音声変換を行うためのクライアントソフトウェアです。本ドキュメントではRVC(Retrieval-based-Voice-Conversion)に限定した音声変換のためのチュートリアルを行います。
以下、本家のRetrieval-based-Voice-Conversion-WebUIを本家 RVC と表記し、ddPn08 氏の作成したRVC-WebUIを ddPn08RVC と記載します。
- 学習については別途行う必要があります。
- 自身で学習を行う場合は本家 RVCまたはddPn08RVCで行ってください。
- ブラウザ上で学習用の音声を用意するには録音アプリ on Github Pagesが便利です。
- training の TIPSが公開されているので参照してください。
ダウンロードした zip ファイルを解凍して、start_http.bat
を実行してください。
ダウンロードファイルを解凍したのちに、startHttp.command
を実行してください。開発元を検証できない旨が示される場合は、再度コントロールキーを押してクリックして実行してください(or 右クリックから実行してください)。
リモートから接続する場合は、.bat
ファイル(win)、.command
ファイル(mac)の http が https に置き換わっているものを使用してください。
.bat
ファイル(win)や.command
ファイル(mac)を実行すると、次のような画面が表示され、初回起動時には各種データをインターネットからダウンロードします。
お使いの環境によりますが、多くの場合1~2分かかります。
起動に必要なデータのダウンロードが完了すると下記のような Launcher 画面が出ます。この画面から RVC を選択してください。
下記のような画面が出れば成功です。右上の?ボタンからマニュアルに移動できます。
起動時にダウンロードしたデータを用いて、すぐに音声変換を行うことができます。
下図の(1)で使用するマイクとスピーカーを選択して、(2)のスタートボタンを押してみてください。 数秒のデータロードの後に音声変換が開始されます。 なお、慣れていない方は、(1)では client device を選択してかマイクとスピーカーを選択することを推奨します。(server device との違いは後述します。)
GUI で設定できる項目は下図のようなセクションに分かれています。それぞれのセクションはタイトルをクリックすることで開閉できます。
タイトル横のアイコンはリンクになっています。
アイコン | リンク |
---|---|
Octocat | github のリポジトリへのリンク |
クエスションマーク | マニュアル へのリンク |
スパナ | 各種便利ツールへのリンク |
コーヒー | 開発者へ寄付するためのリンク |
設定を初期化します。
強制的に画面をリロードします
ランチャー画面に戻ります
start でサーバーを起動、stop でサーバーを停止します
リアルタイム変換の状況を示します。
声を出してから変換までのラグはbuf + res秒
です。調整の際は buf の時間が res よりも長くなるように調整してください。
なお、デバイスを server device モードで使用している場合はこの表示は行われません。コンソール側に表示されます。
音声変換後の音量です。
音声を切り取る一回の区間の長さ(ms)です。Input Chunk を短くするとこの数値が減ります。
Input Chunk と Extra Data Length を足したデータを変換にかかる時間です。Input Chunk と Extra Data Length のいずれでも短くすると数値が減ります。
アップロードしたモデルについて切り替えることができます。 モデルについては名前の下に[]で情報が示されます
- f0(=pitch)を考慮するモデルか
- f0: 考慮する
- nof0: 考慮しない
- モデルの学習に用いられたサンプリングレート
- モデルが用いる特徴量のチャンネル数(大きいほど情報を持っていて重い)
- 学習に用いられたクライアント
モデル、サーバに対する処理を実行するボタンが配置されています。
ONNX モデルを出力します。PyTorch のモデルを ONNX モデルに変換すると、推論が高速化される場合があります。
モデルをダウンロードします。主にモデルマージした結果を取得するために使います。
モデルをどの枠にセットするか選べます。セットしたモデルは Server Control の Switch Model で切り替えられます。
モデルをセットする際に、ファイルから読み込むか、インターネットからダウンロードするかを選択できます。この選択結果に応じて設定できる項目が変化します。
- file: ローカルファイルを選択してモデルを読み込みます。
- from net: インターネットからモデルをダウンロードします。
ファイルから読み込む設定にした場合に表示されます。
学習済みモデルをここで指定します。必須項目です。 ONNX 形式(.onnx)か PyTorch 形式(.pth)のいずれかを選択可能です。
- orginal-RVCで学習させた場合、
/logs/weights
に入っています。 - ddPn08RVCで学習させた場合、
/models/checkpoints
に入っています。
ファイルから読み込む設定にした場合に表示されます。
HuBERT で抽出した特徴を訓練データに近づける追加機能です。feature(.npy)とペアで使用します。
- orginal-RVCで学習させた場合、
/logs/実験名/add_XXX.index
という名前で保存されています。 - ddPn08RVCで学習させた場合、
/models/checkpoints/モデル名_index/モデル名.0.index
という名前で保存されています。
インターネットからダウロードする設定にした場合に表示されます。
ダウンロードするモデルを選択します。利用規約へのリンクが表示されるので、ご使用の際にはご確認ください。
声のピッチをどれくらい変換するかデフォルトの値を入れます。推論中に変換もできます。以下は設定の目安です。
- 男声 → 女声 の変換では+12
- 女声 → 男声 の変換では-12
ファイルから読み込む設定にした場合に表示されます。
上記の項目を設定した後、押すと model を使用できる状態にします。
インターネットからダウロードする設定にした場合に表示されます。
上記の項目を設定した後、押すと model を使用できる状態にします。
声のピッチを調整します。以下は設定の目安です。
- 男声 → 女声 の変換では+12
- 女声 → 男声 の変換では-12
学習で使用した特徴量に寄せる比率を指定します。Model Setting で feature と index を両方設定した時に有効です。 0 で HuBERT の出力をそのまま使う、1 で元の特徴量にすべて寄せます。 index ratio が 0 より大きいと検索に時間がかかる場合があります。
音声変換を行う音量の閾地です。この値より小さい rms の時は音声変換をせず無音を返します。 (この場合、変換処理がスキップされるので、あまり負荷がかかりません。)
一度の変換でどれくらいの長さを切り取って変換するかを決めます。これが大きいほど効率的に変換できますが、buf の値が大きくなり変換が開始されるまでの最大の時間が伸びます。 buff: におよその時間が表示されます。
音声を変換する際、入力にどれくらいの長さの過去の音声を入れるかを決めます。過去の音声が長く入っているほど変換の精度はよくなりますが、その分計算に時間がかかるため res が長くなります。 (おそらく Transformer がネックなので、これの長さの 2 乗で計算時間は増えます)
詳細はこちらの資料をご覧ください。
GPU を 2 枚以上持っている場合、ここで GPU を選べます。
client device mode と server device mode のどちらを使用するか選択します。音声変換が停止している時のみ変更できます。
それぞれのモードの詳細はこちらをご覧ください。
入力端末を選びます
出力端末を選びます
client device mode の時のみ表示されます。
start をおしてから stop を押すまでの音声が記録されます。 このボタンを押してもリアルタイム変換は始まりません。 リアルタイム変換は Server Control を押してください
モデルマージを行うことができます。
各マージ元モデルの成分量を設定します。成分量の比率に従って新しいモデルを生成します。
ブラウザ組み込みのノイズ除去機能の On/Off です。
- input:モデルへの入力音声の音量を増減します。1がデフォルト
- output:モデルからの出力音声の音量を増減します。1がデフォルト
ピッチを抽出するためのアルゴリズムを選びます。以下の二種類を選べます。
- 軽量な
pm
- 高精度な
harvest
- GPU を使用する
crepe
サーバ側で入力と出力を録音します。 入力はマイクの音声がサーバに送られて、それがそのまま録音されます。マイク ⇒ サーバの通信路の確認に使えます。 出力はモデルから出力されるデータがサーバ内で録音されます。(入力が正しいことが確認できたうえで)モデルの動作を確認できます。