This commit is contained in:
wataru 2023-05-19 00:59:13 +09:00
parent 3bf1aacd05
commit 5b01ca8c06
12 changed files with 780 additions and 229 deletions

View File

@ -48,25 +48,14 @@
<!-- 詳細は[こちら](https://zenn.dev/wok/books/0004_vc-client-v_1_5_1_x)に纏まっています。 -->
大きく 3 つの方法でご利用できます。難易度順に次の通りです。
大きく 2 つの方法でご利用できます。難易度順に次の通りです。
- Google Colaboratory での利用(MMVC のみ)
- 事前ビルド済みの Binary での利用
- Docker や Anaconda など環境構築を行った上での利用
本ソフトウェアや MMVC になじみの薄い方は上から徐々に慣れていくとよいと思います。
## (1) Google Colaboratory での利用(MMVC のみ)
Google が提供している機械学習プラットフォーム Colaboratory 上で実行できます。
MMVC のモデルをトレーニングが完了している場合、既に Colaboratory を利用していると思いますので、事前準備は必要ありません。ただし、ネットワーク環境や Colaboratory の状況によってボイスチェンジャのタイムラグが大きくなる傾向があります。
- [超簡単バージョン](https://github.com/w-okada/voice-changer/blob/master/VoiceChangerDemo_Simple.ipynb): 事前設定なしで Colab から実行できます。
- [普通バージョン](https://github.com/w-okada/voice-changer/blob/master/VoiceChangerDemo.ipynb): Google Drive と連携してモデルを読み込むことができます。
[解説動画](https://youtu.be/TogfMzXH1T0)
## (2) 事前ビルド済みの Binary での利用
## (1) 事前ビルド済みの Binary での利用
実行形式のバイナリをダウンロードして実行することができます。
Windows 版と Mac 版を提供しています。
@ -75,11 +64,10 @@ Windows 版と Mac 版を提供しています。
- Mac 版はダウンロードファイルを解凍したのちに、`startHttp.command`を実行してください。開発元を検証できない旨が示される場合は、再度コントロールキーを押してクリックして実行してください(or 右クリックから実行してください)。
- 初回起動時は各種データをダウンロードします。ダウンロードに時間がかかる可能性があります。ダウンロードが完了すると、ブラウザが立ち上がります。
- リモートから接続する場合は、`.bat`ファイル(win)、`.command`ファイル(mac)の http が https に置き換わっているものを使用してください。
- つくよみちゃん、あみたろ、黄琴まひろ、黄琴海月、の動作には content vec のモデルが必要となります。こちらの[リポジトリ](https://github.com/auspicious3000/contentvec)から、ContentVec_legacy 500 のモデルをダウンロードして、実行する`startHttp.command`や`start_http.bat`と同じフォルダに配置してください。
- DDSP-SVC の動作には、hubert-soft と enhancer のモデルが必要です。hubert-soft は[このリンク](https://github.com/bshall/hubert/releases/download/v0.1/hubert-soft-0d54a1f4.pt)からダウンロードして、バッチファイルがあるフォルダに格納してください。enhancer は[このサイト](https://github.com/openvpi/vocoders/releases/tag/nsf-hifigan-v1)から`nsf_hifigan_20221211.zip`ダウンロードして下さい。解凍すると出てくる`nsf_hifigan`というフォルダをバッチファイルがあるフォルダに格納してください。
- DDPS-SVC の encoder は hubert-soft のみ対応です。
- RVC で使用する場合の GUI の各項目説明は[こちら](tutorials/tutorial_rvc_ja_latest.md)をご覧ください
@ -93,24 +81,9 @@ Windows 版と Mac 版を提供しています。
(\*1) Google Drive からダウンロードできない方は[hugging_face](https://huggingface.co/wok000/vcclient000/tree/main)からダウンロードしてみてください
(\*2) 開発者が AMD のグラフィックボードを持っていないので動作確認していません。onnxruntime-directml を同梱しただけのものです。
(\*3) 解凍や起動が遅い場合、ウィルス対策ソフトのチェックが走っている可能性があります。ファイルやフォルダを対象外にして実行してみてください。(自己責任です)
- 各キャラクター専用(近々 RVC 版として提供予定)
| Version | OS | フレームワーク | link | サポート VC | サイズ |
| ---------- | ------------------------------------- | -------------- | -------------------------------------------------------------------------------------------------- | ----------- | ------ |
| v.1.5.1.14 | <span style="color: red;">mac</span> | - | [黄琴まひろ](https://drive.google.com/uc?id=1uZW-PSHttQuGXZf9vU7ZGufbYl-nIRs6&export=download) | - | 872MB |
| | <span style="color: red;">mac</span> | - | [あみたろ](https://drive.google.com/uc?id=1jc6YXcvt0_z1GezKSvqHQPYFmtZU2KaV&export=download) | - | 872MB |
| | <span style="color: red;">mac</span> | - | [黄琴海月](https://drive.google.com/uc?id=1ruaTdhrIJVdz__sDwZEeovzwxrk2ufLT&export=download) | - | 873MB |
| | <span style="color: blue;">win</span> | - | [つくよみちゃん](https://drive.google.com/uc?id=1QdeotmYP6nnoZt438kB8wvFbYF-C0bhq&export=download) | - | 823MB |
| | <span style="color: blue;">win</span> | - | [黄琴まひろ](https://drive.google.com/uc?id=1IJJQj6CHcbyvTwZ5LF6GZSk7FLs5OK6o&export=download) | - | 821MB |
| | <span style="color: blue;">win</span> | - | [黄琴海月](https://drive.google.com/uc?id=1fiymPcoYzwE1yxyIfC_FTPiFfGEC2jA8&export=download) | - | 823MB |
| | <span style="color: blue;">win</span> | - | [あみたろ](https://drive.google.com/uc?id=1Vt4WBEOAz0EhIWs3ZRFIcg7ELtSHnYfe&export=download) | - | 821MB |
\*1 つくよみちゃんはフリー素材キャラクター「つくよみちゃん」が無料公開している音声データを使用しています。(利用規約など、詳細は文末)
\*2 解凍や起動が遅い場合、ウィルス対策ソフトのチェックが走っている可能性があります。ファイルやフォルダを対象外にして実行してみてください。(自己責任です)
## (3) Docker や Anaconda など環境構築を行った上での利用
## (2) Docker や Anaconda など環境構築を行った上での利用
本リポジトリをクローンして利用します。Windows では WSL2 の環境構築が必須になります。また、WSL2 上で Docker もしくは Anaconda などの仮想環境の構築が必要となります。Mac では Anaconda などの Python の仮想環境の構築が必要となります。事前準備が必要となりますが、多くの環境においてこの方法が一番高速で動きます。**<font color="red"> GPU が無くてもそこそこ新しい CPU であれば十分動く可能性があります </font>(下記のリアルタイム性の節を参照)**。

View File

@ -45,28 +45,14 @@
# usage
Details are summarized [here](https://zenn.dev/wok/books/0004_vc-client-v_1_5_1_x).
This is an app for performing voice changes with MMVC and so-vits-svc.
It can be used in three main ways, in order of difficulty:
It can be used in two main ways, in order of difficulty:
- Using Google Colaboratory (MMVC only)
- Using a pre-built binary
- Setting up an environment with Docker or Anaconda and using it
For those who are not familiar with this software or MMVC, it is recommended to gradually get used to it from the top.
## (1) Use on Google Colaboratory (MMVC only)
You can run it on Google's machine learning platform, Colaboratory. If you have already used Colaboratory, you do not need to prepare anything as the training of MMVC model has been completed. However, the voice changer may have a large time lag depending on the network environment or the situation of Colaboratory.
- [Simple version](https://github.com/w-okada/voice-changer/blob/master/VoiceChangerDemo_Simple.ipynb): You can run it from Colab without any prior setup.
- [Normal version](https://github.com/w-okada/voice-changer/blob/master/VoiceChangerDemo.ipynb): You can load the model by cooperating with Google Drive.
[Explanation video](https://youtu.be/TogfMzXH1T0)
## (2) Usage with pre-built binaries
## (1) Usage with pre-built binaries
You can download and run executable binaries.
We offer Windows and Mac versions.
@ -77,10 +63,6 @@ We offer Windows and Mac versions.
- If you are connecting remotely, please use the `.command` file (Mac) or `.bat` file (Windows) with https instead of http.
- Tsukuyomi-chan, Ami-taro, Kogane Mahiro, and Kogane Kaigetsu require the Content Vec model for their actions. Please download the ContentVec_legacy 500 model from [this repository](https://github.com/auspicious3000/contentvec) and place it in the same folder as startHttp.command or start_http.bat to execute it.
- To run DDSP-SVC, you need to download the hubert-soft and enhancer models. Download hubert-soft from [this link](https://github.com/bshall/hubert/releases/download/v0.1/hubert-soft-0d54a1f4.pt) and store it in the folder with the batch files. Download nsf_hifigan_20221211.zip from [this site](https://github.com/openvpi/vocoders/releases/tag/nsf-hifigan-v1) for enhancer. After unzipping, store the nsf_hifigan folder in the folder with the batch files.
- The encoder of DDPS-SVC only supports hubert-soft.
- Please refer to [here](tutorials/tutorial_rvc_en_latest.md) for the description of each item of GUI to be used in RVC.
@ -97,23 +79,9 @@ We offer Windows and Mac versions.
(\*1) You can alson download from [hugging_face](https://huggingface.co/wok000/vcclient000/tree/main)
(\*2) The developer does not have an AMD graphics card, so it has not been tested. This package only includes onnxruntime-directml.
(\*3) If unpacking or starting is slow, there is a possibility that virus checking is running on your antivirus software. Please try running it with the file or folder excluded from the target. (At your own risk)
| Version | OS | Framework | link | VC Support | Size |
| ---------- | ------------------------------------- | --------- | -------------------------------------------------------------------------------------------------- | ---------- | ----- |
| v.1.5.1.14 | <span style="color: red;">mac</span> | - | [Tsukuyomi-chan](https://drive.google.com/uc?id=1ysTt0xOkWFSxyXfFm2GD7i5o22jce4B8&export=download) | - | 874MB |
| | <span style="color: red;">mac</span> | - | [Kikoto Mahiro](https://drive.google.com/uc?id=1uZW-PSHttQuGXZf9vU7ZGufbYl-nIRs6&export=download) | - | 872MB |
| | <span style="color: red;">mac</span> | - | [Amitaro](https://drive.google.com/uc?id=1jc6YXcvt0_z1GezKSvqHQPYFmtZU2KaV&export=download) | - | 872MB |
| | <span style="color: red;">mac</span> | - | [Kikoto Kurage](https://drive.google.com/uc?id=1ruaTdhrIJVdz__sDwZEeovzwxrk2ufLT&export=download) | - | 873MB |
| | <span style="color: blue;">win</span> | - | [Tsukuyomi-chan](https://drive.google.com/uc?id=1QdeotmYP6nnoZt438kB8wvFbYF-C0bhq&export=download) | - | 823MB |
| | <span style="color: blue;">win</span> | - | [Kikoto Mahiro](https://drive.google.com/uc?id=1IJJQj6CHcbyvTwZ5LF6GZSk7FLs5OK6o&export=download) | - | 821MB |
| | <span style="color: blue;">win</span> | - | [Kikoto Kurage](https://drive.google.com/uc?id=1fiymPcoYzwE1yxyIfC_FTPiFfGEC2jA8&export=download) | - | 823MB |
| | <span style="color: blue;">win</span> | - | [Amitaro](https://drive.google.com/uc?id=1Vt4WBEOAz0EhIWs3ZRFIcg7ELtSHnYfe&export=download) | - | 821MB |
\*1 Tsukuyo Michan uses free character "Tsukuyo Michan" voice data that is publicly available for free. (Details such as terms of use are at the end of the document)
\*2 If unpacking or starting is slow, there is a possibility that virus checking is running on your antivirus software. Please try running it with the file or folder excluded from the target. (At your own risk)
## (2-3) Usage after setting up the environment such as Docker or Anaconda
## (2) Usage after setting up the environment such as Docker or Anaconda
Clone this repository and use it. Setting up WSL2 is essential for Windows. Additionally, setting up virtual environments such as Docker or Anaconda on WSL2 is also required. On Mac, setting up Python virtual environments such as Anaconda is necessary. Although preparation is required, this method works the fastest in many environments. **<font color="red"> Even without a GPU, it may work well enough with a reasonably new CPU </font>(refer to the section on real-time performance below)**.

View File

@ -1,12 +1,12 @@
{
"name": "@dannadori/voice-changer-client-js",
"version": "1.0.129",
"version": "1.0.130",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@dannadori/voice-changer-client-js",
"version": "1.0.129",
"version": "1.0.130",
"license": "ISC",
"dependencies": {
"@types/readable-stream": "^2.3.15",

View File

@ -1,6 +1,6 @@
{
"name": "@dannadori/voice-changer-client-js",
"version": "1.0.129",
"version": "1.0.130",
"description": "",
"main": "dist/index.js",
"directories": {

View File

@ -1,3 +1,6 @@
import os
import sys
from fastapi import FastAPI, Request, Response, HTTPException
from fastapi.routing import APIRoute
from fastapi.middleware.cors import CORSMiddleware
@ -67,7 +70,20 @@ class MMVC_Rest:
app_fastapi.mount(
"/upload_dir", StaticFiles(directory=f"{UPLOAD_DIR}"), name="static"
)
app_fastapi.mount("/models", StaticFiles(directory="models"), name="static")
if sys.platform.startswith("darwin"):
p1 = os.path.dirname(sys._MEIPASS)
p2 = os.path.dirname(p1)
p3 = os.path.dirname(p2)
model_dir = os.path.join(p3, "models")
print("mac model_dir:", model_dir)
app_fastapi.mount(
"/models", StaticFiles(directory=model_dir), name="static"
)
else:
app_fastapi.mount(
"/models", StaticFiles(directory="models"), name="static"
)
restHello = MMVC_Rest_Hello()
app_fastapi.include_router(restHello.router)

View File

@ -60,6 +60,18 @@
"credit": "刻鳴時雨",
"description": "https://huggingface.co/yasyune/Shigure_Tokina_RVC"
},
{
"id": "Amitaro",
"lang": "ja-JP",
"tag": "",
"name": "あみたろ",
"modelUrl": "https://huggingface.co/wok000/vcclient_model/resolve/main/rvc/amitaro_contentvec_256/amitaro48k-100.pth",
"indexUrl": "https://huggingface.co/wok000/vcclient_model/resolve/main/rvc/amitaro_contentvec_256/amitaro48k.0.index.bin",
"featureUrl": "https://huggingface.co/wok000/vcclient_model/resolve/main/rvc/amitaro_contentvec_256/amitaro48k.0.big.npy",
"termsOfUseUrl": "https://huggingface.co/wok000/vcclient_model/raw/main/rvc/amitaro_contentvec_256/term_of_use.txt",
"credit": "あみたろ",
"description": ""
},
{
"id": "Amitaro_d",
"lang": "ja-JP",
@ -70,7 +82,7 @@
"featureUrl": "https://huggingface.co/wok000/vcclient_model/resolve/main/rvc/amitaro_hubertjp_768_default/amitaro_hubertjp_768_def.0.big.npy",
"termsOfUseUrl": "https://huggingface.co/wok000/vcclient_model/raw/main/rvc/amitaro_hubertjp_768_default/term_of_use.txt",
"credit": "あみたろ",
"description": ""
"description": "rinna hubertjpを使用した768次元埋め込み版。デフォルトの事前学習モデルを使用"
},
{
"id": "Amitaro_n",
@ -82,7 +94,7 @@
"featureUrl": "https://huggingface.co/wok000/vcclient_model/resolve/main/rvc/amitaro_hubertjp_768_nadare/amitaro_hubert_jp.0.big.npy",
"termsOfUseUrl": "https://huggingface.co/wok000/vcclient_model/raw/main/rvc/amitaro_hubertjp_768_nadare/term_of_use.txt",
"credit": "あみたろ",
"description": ""
"description": "rinna hubertjpを使用した768次元埋め込み版。nadare様作成の事前学習モデルを使用"
},
{
"id": "Amitaro_t",
@ -94,17 +106,29 @@
"featureUrl": "https://huggingface.co/wok000/vcclient_model/resolve/main/rvc/amitaro_hubertjp_768_tylor/amitaro_hubertjp_768_tylor.0.big.npy",
"termsOfUseUrl": "https://huggingface.co/wok000/vcclient_model/raw/main/rvc/amitaro_hubertjp_768_tylor/term_of_use.txt",
"credit": "あみたろ",
"description": ""
"description": "rinna hubertjpを使用した768次元埋め込み版。tylor様作成の事前学習モデルを使用"
},
{
"id": "Tsukuyomi-chan_d",
"lang": "ja-JP",
"tag": "",
"name": "つくよみちゃん(d)",
"modelUrl": "https://huggingface.co/wok000/vcclient_model/resolve/main/rvc/tsukuyomi-chan_hubertjp_768_default/tsukuyomi_hubertjp_768_def-100.pth",
"indexUrl": "https://huggingface.co/wok000/vcclient_model/resolve/main/rvc/tsukuyomi-chan_hubertjp_768_default/tsukuyomi_hubertjp_768_def.0.index.bin",
"featureUrl": "https://huggingface.co/wok000/vcclient_model/resolve/main/rvc/tsukuyomi-chan_hubertjp_768_default/tsukuyomi_hubertjp_768_def.0.big.npy",
"termsOfUseUrl": "https://huggingface.co/wok000/vcclient_model/raw/main/rvc/tsukuyomi-chan_hubertjp_768_default/term_of_use.txt",
"credit": "つくよみちゃん",
"description": "rinna hubertjpを使用した768次元埋め込み版。デフォルトの事前学習モデルを使用"
},
{
"id": "Tsukuyomi-chan",
"lang": "ja-JP",
"tag": "",
"name": "つくよみちゃん",
"modelUrl": "https://huggingface.co/wok000/vcclient_model/resolve/main/rvc/tsukuyomi-chan_hubertjp_768_default/tsukuyomi_hubertjp_768_def-100.pth",
"indexUrl": "https://huggingface.co/wok000/vcclient_model/resolve/main/rvc/tsukuyomi-chan_hubertjp_768_default/tsukuyomi_hubertjp_768_def.0.index.bin",
"featureUrl": "https://huggingface.co/wok000/vcclient_model/resolve/main/rvc/tsukuyomi-chan_hubertjp_768_default/tsukuyomi_hubertjp_768_def.0.big.npy",
"termsOfUseUrl": "https://huggingface.co/wok000/vcclient_model/raw/main/rvc/tsukuyomi-chan_hubertjp_768_default/term_of_use.txt",
"modelUrl": "https://huggingface.co/wok000/vcclient_model/resolve/main/rvc/tsukuyomi_contentvec_256/tsukuyomi48k-75.pth",
"indexUrl": "https://huggingface.co/wok000/vcclient_model/resolve/main/rvc/tsukuyomi_contentvec_256/tsukuyomi48k.0.index.bin",
"featureUrl": "https://huggingface.co/wok000/vcclient_model/resolve/main/rvc/tsukuyomi_contentvec_256/tsukuyomi48k.0.big.npy",
"termsOfUseUrl": "https://huggingface.co/wok000/vcclient_model/raw/main/rvc/tsukuyomi_contentvec_256/term_of_use.txt",
"credit": "つくよみちゃん",
"description": ""
}

View File

@ -18,7 +18,7 @@ def downloadInitialSampleModels(sampleJson: str, model_dir: str):
sampleModelIds = [
"KikotoMahiro_Song",
"TokinaShigure",
"Amitaro_n",
"Amitaro",
"Tsukuyomi-chan",
]
sampleModels = getModelSamples(sampleJson, "RVC")

View File

@ -0,0 +1,39 @@
## Tutorial Device Mode
デバイスモードについて説明します。
[説明動画](https://youtu.be/SUnRGCJ92K8?t=99)
## v.1.5.2.9 以前の構成(client device mode)
v.1.5.2.9 以前はブラウザが制御するマイクとスピーカを用いてボイチェンを行っていました。
これを client device モードと呼びます(赤線)。
![image](https://github.com/w-okada/voice-changer/assets/48346627/56c0766c-45c1-4b3d-af66-73443c232807)
## v.1.5.2.9 以降の構成(client device mode / server device mode)
v.1.5.2.9 より PC に接続されたマイクとスピーカーを直接 VC Client から制御してボイチェンを行えるモードを追加しました。これを server device mode と呼びます(青線)。
![image](https://github.com/w-okada/voice-changer/assets/48346627/34c92e36-0662-4eeb-aac5-30cd1f4a5cd8)
## client device mode / server device mode のメリットとデメリット
v.1.5.2.9 以降では、client device mode と server device mode のどちらを使うかを選択できます。
- client device mode
- good points
1. Chrome がマイク/スピーカーの難しい処理を請け負ってくれる。
2. ノイズ除去などの Chrome が持つ Web 会議向け機能が使える
- bad points
1. 多少遅延が増える
- server device mode
- good points
1. VC Client が直接マイク/スピーカーを扱うので遅延が少ない。
- bad points
1. 扱えないマイク/スピーカーがあるかも。
2. ノイズ除去など Chrome の便利機能が使えない。
![image](https://github.com/w-okada/voice-changer/assets/48346627/fef1ee63-e853-4867-b4c8-bf0121495bb6)
ユーザはそれぞれのメリット・デメリットを考慮して使い分けることができます。

View File

@ -0,0 +1,222 @@
# Realtime Voice Changer Client for RVC Tutorial (v.1.5.2.5)
# Introduction
This application is client software for real-time voice conversion that supports various voice conversion models. This document provides a description for voice conversion limited to [RVC(Retrieval-based-Voice-Conversion)](https://github.com/liujing04/Retrieval-based-Voice-Conversion-WebUI).
From the following, the original [Retrieval-based-Voice-Conversion-WebUI](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI) is referred to as the original-RVC, [RVC-WebUI](https://github.com/ddPn08/rvc-webui) created by ddPn08 is referred to as ddPn08-RVC.
## Notes
- Model training must be done separately.
- If you want to learn by yourself, please go to [original-RVC](https://github.com/liujing04/Retrieval-based-Voice-Conversion-WebUI) or [ddPn08RVC](https://github.com/ddPn08/rvc-webui).
- [Recording app on Github Pages](https://w-okada.github.io/voice-changer/) is convenient for preparing voice for learning on the browser.
- [Commentary video] (https://youtu.be/s_GirFEGvaA)
- [TIPS for training](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/docs/training_tips_en.md) has been published, so please refer to it.
# Steps up to startup
## Installing HuBERT
HuBERT is required to run RVC.
Download `hubert_base.pt` from [this repository](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main) and store it in the folder containing the batch file.
## Start GUI
### Windows version,
Unzip the downloaded zip file and run `start_http.bat`.
### Mac version
After extracting the download file, execute `startHttp.command`. If it shows that the developer cannot be verified, press the control key again and click to execute (or right-click to execute).
### Precautions when connecting remotely
When connecting remotely, please use `.bat` file (win) and `.command` file (mac) where http is replaced with https.
## client selection
It is successful if the Launcher screen like the one below appears. Select RVC from this screen.
![client selection](https://user-images.githubusercontent.com/23290400/235131650-9eeee978-96fa-478a-b728-3581ae0b8b67.png)
## Screen for RVC
It is successful if the following screen appears.
![v1.5.2.5 init](https://user-images.githubusercontent.com/23290400/235131679-5b4a1b7e-5d1d-4163-bfe7-84f3a4585ab7.png)
## GUI item details
## server control
### start
`start` starts the server, `stop` stops the server
### monitor
Indicates the status of real-time conversion.
The lag from voicing to conversion is `buf + res seconds`. Adjust so that the buf time is longer than res.
#### vol
This is the volume after voice conversion.
#### buf
It is the length (ms) of one section to cut the audio. Shortening the Input Chunk reduces this number.
#### res
This is the time it takes to convert data that is the sum of Input Chunk and Extra Data Length. Shortening both Input Chunk and Extra Data Length will reduce the number.
### Model Info
Get information held by the server. If information synchronization between server and client seems not to be successful, please press the Reload button.
### Switch Model
You can switch between uploaded models.
Information about the model is shown in [] under the name
1. Is the model considering f0(=pitch)?
- f0: consider
- nof0: don't consider
2. Sampling rate used to train the model
3. Number of feature channels used by the model
4. Clients used for learning
- org: This is the model trained in [orginal-RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI).
- webui: The model trained on [ddPn08-RVC](https://github.com/ddPn08/rvc-webui).
## Model Setting
### Model Uploader
You can choose either PyTorch or ONNX for each slot.
#### Model Slot
You can choose which frame to set the model in. The set model can be switched with Switch Model in Server Control.
#### Model(.onnx or .pth)
Specify the trained model here. Required fields.
You can choose either ONNX format (.onnx) or PyTorch format (.pth).
- If trained with [orginal-RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI), it is in `/logs/weights`.
- If trained with [ddPn08-RVC](https://github.com/ddPn08/rvc-webui), it is in `/models/checkpoints`.
#### feature(.npy)
This is an additional function that brings the features extracted by HuBERT closer to the training data. Used in pairs with index(.index).
- If trained with [orginal-RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI), it is in `/logs/your-expetiment-name/total_fea.npy`.
- If trained with [ddPn08-RVC](https://github.com/ddPn08/rvc-webui), it is in `/models/checkpoints/your-model-name_index/your-model-name.0.big.npy`.
#### index(.index)
This is an additional function that brings the features extracted by HuBERT closer to the training data. Used in pairs with feature(.npy).
- If trained with [orginal-RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI), it is in `/logs/your-expetiment-name/total_fea.npy`.
- If trained with [ddPn08-RVC](https://github.com/ddPn08/rvc-webui), it is in `/models/checkpoints/your-model-name_index/your-model-name.0.big.npy`.
#### half-precision
You can choose to infer precision as float32 or float16.
This selection can be speeded up at the expense of accuracy.
Turn it off if it doesn't work.
#### Default Tune
Enter the default value for how much the pitch of the voice should be converted. You can also convert during inference. Below is a guideline for the settings.
- +12 for male voice to female voice conversion
- -12 for female voice to male voice conversion
#### upload
After setting the above items, press to make the model ready for use.
#### Framework
Choose which of the uploaded model files to use (PyTorch or ONNX). It will be gone in the next version.
## Device Setting
### Audio Input
Choose an input device
### Audio Output
Choose an output terminal
#### output record
Audio is recorded from when you press start until you press stop.
Pressing this button does not start real-time conversion.
Press Server Control for real-time conversion
## Quality Control
### Noise Supression
On/Off of the browser's built-in noise removal function.
### Gain Control
- input: Increase or decrease the volume of the input audio to the model. 1 is the default value
- output: Increase or decrease the volume of the output audio from the model. 1 is the default value
### F0Detector
Choose an algorithm for extracting the pitch. You can choose from the following two types.
- Lightweight `pm`
- Highly accurate `harvest`
### Analyzer(Experimental)
Record input and output on the server side.
As for the input, the sound of the microphone is sent to the server and recorded as it is. It can be used to check the communication path from the microphone to the server.
For output, the data output from the model is recorded in the server. You can see how the model behaves (once you've verified that your input is correct).
## Speaker Setting
### Destination Speaker Id
It seems to be a setting when supporting multiple speakers, but it is not used at present because the RVC head office does not support it (it is unlikely).
### Tuning
Adjust the pitch of your voice. Below is a guideline for the settings.
- +12 for male voice to female voice conversion
- -12 for female voice to male voice conversion
### index ratio
Specify the ratio to shift to the features used in training. Effective when both feature and index are set in Model Setting.
0 uses the output of HuBERT as it is, 1 brings it all back to the original features.
If the index ratio is greater than 0, the search may take a long time.
### Silent Threshold
The volume threshold for audio conversion. If the rms is smaller than this value, no voice conversion is performed and silence is returned.
(In this case, the conversion process is skipped, so the load is less.)
## Converter Setting
### InputChunk Num(128sample / chunk)
Decide how much length to cut and convert in one conversion. The higher the value, the more efficient the conversion, but the larger the buf value, the longer the maximum time before the conversion starts. The approximate time is displayed in buff:.
### Extra Data Length
Determines how much past audio to include in the input when converting audio. The longer the past voice is, the better the accuracy of the conversion, but the longer the res is, the longer the calculation takes.
(Probably because Transformer is a bottleneck, the calculation time will increase by the square of this length)
### GPU
If you have 2 or more GPUs, you can choose your GPU here.

View File

@ -4,7 +4,7 @@
This application is client software for real-time voice conversion that supports various voice conversion models. This document provides a description for voice conversion limited to [RVC(Retrieval-based-Voice-Conversion)](https://github.com/liujing04/Retrieval-based-Voice-Conversion-WebUI).
From the following, the original [Retrieval-based-Voice-Conversion-WebUI](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI) is referred to as the original-RVC, [RVC-WebUI](https://github.com/ddPn08/rvc-webui) created by ddPn08 is referred to as ddPn08-RVC.
From the following, the original [Retrieval-based-Voice-Conversion-WebUI](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI) is referred to as the original-RVC, [RVC-WebUI](https://github.com/ddPn08/rvc-webui) created by ddPn08 is referred to as ddPn08-RVC.
## Notes
@ -16,11 +16,6 @@ From the following, the original [Retrieval-based-Voice-Conversion-WebUI](https:
# Steps up to startup
## Installing HuBERT
HuBERT is required to run RVC.
Download `hubert_base.pt` from [this repository](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main) and store it in the folder containing the batch file.
## Start GUI
### Windows version,
@ -35,20 +30,30 @@ After extracting the download file, execute `startHttp.command`. If it shows tha
When connecting remotely, please use `.bat` file (win) and `.command` file (mac) where http is replaced with https.
## client selection
### Console
It is successful if the Launcher screen like the one below appears. Select RVC from this screen.
When you run a .bat file (Windows) or .command file (Mac), a screen like the following will be displayed and various data will be downloaded from the Internet at the initial start-up. Depending on your environment, it may take 1-2 minutes in many cases.
![client selection](https://user-images.githubusercontent.com/23290400/235131650-9eeee978-96fa-478a-b728-3581ae0b8b67.png)
![image](https://github.com/w-okada/voice-changer/assets/48346627/88a30097-2fb3-4c50-8bf1-19c41f27c481)
## Screen for RVC
### GUI
It is successful if the following screen appears.
Once the download of required data for launching is complete, a Launcher screen like the following will appear. Please select RVC from this screen.
![v1.5.2.5 init](https://user-images.githubusercontent.com/23290400/235131679-5b4a1b7e-5d1d-4163-bfe7-84f3a4585ab7.png)
![v1.5.3.1 RVC](https://github.com/w-okada/voice-changer/assets/48346627/0f407779-7798-49f9-a542-663d80807cdb)
# Quick start
## GUI item details
At startup, you can immediately perform voice conversion using the data downloaded.
Select the microphone and speakers in (1) of the figure below, then press the start button in (2). After a few seconds of data loading, the voice conversion will start. For those who are not used to it, it is recommended to select client device in (1) to select the microphone and speakers. (The difference between server device will be described later.)
![image](https://github.com/w-okada/voice-changer/assets/48346627/ce2f8be7-852e-4b78-adce-1df8cad9fbab)
## Configurable items
The items that can be set with the GUI are divided into sections like the figure below. Each section can be opened and closed by clicking the title.
![image](https://github.com/w-okada/voice-changer/assets/48346627/a5eab90c-c0af-42cd-abfb-e897d333d1ff)
## server control
@ -62,6 +67,8 @@ Indicates the status of real-time conversion.
The lag from voicing to conversion is `buf + res seconds`. Adjust so that the buf time is longer than res.
If you are using the device in server device mode, this display will not be shown. It will be displayed on the console side.
#### vol
This is the volume after voice conversion.
@ -74,13 +81,13 @@ It is the length (ms) of one section to cut the audio. Shortening the Input Chun
This is the time it takes to convert data that is the sum of Input Chunk and Extra Data Length. Shortening both Input Chunk and Extra Data Length will reduce the number.
### Model Info
Get information held by the server. If information synchronization between server and client seems not to be successful, please press the Reload button.
### Switch Model
### Switch Model
You can switch between uploaded models.
Information about the model is shown in [] under the name
1. Is the model considering f0(=pitch)?
- f0: consider
- nof0: don't consider
@ -90,17 +97,33 @@ Information about the model is shown in [] under the name
- org: This is the model trained in [orginal-RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI).
- webui: The model trained on [ddPn08-RVC](https://github.com/ddPn08/rvc-webui).
### Operation
A button is placed to perform operations on the model and server. and server.
#### export onnx
We can output an ONNX model. Converting a PyTorch model to an ONNX model can sometimes speed up inference.
#### download
Download the model. It is mainly used to get the results of model merging.
## Model Setting
### Model Uploader
You can choose either PyTorch or ONNX for each slot.
#### Model Slot
You can choose which frame to set the model in. The set model can be switched with Switch Model in Server Control.
When setting up the model, you can choose to either load the file or download it from the internet. Depending on your choice, the available settings will change.
- file: Select a local file to load the model.
- from net: Download the model from the internet.
#### Model(.onnx or .pth)
If you set it to load from a file, it will be displayed.
Specify the trained model here. Required fields.
You can choose either ONNX format (.onnx) or PyTorch format (.pth).
@ -109,6 +132,8 @@ You can choose either ONNX format (.onnx) or PyTorch format (.pth).
#### feature(.npy)
If you set it to load from a file, it will be displayed.
This is an additional function that brings the features extracted by HuBERT closer to the training data. Used in pairs with index(.index).
- If trained with [orginal-RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI), it is in `/logs/your-expetiment-name/total_fea.npy`.
@ -116,16 +141,16 @@ This is an additional function that brings the features extracted by HuBERT clos
#### index(.index)
If you set it to load from a file, it will be displayed.
This is an additional function that brings the features extracted by HuBERT closer to the training data. Used in pairs with feature(.npy).
- If trained with [orginal-RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI), it is in `/logs/your-expetiment-name/total_fea.npy`.
- If trained with [ddPn08-RVC](https://github.com/ddPn08/rvc-webui), it is in `/models/checkpoints/your-model-name_index/your-model-name.0.big.npy`.
#### half-precision
#### Select Model
You can choose to infer precision as float32 or float16.
This selection can be speeded up at the expense of accuracy.
Turn it off if it doesn't work.
If you choose to download from the internet, you will see the model to download. Please check the link to the terms of use before using it.
#### Default Tune
@ -138,56 +163,12 @@ Enter the default value for how much the pitch of the voice should be converted.
After setting the above items, press to make the model ready for use.
#### Framework
#### select
Choose which of the uploaded model files to use (PyTorch or ONNX). It will be gone in the next version.
## Device Setting
### Audio Input
Choose an input device
### Audio Output
Choose an output terminal
#### output record
Audio is recorded from when you press start until you press stop.
Pressing this button does not start real-time conversion.
Press Server Control for real-time conversion
## Quality Control
### Noise Supression
On/Off of the browser's built-in noise removal function.
### Gain Control
- input: Increase or decrease the volume of the input audio to the model. 1 is the default value
- output: Increase or decrease the volume of the output audio from the model. 1 is the default value
### F0Detector
Choose an algorithm for extracting the pitch. You can choose from the following two types.
- Lightweight `pm`
- Highly accurate `harvest`
### Analyzer(Experimental)
Record input and output on the server side.
As for the input, the sound of the microphone is sent to the server and recorded as it is. It can be used to check the communication path from the microphone to the server.
For output, the data output from the model is recorded in the server. You can see how the model behaves (once you've verified that your input is correct).
When you set the option to download from the internet, the items above will be displayed. After setting the items above, press to activate the model.
## Speaker Setting
### Destination Speaker Id
It seems to be a setting when supporting multiple speakers, but it is not used at present because the RVC head office does not support it (it is unlikely).
### Tuning
Adjust the pitch of your voice. Below is a guideline for the settings.
@ -217,6 +198,59 @@ Decide how much length to cut and convert in one conversion. The higher the valu
Determines how much past audio to include in the input when converting audio. The longer the past voice is, the better the accuracy of the conversion, but the longer the res is, the longer the calculation takes.
(Probably because Transformer is a bottleneck, the calculation time will increase by the square of this length)
Detail is [here](https://github.com/w-okada/voice-changer/issues/154#issuecomment-1502534841)
### GPU
If you have 2 or more GPUs, you can choose your GPU here.
## Device Setting
Choose between client device mode and server device mode. You can only change it when the voice conversion is stopped.
For more details on each mode, please see [here](./tutorial_device_mode.md).
### Audio Input
Choose an input device
### Audio Output
Choose an output terminal
#### output record
It will only be displayed when in client device mode.
Audio is recorded from when you press start until you press stop.
Pressing this button does not start real-time conversion.
Press Server Control for real-time conversion
## Lab
You can do model merging.
Set the component amounts for each source model for the merge. Create a new model according to the ratio of the component amounts.
## Quality Control
### Noise Supression
On/Off of the browser's built-in noise removal function.
### Gain Control
- input: Increase or decrease the volume of the input audio to the model. 1 is the default value
- output: Increase or decrease the volume of the output audio from the model. 1 is the default value
### F0Detector
Choose an algorithm for extracting the pitch. You can choose from the following two types.
- Lightweight `pm`
- Highly accurate `harvest`
### Analyzer(Experimental)
Record input and output on the server side.
As for the input, the sound of the microphone is sent to the server and recorded as it is. It can be used to check the communication path from the microphone to the server.
For output, the data output from the model is recorded in the server. You can see how the model behaves (once you've verified that your input is correct).

View File

@ -0,0 +1,184 @@
Realtime Voice Changer Client for RVC チュートリアル(v.1.5.2.5)
================================================================
# はじめに
本アプリケーションは、各種音声変換 AI(VC, Voice Conversion)を用いてリアルタイム音声変換を行うためのクライアントソフトウェアです。本ドキュメントでは[RVC(Retrieval-based-Voice-Conversion)](https://github.com/liujing04/Retrieval-based-Voice-Conversion-WebUI)に限定した音声変換のためのチュートリアルを行います。
以下、本家の[Retrieval-based-Voice-Conversion-WebUI](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI)を本家RVCと表記し、ddPn08氏の作成した[RVC-WebUI](https://github.com/ddPn08/rvc-webui)をddPn08RVCと記載します。
## 注意事項
- 学習については別途行う必要があります。
- 自身で学習を行う場合は[本家RVC](https://github.com/liujing04/Retrieval-based-Voice-Conversion-WebUI)または[ddPn08RVC](https://github.com/ddPn08/rvc-webui)で行ってください。
- ブラウザ上で学習用の音声を用意するには[録音アプリ on Github Pages](https://w-okada.github.io/voice-changer/)が便利です。
- [解説動画](https://youtu.be/s_GirFEGvaA)
- [trainingのTIPS](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/docs/training_tips_ja.md)が公開されているので参照してください。
# 起動まで
## HuBERTのインストール
RVCの実行にはHuBERTが必要です。
[このリポジトリ](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main)から`hubert_base.pt`をダウンロードして、バッチファイルがあるフォルダに格納してください。
## GUIの起動
### Windows 版、
ダウンロードした zip ファイルを解凍して、`start_http.bat`を実行してください。
### Mac 版
ダウンロードファイルを解凍したのちに、`startHttp.command`を実行してください。開発元を検証できない旨が示される場合は、再度コントロールキーを押してクリックして実行してください(or 右クリックから実行してください)。
### リモート接続時の注意
リモートから接続する場合は、`.bat`ファイル(win)、`.command`ファイル(mac)の http が https に置き換わっているものを使用してください。
## クライアントの選択
下記のようなLauncher画面が出れば成功です。この画面からRVCを選択してください。
![クライアントの選択画面](https://user-images.githubusercontent.com/23290400/235131650-9eeee978-96fa-478a-b728-3581ae0b8b67.png)
## RVC用の画面
下記のような画面が出れば成功です。右上の?ボタンから[マニュアル](https://zenn.dev/wok/books/0004_vc-client-v_1_5_1_x)に移動できます。
![v1.5.2.5 RVC初期画面](https://user-images.githubusercontent.com/23290400/235131679-5b4a1b7e-5d1d-4163-bfe7-84f3a4585ab7.png)
# クイックスタート
日本語版では[マニュアル](https://zenn.dev/wok/books/0004_vc-client-v_1_5_1_x/viewer/003-1_quick-start)が用意されているのでこちらを参照してください。
## GUIの項目の詳細
## server control
### start
startでサーバーを起動、stopでサーバーを停止します
### monitor
リアルタイム変換の状況を示します。
声を出してから変換までのラグは`buf + res秒`です。調整の際はbufの時間がresよりも長くなるように調整してください。
#### vol
音声変換後の音量です。
#### buf
音声を切り取る一回の区間の長さ(ms)です。Input Chunkを短くするとこの数値が減ります。
#### res
Input ChunkとExtra Data Lengthを足したデータを変換にかかる時間です。Input ChunkとExtra Data Lengthのいずれでも短くすると数値が減ります。
### Model Info
サーバが保持している情報を取得します。サーバ・クライアント間で情報同期がうまくいってなさそうなときReloadボタンを押してみてください。
### Switch Model
アップロードしたモデルについて切り替えることができます。
モデルについては名前の下に[]で情報が示されます
1. f0(=pitch)を考慮するモデルか
- f0: 考慮する
- nof0: 考慮しない
2. モデルの学習に用いられたサンプリングレート
3. モデルが用いる特徴量のチャンネル数(大きいほど情報を持っていて重い)
4. 学習に用いられたクライアント
- org: [本家RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI)で学習したモデルです。
- webui:[ddPn08RVC](https://github.com/ddPn08/rvc-webui)で学習したモデルです。
### EXPORT ONNX
ONNXモデルを出力します。PyTorchのモデルをONNXモデルに変換すると、推論が高速化される場合があります。
## Model Setting
### Model Uploader
Slot毎にPyTorchかONNXのどちらかのみ選べます。
#### Model Slot
モデルをどの枠にセットするか選べます。セットしたモデルはServer ControlのSwitch Modelで切り替えられます。
#### Model(.onnx or .pth)
学習済みモデルをここで指定します。必須項目です。
ONNX形式(.onnx)かPyTorch形式(.pth)のいずれかを選択可能です。
- [orginal-RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI)で学習させた場合、`/logs/weights`に入っています。
- [ddPn08RVC](https://github.com/ddPn08/rvc-webui)で学習させた場合、`/models/checkpoints`に入っています。
#### feature(.npy)
HuBERTで抽出した特徴を訓練データに近づける追加機能です。index(.index)とペアで使用します。
- [orginal-RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI)で学習させた場合、`/logs/実験名/total_fea.npy`という名前で保存されています。(2023/04/26にtotal_fea.npyを省略するアップデートが入ったので今後不要になる可能性があります)
- [ddPn08RVC](https://github.com/ddPn08/rvc-webui)で学習させた場合、`/models/checkpoints/モデル名_index/モデル名.0.big.npy`という名前で保存されています。
#### index(.index)
HuBERTで抽出した特徴を訓練データに近づける追加機能です。feature(.npy)とペアで使用します。
- [orginal-RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI)で学習させた場合、`/logs/実験名/add_XXX.index`という名前で保存されています。
- [ddPn08RVC](https://github.com/ddPn08/rvc-webui)で学習させた場合、`/models/checkpoints/モデル名_index/モデル名.0.index`という名前で保存されています。
#### half-precision
精度をfloat32かfloat16のどちらで推論するか選べます。
これを選択すると精度を犠牲に高速化できます。
上手く動かない場合はオフにしてください。
#### Default Tune
声のピッチをどれくらい変換するかデフォルトの値を入れます。推論中に変換もできます。以下は設定の目安です。
- 男声→女声 の変換では+12
- 女声→男声 の変換では-12
#### upload
上記の項目を設定した後、押すとmodelを使用できる状態にします。
## Device Setting
### AudioInput
入力端末を選びます
### AudioOutput
出力端末を選びます
#### output record
startをおしてからstopを押すまでの音声が記録されます。
このボタンを押してもリアルタイム変換は始まりません。
リアルタイム変換はServer Controlを押してください
## Quality Control
### Noise Supression
ブラウザ組み込みのイズ除去機能のOn/Offです。
### Gain Control
- input:モデルへの入力音声の音量を増減します。1がデフォルト
- output:モデルからの出力音声の音量を増減します。1がデフォルト
### F0Detector
ピッチを抽出するためのアルゴリズムを選びます。以下の二種類を選べます。
- 軽量な`pm`
- 高精度な`harvest`
### Analyzer(Experimental)
サーバ側で入力と出力を録音します。
入力はマイクの音声がサーバに送られて、それがそのまま録音されます。マイク⇒サーバの通信路の確認に使えます。
出力はモデルから出力されるデータがサーバ内で録音されます。(入力が正しいことが確認できたうえで)モデルの動作を確認できます。
## Speaker Setting
### Destination Speaker Id
複数話者に対応した時の設定かと思われますが、[本家RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI)が対応していないので現状は使わない項目です。
### Tuning
声のピッチを調整します。以下は設定の目安です。
- 男声→女声 の変換では+12
- 女声→男声 の変換では-12
### index ratio
学習で使用した特徴量に寄せる比率を指定します。Model Settingでfeatureとindexを両方設定した時に有効です。
0でHuBERTの出力をそのまま使う、1で元の特徴量にすべて寄せます。
index ratioが0より大きいと検索に時間がかかる場合があります。
### Silent Threshold
音声変換を行う音量の閾地です。この値より小さいrmsの時は音声変換をせず無音を返します。
(この場合、変換処理がスキップされるので、あまり負荷がかかりません。)
## Converter Setting
### InputChunk Num(128sample / chunk)
一度の変換でどれくらいの長さを切り取って変換するかを決めます。これが大きいほど効率的に変換できますが、bufの値が大きくなり変換が開始されるまでの最大の時間が伸びます。 buff: におよその時間が表示されます。
### Extra Data Length
音声を変換する際、入力にどれくらいの長さの過去の音声を入れるかを決めます。過去の音声が長く入っているほど変換の精度はよくなりますが、その分計算に時間がかかるためresが長くなります。
(おそらくTransformerがネックなので、これの長さの2乗で計算時間は増えます)
### GPU
GPUを2枚以上持っている場合、ここでGPUを選べます。

View File

@ -1,184 +1,275 @@
Realtime Voice Changer Client for RVC チュートリアル(v.1.5.2.5)
================================================================
# Realtime Voice Changer Client for RVC チュートリアル(v.1.5.3.1)
# はじめに
本アプリケーションは、各種音声変換 AI(VC, Voice Conversion)を用いてリアルタイム音声変換を行うためのクライアントソフトウェアです。本ドキュメントでは[RVC(Retrieval-based-Voice-Conversion)](https://github.com/liujing04/Retrieval-based-Voice-Conversion-WebUI)に限定した音声変換のためのチュートリアルを行います。
以下、本家の[Retrieval-based-Voice-Conversion-WebUI](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI)を本家RVCと表記し、ddPn08氏の作成した[RVC-WebUI](https://github.com/ddPn08/rvc-webui)をddPn08RVCと記載します。
以下、本家の[Retrieval-based-Voice-Conversion-WebUI](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI)を本家 RVC と表記し、ddPn08 氏の作成した[RVC-WebUI](https://github.com/ddPn08/rvc-webui)を ddPn08RVC と記載します。
## 注意事項
- 学習については別途行う必要があります。
- 自身で学習を行う場合は[本家RVC](https://github.com/liujing04/Retrieval-based-Voice-Conversion-WebUI)または[ddPn08RVC](https://github.com/ddPn08/rvc-webui)で行ってください。
- 自身で学習を行う場合は[本家 RVC](https://github.com/liujing04/Retrieval-based-Voice-Conversion-WebUI)または[ddPn08RVC](https://github.com/ddPn08/rvc-webui)で行ってください。
- ブラウザ上で学習用の音声を用意するには[録音アプリ on Github Pages](https://w-okada.github.io/voice-changer/)が便利です。
- [解説動画](https://youtu.be/s_GirFEGvaA)
- [trainingのTIPS](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/docs/training_tips_ja.md)が公開されているので参照してください。
- [training TIPS](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/docs/training_tips_ja.md)が公開されているので参照してください。
# 起動まで
## HuBERTのインストール
RVCの実行にはHuBERTが必要です。
[このリポジトリ](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main)から`hubert_base.pt`をダウンロードして、バッチファイルがあるフォルダに格納してください。
## GUIの起動
## GUI の起動
### Windows 版、
ダウンロードした zip ファイルを解凍して、`start_http.bat`を実行してください。
### Mac 版
ダウンロードファイルを解凍したのちに、`startHttp.command`を実行してください。開発元を検証できない旨が示される場合は、再度コントロールキーを押してクリックして実行してください(or 右クリックから実行してください)。
### リモート接続時の注意
リモートから接続する場合は、`.bat`ファイル(win)、`.command`ファイル(mac)の http が https に置き換わっているものを使用してください。
## クライアントの選択
下記のようなLauncher画面が出れば成功です。この画面からRVCを選択してください。
### コンソール表示
`.bat`ファイル(win)や`.command`ファイル(mac)を実行すると、次のような画面が表示され、初回起動時には各種データをインターネットからダウンロードします。
お使いの環境によりますが、多くの場合1~2分かかります。
![image](https://github.com/w-okada/voice-changer/assets/48346627/88a30097-2fb3-4c50-8bf1-19c41f27c481)
### GUI 表示
起動に必要なデータのダウンロードが完了すると下記のような Launcher 画面が出ます。この画面から RVC を選択してください。
![クライアントの選択画面](https://user-images.githubusercontent.com/23290400/235131650-9eeee978-96fa-478a-b728-3581ae0b8b67.png)
## RVC 用の画面
## RVC用の画面
下記のような画面が出れば成功です。右上の?ボタンから[マニュアル](https://zenn.dev/wok/books/0004_vc-client-v_1_5_1_x)に移動できます。
![v1.5.2.5 RVC初期画面](https://user-images.githubusercontent.com/23290400/235131679-5b4a1b7e-5d1d-4163-bfe7-84f3a4585ab7.png)
![v1.5.3.1 RVC初期画面](https://github.com/w-okada/voice-changer/assets/48346627/0f407779-7798-49f9-a542-663d80807cdb)
# クイックスタート
日本語版では[マニュアル](https://zenn.dev/wok/books/0004_vc-client-v_1_5_1_x/viewer/003-1_quick-start)が用意されているのでこちらを参照してください。
## GUIの項目の詳細
起動時にダウンロードしたデータを用いて、すぐに音声変換を行うことができます。
下図の(1)で使用するマイクとスピーカーを選択して、(2)のスタートボタンを押してみてください。
数秒のデータロードの後に音声変換が開始されます。
なお、慣れていない方は、(1)では client device を選択してかマイクとスピーカーを選択することを推奨します。server device との違いは後述します。)
![image](https://github.com/w-okada/voice-changer/assets/48346627/ce2f8be7-852e-4b78-adce-1df8cad9fbab)
## GUI の項目の詳細
GUI で設定できる項目は下図のようなセクションに分かれています。それぞれのセクションはタイトルをクリックすることで開閉できます。
![image](https://github.com/w-okada/voice-changer/assets/48346627/a5eab90c-c0af-42cd-abfb-e897d333d1ff)
## server control
### start
startでサーバーを起動、stopでサーバーを停止します
start でサーバーを起動、stop でサーバーを停止します
### monitor
リアルタイム変換の状況を示します。
声を出してから変換までのラグは`buf + res秒`です。調整の際はbufの時間がresよりも長くなるように調整してください。
声を出してから変換までのラグは`buf + res秒`です。調整の際は buf の時間が res よりも長くなるように調整してください。
なお、デバイスを server device モードで使用している場合はこの表示は行われません。コンソール側に表示されます。
#### vol
音声変換後の音量です。
#### buf
音声を切り取る一回の区間の長さ(ms)です。Input Chunkを短くするとこの数値が減ります。
音声を切り取る一回の区間の長さ(ms)です。Input Chunk を短くするとこの数値が減ります。
#### res
Input ChunkとExtra Data Lengthを足したデータを変換にかかる時間です。Input ChunkとExtra Data Lengthのいずれでも短くすると数値が減ります。
### Model Info
サーバが保持している情報を取得します。サーバ・クライアント間で情報同期がうまくいってなさそうなときReloadボタンを押してみてください。
Input Chunk と Extra Data Length を足したデータを変換にかかる時間です。Input Chunk と Extra Data Length のいずれでも短くすると数値が減ります。
### Switch Model
アップロードしたモデルについて切り替えることができます。
モデルについては名前の下に[]で情報が示されます
1. f0(=pitch)を考慮するモデルか
- f0: 考慮する
- nof0: 考慮しない
- f0: 考慮する
- nof0: 考慮しない
2. モデルの学習に用いられたサンプリングレート
3. モデルが用いる特徴量のチャンネル数(大きいほど情報を持っていて重い)
4. 学習に用いられたクライアント
- org: [本家RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI)で学習したモデルです。
- webui:[ddPn08RVC](https://github.com/ddPn08/rvc-webui)で学習したモデルです。
### EXPORT ONNX
ONNXモデルを出力します。PyTorchのモデルをONNXモデルに変換すると、推論が高速化される場合があります。
- org: [本家 RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI)で学習したモデルです。
- webui:[ddPn08RVC](https://github.com/ddPn08/rvc-webui)で学習したモデルです。
### Operation
モデル、サーバに対する処理を実行するボタンが配置されています。
#### export onnx
ONNX モデルを出力します。PyTorch のモデルを ONNX モデルに変換すると、推論が高速化される場合があります。
#### download
モデルをダウンロードします。主にモデルマージした結果を取得するために使います。
## Model Setting
### Model Uploader
Slot毎にPyTorchかONNXのどちらかのみ選べます。
#### Model Slot
モデルをどの枠にセットするか選べます。セットしたモデルはServer ControlのSwitch Modelで切り替えられます。
モデルをどの枠にセットするか選べます。セットしたモデルは Server Control の Switch Model で切り替えられます。
モデルをセットする際に、ファイルから読み込むか、インターネットからダウンロードするかを選択できます。この選択結果に応じて設定できる項目が変化します。
- file: ローカルファイルを選択してモデルを読み込みます。
- from net: インターネットからモデルをダウンロードします。
#### Model(.onnx or .pth)
ファイルから読み込む設定にした場合に表示されます。
学習済みモデルをここで指定します。必須項目です。
ONNX形式(.onnx)かPyTorch形式(.pth)のいずれかを選択可能です。
ONNX 形式(.onnx)か PyTorch 形式(.pth)のいずれかを選択可能です。
- [orginal-RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI)で学習させた場合、`/logs/weights`に入っています。
- [ddPn08RVC](https://github.com/ddPn08/rvc-webui)で学習させた場合、`/models/checkpoints`に入っています。
#### feature(.npy)
HuBERTで抽出した特徴を訓練データに近づける追加機能です。index(.index)とペアで使用します。
- [orginal-RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI)で学習させた場合、`/logs/実験名/total_fea.npy`という名前で保存されています。(2023/04/26にtotal_fea.npyを省略するアップデートが入ったので今後不要になる可能性があります)
ファイルから読み込む設定にした場合に表示されます。
HuBERT で抽出した特徴を訓練データに近づける追加機能です。index(.index)とペアで使用します。
- [orginal-RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI)で学習させた場合、`/logs/実験名/total_fea.npy`という名前で保存されています。(2023/04/26 に total_fea.npy を省略するアップデートが入ったので今後不要になる可能性があります)
- [ddPn08RVC](https://github.com/ddPn08/rvc-webui)で学習させた場合、`/models/checkpoints/モデル名_index/モデル名.0.big.npy`という名前で保存されています。
#### index(.index)
HuBERTで抽出した特徴を訓練データに近づける追加機能です。feature(.npy)とペアで使用します。
ファイルから読み込む設定にした場合に表示されます。
HuBERT で抽出した特徴を訓練データに近づける追加機能です。feature(.npy)とペアで使用します。
- [orginal-RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI)で学習させた場合、`/logs/実験名/add_XXX.index`という名前で保存されています。
- [ddPn08RVC](https://github.com/ddPn08/rvc-webui)で学習させた場合、`/models/checkpoints/モデル名_index/モデル名.0.index`という名前で保存されています。
#### half-precision
精度をfloat32かfloat16のどちらで推論するか選べます。
これを選択すると精度を犠牲に高速化できます。
上手く動かない場合はオフにしてください。
#### Select Model
インターネットからダウロードする設定にした場合に表示されます。
ダウンロードするモデルを選択します。利用規約へのリンクが表示されるので、ご使用の際には互角にください。
#### Default Tune
声のピッチをどれくらい変換するかデフォルトの値を入れます。推論中に変換もできます。以下は設定の目安です。
- 男声→女声 の変換では+12
- 女声→男声 の変換では-12
- 男声 女声 の変換では+12
- 女声 男声 の変換では-12
#### upload
上記の項目を設定した後、押すとmodelを使用できる状態にします。
ファイルから読み込む設定にした場合に表示されます。
上記の項目を設定した後、押すと model を使用できる状態にします。
#### select
インターネットからダウロードする設定にした場合に表示されます。
上記の項目を設定した後、押すと model を使用できる状態にします。
## Speaker Setting
### Tuning
声のピッチを調整します。以下は設定の目安です。
- 男声 → 女声 の変換では+12
- 女声 → 男声 の変換では-12
### index ratio
学習で使用した特徴量に寄せる比率を指定します。Model Setting で feature と index を両方設定した時に有効です。
0 で HuBERT の出力をそのまま使う、1 で元の特徴量にすべて寄せます。
index ratio が 0 より大きいと検索に時間がかかる場合があります。
### Silent Threshold
音声変換を行う音量の閾地です。この値より小さい rms の時は音声変換をせず無音を返します。
(この場合、変換処理がスキップされるので、あまり負荷がかかりません。)
## Converter Setting
### InputChunk Num(128sample / chunk)
一度の変換でどれくらいの長さを切り取って変換するかを決めます。これが大きいほど効率的に変換できますが、buf の値が大きくなり変換が開始されるまでの最大の時間が伸びます。 buff: におよその時間が表示されます。
### Extra Data Length
音声を変換する際、入力にどれくらいの長さの過去の音声を入れるかを決めます。過去の音声が長く入っているほど変換の精度はよくなりますが、その分計算に時間がかかるため res が長くなります。
(おそらく Transformer がネックなので、これの長さの 2 乗で計算時間は増えます)
詳細は[こちらの資料](https://github.com/w-okada/voice-changer/issues/154#issuecomment-1502534841)をご覧ください。
### GPU
GPU を 2 枚以上持っている場合、ここで GPU を選べます。
## Device Setting
### Device Mode
client device mode と server device mode のどちらを使用するか選択します。音声変換が停止している時のみ変更できます。
それぞれのモードの詳細は[こちら](./tutorial_device_mode.md)をご覧ください。
### AudioInput
入力端末を選びます
### AudioOutput
出力端末を選びます
#### output record
startをおしてからstopを押すまでの音声が記録されます。
### output record
client device mode の時のみ表示されます。
start をおしてから stop を押すまでの音声が記録されます。
このボタンを押してもリアルタイム変換は始まりません。
リアルタイム変換はServer Controlを押してください
リアルタイム変換は Server Control を押してください
## Lab
モデルマージを行うことができます。
各マージ元モデルの成分量を設定します。成分量の比率に従って新しいモデルを生成します。
## Quality Control
### Noise Supression
ブラウザ組み込みのイズ除去機能のOn/Offです。
ブラウザ組み込みのノイズ除去機能の On/Off です。
### Gain Control
- input:モデルへの入力音声の音量を増減します。1がデフォルト
- output:モデルからの出力音声の音量を増減します。1がデフォルト
### F0Detector
ピッチを抽出するためのアルゴリズムを選びます。以下の二種類を選べます。
- 軽量な`pm`
- 高精度な`harvest`
### Analyzer(Experimental)
サーバ側で入力と出力を録音します。
入力はマイクの音声がサーバに送られて、それがそのまま録音されます。マイク⇒サーバの通信路の確認に使えます。
入力はマイクの音声がサーバに送られて、それがそのまま録音されます。マイク サーバの通信路の確認に使えます。
出力はモデルから出力されるデータがサーバ内で録音されます。(入力が正しいことが確認できたうえで)モデルの動作を確認できます。
## Speaker Setting
### Destination Speaker Id
複数話者に対応した時の設定かと思われますが、[本家RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI)が対応していないので現状は使わない項目です。
### Tuning
声のピッチを調整します。以下は設定の目安です。
- 男声→女声 の変換では+12
- 女声→男声 の変換では-12
### index ratio
学習で使用した特徴量に寄せる比率を指定します。Model Settingでfeatureとindexを両方設定した時に有効です。
0でHuBERTの出力をそのまま使う、1で元の特徴量にすべて寄せます。
index ratioが0より大きいと検索に時間がかかる場合があります。
### Silent Threshold
音声変換を行う音量の閾地です。この値より小さいrmsの時は音声変換をせず無音を返します。
(この場合、変換処理がスキップされるので、あまり負荷がかかりません。)
## Converter Setting
### InputChunk Num(128sample / chunk)
一度の変換でどれくらいの長さを切り取って変換するかを決めます。これが大きいほど効率的に変換できますが、bufの値が大きくなり変換が開始されるまでの最大の時間が伸びます。 buff: におよその時間が表示されます。
### Extra Data Length
音声を変換する際、入力にどれくらいの長さの過去の音声を入れるかを決めます。過去の音声が長く入っているほど変換の精度はよくなりますが、その分計算に時間がかかるためresが長くなります。
(おそらくTransformerがネックなので、これの長さの2乗で計算時間は増えます)
### GPU
GPUを2枚以上持っている場合、ここでGPUを選べます。