Blane187 commited on
Commit
7ff2ba3
โ€ข
1 Parent(s): d982cdd

Upload folder using huggingface_hub

Browse files
This view is limited to 50 files because it contains too many changes. ย  See raw diff
Files changed (50) hide show
  1. .env +9 -0
  2. .github/ISSUE_TEMPLATE/bug_report.md +32 -0
  3. .github/ISSUE_TEMPLATE/feature_request.md +20 -0
  4. .github/PULL_REQUEST_TEMPLATE.md +20 -0
  5. .github/workflows/checksum.yml +45 -0
  6. .github/workflows/close-issue.yml +23 -0
  7. .github/workflows/docker.yml +70 -0
  8. .github/workflows/genlocale.yml +38 -0
  9. .github/workflows/pull_format.yml +48 -0
  10. .github/workflows/push_format.yml +52 -0
  11. .github/workflows/sync_dev.yml +23 -0
  12. .github/workflows/unitest.yml +36 -0
  13. .gitignore +14 -0
  14. Dockerfile +46 -0
  15. LICENSE +661 -0
  16. README.md +199 -12
  17. app.py +105 -0
  18. assets/hubert/.gitignore +2 -0
  19. assets/indices/.gitignore +2 -0
  20. assets/pretrained/.gitignore +2 -0
  21. assets/pretrained_v2/.gitignore +2 -0
  22. assets/rmvpe/.gitignore +2 -0
  23. assets/uvr5_weights/.gitignore +2 -0
  24. configs/__init__.py +1 -0
  25. configs/config.json +21 -0
  26. configs/config.py +259 -0
  27. configs/inuse/.gitignore +4 -0
  28. configs/inuse/v1/.gitignore +2 -0
  29. configs/inuse/v2/.gitignore +2 -0
  30. configs/v1/32k.json +46 -0
  31. configs/v1/40k.json +46 -0
  32. configs/v1/48k.json +46 -0
  33. configs/v2/32k.json +46 -0
  34. configs/v2/48k.json +46 -0
  35. docker-compose.yml +20 -0
  36. docs/cn/README.cn.md +198 -0
  37. docs/cn/faq.md +150 -0
  38. docs/en/faiss_tips_en.md +102 -0
  39. docs/en/faq_en.md +114 -0
  40. docs/en/training_tips_en.md +65 -0
  41. docs/fr/README.fr.md +166 -0
  42. docs/fr/faiss_tips_fr.md +105 -0
  43. docs/fr/faq_fr.md +164 -0
  44. docs/fr/training_tips_fr.md +65 -0
  45. docs/jp/README.ja.md +203 -0
  46. docs/jp/faiss_tips_ja.md +101 -0
  47. docs/jp/faq_ja.md +117 -0
  48. docs/jp/training_tips_ja.md +64 -0
  49. docs/kr/README.ko.han.md +100 -0
  50. docs/kr/README.ko.md +359 -0
.env ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ OPENBLAS_NUM_THREADS = 1
2
+ no_proxy = localhost, 127.0.0.1, ::1
3
+
4
+ # You can change the location of the model, etc. by changing here
5
+ weight_root = assets/weights
6
+ weight_uvr5_root = assets/uvr5_weights
7
+ index_root = logs
8
+ outside_index_root = assets/indices
9
+ rmvpe_root = assets/rmvpe
.github/ISSUE_TEMPLATE/bug_report.md ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve
4
+ title: ''
5
+ labels: ''
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Describe the bug**
11
+ A clear and concise description of what the bug is.
12
+
13
+ **To Reproduce**
14
+ Steps to reproduce the behavior:
15
+ 1. Go to '...'
16
+ 2. Click on '....'
17
+ 3. Scroll down to '....'
18
+ 4. See error
19
+
20
+ **Expected behavior**
21
+ A clear and concise description of what you expected to happen.
22
+
23
+ **Screenshots**
24
+ If applicable, add screenshots to help explain your problem.
25
+
26
+ **Desktop (please complete the following information):**
27
+ - OS and version: [e.g. Windows, Linux]
28
+ - Python version: [e.g. 3.9.7, 3.11]
29
+ - Commit/Tag with the issue: [e.g. 22]
30
+
31
+ **Additional context**
32
+ Add any other context about the problem here.
.github/ISSUE_TEMPLATE/feature_request.md ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for this project
4
+ title: ''
5
+ labels: ''
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Is your feature request related to a problem? Please describe.**
11
+ A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12
+
13
+ **Describe the solution you'd like**
14
+ A clear and concise description of what you want to happen.
15
+
16
+ **Describe alternatives you've considered**
17
+ A clear and concise description of any alternative solutions or features you've considered.
18
+
19
+ **Additional context**
20
+ Add any other context or screenshots about the feature request here.
.github/PULL_REQUEST_TEMPLATE.md ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Pull request checklist
2
+
3
+ - [ ] The PR has a proper title. Use [Semantic Commit Messages](https://seesparkbox.com/foundry/semantic_commit_messages). (No more branch-name title please)
4
+ - [ ] Make sure you are requesting the right branch: `dev`.
5
+ - [ ] Make sure this is ready to be merged into the relevant branch. Please don't create a PR and let it hang for a few days.
6
+ - [ ] Ensure all tests are passing.
7
+ - [ ] Ensure linting is passing.
8
+
9
+ # PR type
10
+
11
+ - Bug fix / new feature / chore
12
+
13
+ # Description
14
+
15
+ - Describe what this pull request is for.
16
+ - What will it affect.
17
+
18
+ # Screenshot
19
+
20
+ - Please include a screenshot if applicable
.github/workflows/checksum.yml ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Calculate and Sync SHA256
2
+ on:
3
+ push:
4
+ branches:
5
+ - main
6
+ - dev
7
+ jobs:
8
+ checksum:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@master
12
+
13
+ - name: Setup Go Environment
14
+ uses: actions/setup-go@master
15
+
16
+ - name: Run RVC-Models-Downloader
17
+ run: |
18
+ wget https://github.com/fumiama/RVC-Models-Downloader/releases/download/v0.2.3/rvcmd_linux_amd64.deb
19
+ sudo apt -y install ./rvcmd_linux_amd64.deb
20
+ rm -f ./rvcmd_linux_amd64.deb
21
+ rvcmd -notrs -w 1 -notui assets/all
22
+
23
+ - name: Calculate all Checksums
24
+ run: go run tools/checksum/*.go
25
+
26
+ - name: Commit back
27
+ if: ${{ !github.head_ref }}
28
+ id: commitback
29
+ continue-on-error: true
30
+ run: |
31
+ git config --local user.name 'github-actions[bot]'
32
+ git config --local user.email 'github-actions[bot]@users.noreply.github.com'
33
+ git add --all
34
+ git commit -m "chore(env): sync checksum on ${{github.ref_name}}"
35
+
36
+ - name: Create Pull Request
37
+ if: steps.commitback.outcome == 'success'
38
+ continue-on-error: true
39
+ uses: peter-evans/create-pull-request@v5
40
+ with:
41
+ delete-branch: true
42
+ body: "Automatically sync checksum in .env"
43
+ title: "chore(env): sync checksum on ${{github.ref_name}}"
44
+ commit-message: "chore(env): sync checksum on ${{github.ref_name}}"
45
+ branch: checksum-${{github.ref_name}}
.github/workflows/close-issue.yml ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Close Inactive Issues
2
+ on:
3
+ schedule:
4
+ - cron: "0 4 * * *"
5
+
6
+ jobs:
7
+ close-issues:
8
+ runs-on: ubuntu-latest
9
+ permissions:
10
+ issues: write
11
+ pull-requests: write
12
+ steps:
13
+ - uses: actions/stale@v5
14
+ with:
15
+ exempt-issue-labels: "help wanted,good first issue,documentation,following up,todo list"
16
+ days-before-issue-stale: 30
17
+ days-before-issue-close: 15
18
+ stale-issue-label: "stale"
19
+ close-issue-message: "This issue was closed because it has been inactive for 15 days since being marked as stale."
20
+ days-before-pr-stale: -1
21
+ days-before-pr-close: -1
22
+ operations-per-run: 10000
23
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
.github/workflows/docker.yml ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Build and Push Docker Image
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ push:
6
+ # Sequence of patterns matched against refs/tags
7
+ tags:
8
+ - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10
9
+
10
+ jobs:
11
+ build:
12
+ runs-on: ubuntu-latest
13
+ permissions:
14
+ packages: write
15
+ contents: read
16
+ steps:
17
+ - uses: actions/checkout@v3
18
+ - name: Set time zone
19
+ uses: szenius/set-timezone@v1.0
20
+ with:
21
+ timezoneLinux: "Asia/Shanghai"
22
+ timezoneMacos: "Asia/Shanghai"
23
+ timezoneWindows: "China Standard Time"
24
+
25
+ # # ๅฆ‚ๆžœๆœ‰ dockerhub ่ดฆๆˆท๏ผŒๅฏไปฅๅœจgithub็š„secretsไธญ้…็ฝฎไธ‹้ขไธคไธช๏ผŒ็„ถๅŽๅ–ๆถˆไธ‹้ขๆณจ้‡Š็š„่ฟ™ๅ‡ ่กŒ๏ผŒๅนถๅœจmetaๆญฅ้ชค็š„imagesๅขžๅŠ ไธ€่กŒ ${{ github.repository }}
26
+ # - name: Login to DockerHub
27
+ # uses: docker/login-action@v1
28
+ # with:
29
+ # username: ${{ secrets.DOCKERHUB_USERNAME }}
30
+ # password: ${{ secrets.DOCKERHUB_TOKEN }}
31
+
32
+ - name: Login to GHCR
33
+ uses: docker/login-action@v2
34
+ with:
35
+ registry: ghcr.io
36
+ username: ${{ github.repository_owner }}
37
+ password: ${{ secrets.GITHUB_TOKEN }}
38
+
39
+ - name: Extract metadata (tags, labels) for Docker
40
+ id: meta
41
+ uses: docker/metadata-action@v4
42
+ with:
43
+ images: |
44
+ ghcr.io/${{ github.repository }}
45
+ # generate Docker tags based on the following events/attributes
46
+ # nightly, master, pr-2, 1.2.3, 1.2, 1
47
+ tags: |
48
+ type=schedule,pattern=nightly
49
+ type=edge
50
+ type=ref,event=branch
51
+ type=ref,event=pr
52
+ type=semver,pattern={{version}}
53
+ type=semver,pattern={{major}}.{{minor}}
54
+ type=semver,pattern={{major}}
55
+
56
+ - name: Set up QEMU
57
+ uses: docker/setup-qemu-action@v2
58
+
59
+ - name: Set up Docker Buildx
60
+ uses: docker/setup-buildx-action@v2
61
+
62
+ - name: Build and push
63
+ id: docker_build
64
+ uses: docker/build-push-action@v4
65
+ with:
66
+ context: .
67
+ platforms: linux/amd64,linux/arm64
68
+ push: true
69
+ tags: ${{ steps.meta.outputs.tags }}
70
+ labels: ${{ steps.meta.outputs.labels }}
.github/workflows/genlocale.yml ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Generate and Sync Locale
2
+ on:
3
+ push:
4
+ branches:
5
+ - main
6
+ - dev
7
+ jobs:
8
+ genlocale:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@master
12
+
13
+ - name: Run locale generation
14
+ run: |
15
+ python3 i18n/scan_i18n.py
16
+ cd i18n
17
+ python3 locale_diff.py
18
+
19
+ - name: Commit back
20
+ if: ${{ !github.head_ref }}
21
+ id: commitback
22
+ continue-on-error: true
23
+ run: |
24
+ git config --local user.name 'github-actions[bot]'
25
+ git config --local user.email 'github-actions[bot]@users.noreply.github.com'
26
+ git add --all
27
+ git commit -m "chore(i18n): sync locale on ${{github.ref_name}}"
28
+
29
+ - name: Create Pull Request
30
+ if: steps.commitback.outcome == 'success'
31
+ continue-on-error: true
32
+ uses: peter-evans/create-pull-request@v5
33
+ with:
34
+ delete-branch: true
35
+ body: "Automatically sync i18n translation jsons"
36
+ title: "chore(i18n): sync locale on ${{github.ref_name}}"
37
+ commit-message: "chore(i18n): sync locale on ${{github.ref_name}}"
38
+ branch: genlocale-${{github.ref_name}}
.github/workflows/pull_format.yml ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Check Pull Format
2
+
3
+ on:
4
+ pull_request_target:
5
+ types: [opened, reopened]
6
+
7
+ jobs:
8
+ # This workflow closes invalid PR
9
+ close_pr:
10
+ # The type of runner that the job will run on
11
+ runs-on: ubuntu-latest
12
+ permissions: write-all
13
+
14
+ # Steps represent a sequence of tasks that will be executed as part of the job
15
+ steps:
16
+ - name: Close PR if it is not pointed to dev branch
17
+ if: github.event.pull_request.base.ref != 'dev'
18
+ uses: superbrothers/close-pull-request@v3
19
+ with:
20
+ # Optional. Post a issue comment just before closing a pull request.
21
+ comment: "Invalid PR to `non-dev` branch `${{ github.event.pull_request.base.ref }}`."
22
+
23
+ pull_format:
24
+ runs-on: ubuntu-latest
25
+ permissions:
26
+ contents: write
27
+
28
+ continue-on-error: true
29
+
30
+ steps:
31
+ - name: Checkout
32
+ continue-on-error: true
33
+ uses: actions/checkout@v3
34
+ with:
35
+ ref: ${{ github.head_ref }}
36
+ fetch-depth: 0
37
+
38
+ - name: Set up Python ${{ matrix.python-version }}
39
+ uses: actions/setup-python@v4
40
+ with:
41
+ python-version: ${{ matrix.python-version }}
42
+
43
+ - name: Install Black
44
+ run: pip install "black[jupyter]"
45
+
46
+ - name: Run Black
47
+ # run: black $(git ls-files '*.py')
48
+ run: black .
.github/workflows/push_format.yml ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Standardize Code Format
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ - dev
8
+
9
+ jobs:
10
+ push_format:
11
+ runs-on: ubuntu-latest
12
+
13
+ permissions:
14
+ contents: write
15
+ pull-requests: write
16
+
17
+ steps:
18
+ - uses: actions/checkout@v3
19
+ with:
20
+ ref: ${{github.ref_name}}
21
+
22
+ - name: Set up Python ${{ matrix.python-version }}
23
+ uses: actions/setup-python@v4
24
+ with:
25
+ python-version: ${{ matrix.python-version }}
26
+
27
+ - name: Install Black
28
+ run: pip install "black[jupyter]"
29
+
30
+ - name: Run Black
31
+ # run: black $(git ls-files '*.py')
32
+ run: black .
33
+
34
+ - name: Commit Back
35
+ continue-on-error: true
36
+ id: commitback
37
+ run: |
38
+ git config --local user.email "github-actions[bot]@users.noreply.github.com"
39
+ git config --local user.name "github-actions[bot]"
40
+ git add --all
41
+ git commit -m "chore(format): run black on ${{github.ref_name}}"
42
+
43
+ - name: Create Pull Request
44
+ if: steps.commitback.outcome == 'success'
45
+ continue-on-error: true
46
+ uses: peter-evans/create-pull-request@v5
47
+ with:
48
+ delete-branch: true
49
+ body: "Automatically apply code formatter change"
50
+ title: "chore(format): run black on ${{github.ref_name}}"
51
+ commit-message: "chore(format): run black on ${{github.ref_name}}"
52
+ branch: formatter-${{github.ref_name}}
.github/workflows/sync_dev.yml ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Merge dev into main
2
+
3
+ on:
4
+ workflow_dispatch:
5
+
6
+ jobs:
7
+ sync_dev:
8
+ runs-on: ubuntu-latest
9
+
10
+ permissions:
11
+ contents: write
12
+ pull-requests: write
13
+
14
+ steps:
15
+ - uses: actions/checkout@v3
16
+ with:
17
+ ref: main
18
+
19
+ - name: Create Pull Request
20
+ run: |
21
+ gh pr create --title "chore(sync): merge dev into main" --body "Merge dev to main" --base main --head dev
22
+ env:
23
+ GH_TOKEN: ${{ github.token }}
.github/workflows/unitest.yml ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Unit Test
2
+ on: [ push, pull_request ]
3
+ jobs:
4
+ build:
5
+ runs-on: ${{ matrix.os }}
6
+ strategy:
7
+ matrix:
8
+ python-version: ["3.8", "3.9", "3.10"]
9
+ os: [ubuntu-latest]
10
+ fail-fast: true
11
+
12
+ steps:
13
+ - uses: actions/checkout@master
14
+ - name: Set up Python ${{ matrix.python-version }}
15
+ uses: actions/setup-python@v4
16
+ with:
17
+ python-version: ${{ matrix.python-version }}
18
+ - name: Install dependencies
19
+ run: |
20
+ sudo apt update
21
+ wget https://github.com/fumiama/RVC-Models-Downloader/releases/download/v0.2.3/rvcmd_linux_amd64.deb
22
+ sudo apt -y install ./rvcmd_linux_amd64.deb
23
+ python -m pip install --upgrade pip
24
+ python -m pip install --upgrade setuptools
25
+ python -m pip install --upgrade wheel
26
+ pip install torch torchvision torchaudio
27
+ pip install -r requirements/main.txt
28
+ rvcmd -notrs -w 1 -notui assets/all
29
+ - name: Test step 1 & 2
30
+ run: |
31
+ mkdir -p logs/mi-test
32
+ touch logs/mi-test/preprocess.log
33
+ python infer/modules/train/preprocess.py logs/mute/0_gt_wavs 48000 8 logs/mi-test True 3.7
34
+ touch logs/mi-test/extract_f0_feature.log
35
+ python infer/modules/train/extract/extract_f0_print.py logs/mi-test $(nproc) pm
36
+ python infer/modules/train/extract_feature_print.py cpu 1 0 0 logs/mi-test v1 True
.gitignore ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .DS_Store
2
+ __pycache__
3
+ /TEMP
4
+ *.pyd
5
+ .venv
6
+ .vscode
7
+ .idea
8
+ xcuserdata
9
+ /opt
10
+
11
+ # Generated by RVC
12
+ /logs
13
+
14
+ /assets/weights/*
Dockerfile ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # syntax=docker/dockerfile:1
2
+
3
+ FROM nvidia/cuda:11.6.2-cudnn8-runtime-ubuntu20.04
4
+
5
+ EXPOSE 7865
6
+
7
+ WORKDIR /app
8
+
9
+ # Install dependenceis to add PPAs
10
+ RUN apt-get update && \
11
+ apt-get install -y -qq aria2 && apt clean && \
12
+ apt-get install -y software-properties-common && \
13
+ apt-get clean && \
14
+ rm -rf /var/lib/apt/lists/*
15
+ # Add the deadsnakes PPA to get Python 3.9
16
+ RUN add-apt-repository ppa:deadsnakes/ppa
17
+
18
+ # Install Python 3.9 and pip
19
+ RUN apt-get update && \
20
+ apt-get install -y build-essential python-dev python3-dev python3.9-distutils python3.9-dev python3.9 curl && \
21
+ apt-get clean && \
22
+ update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1 && \
23
+ curl https://bootstrap.pypa.io/get-pip.py | python3.9
24
+
25
+ # Set Python 3.9 as the default
26
+ RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.9 1
27
+
28
+ COPY . .
29
+
30
+ RUN python3 -m pip install --no-cache-dir -r requirements/main.txt
31
+
32
+ RUN aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/pretrained_v2/D40k.pth -d assets/pretrained_v2/ -o D40k.pth
33
+ RUN aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/pretrained_v2/G40k.pth -d assets/pretrained_v2/ -o G40k.pth
34
+ RUN aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/pretrained_v2/f0D40k.pth -d assets/pretrained_v2/ -o f0D40k.pth
35
+ RUN aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/pretrained_v2/f0G40k.pth -d assets/pretrained_v2/ -o f0G40k.pth
36
+
37
+ RUN aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/uvr5_weights/HP2-ไบบๅฃฐvocals+้žไบบๅฃฐinstrumentals.pth -d assets/uvr5_weights/ -o HP2-ไบบๅฃฐvocals+้žไบบๅฃฐinstrumentals.pth
38
+ RUN aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/uvr5_weights/HP5-ไธปๆ—‹ๅพ‹ไบบๅฃฐvocals+ๅ…ถไป–instrumentals.pth -d assets/uvr5_weights/ -o HP5-ไธปๆ—‹ๅพ‹ไบบๅฃฐvocals+ๅ…ถไป–instrumentals.pth
39
+
40
+ RUN aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/hubert_base.pt -d assets/hubert -o hubert_base.pt
41
+
42
+ RUN aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/rmvpe.pt -d assets/rmvpe -o rmvpe.pt
43
+
44
+ VOLUME [ "/app/weights", "/app/opt" ]
45
+
46
+ CMD ["python3", "web.py"]
LICENSE ADDED
@@ -0,0 +1,661 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ GNU AFFERO GENERAL PUBLIC LICENSE
2
+ Version 3, 19 November 2007
3
+
4
+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
5
+ Everyone is permitted to copy and distribute verbatim copies
6
+ of this license document, but changing it is not allowed.
7
+
8
+ Preamble
9
+
10
+ The GNU Affero General Public License is a free, copyleft license for
11
+ software and other kinds of works, specifically designed to ensure
12
+ cooperation with the community in the case of network server software.
13
+
14
+ The licenses for most software and other practical works are designed
15
+ to take away your freedom to share and change the works. By contrast,
16
+ our General Public Licenses are intended to guarantee your freedom to
17
+ share and change all versions of a program--to make sure it remains free
18
+ software for all its users.
19
+
20
+ When we speak of free software, we are referring to freedom, not
21
+ price. Our General Public Licenses are designed to make sure that you
22
+ have the freedom to distribute copies of free software (and charge for
23
+ them if you wish), that you receive source code or can get it if you
24
+ want it, that you can change the software or use pieces of it in new
25
+ free programs, and that you know you can do these things.
26
+
27
+ Developers that use our General Public Licenses protect your rights
28
+ with two steps: (1) assert copyright on the software, and (2) offer
29
+ you this License which gives you legal permission to copy, distribute
30
+ and/or modify the software.
31
+
32
+ A secondary benefit of defending all users' freedom is that
33
+ improvements made in alternate versions of the program, if they
34
+ receive widespread use, become available for other developers to
35
+ incorporate. Many developers of free software are heartened and
36
+ encouraged by the resulting cooperation. However, in the case of
37
+ software used on network servers, this result may fail to come about.
38
+ The GNU General Public License permits making a modified version and
39
+ letting the public access it on a server without ever releasing its
40
+ source code to the public.
41
+
42
+ The GNU Affero General Public License is designed specifically to
43
+ ensure that, in such cases, the modified source code becomes available
44
+ to the community. It requires the operator of a network server to
45
+ provide the source code of the modified version running there to the
46
+ users of that server. Therefore, public use of a modified version, on
47
+ a publicly accessible server, gives the public access to the source
48
+ code of the modified version.
49
+
50
+ An older license, called the Affero General Public License and
51
+ published by Affero, was designed to accomplish similar goals. This is
52
+ a different license, not a version of the Affero GPL, but Affero has
53
+ released a new version of the Affero GPL which permits relicensing under
54
+ this license.
55
+
56
+ The precise terms and conditions for copying, distribution and
57
+ modification follow.
58
+
59
+ TERMS AND CONDITIONS
60
+
61
+ 0. Definitions.
62
+
63
+ "This License" refers to version 3 of the GNU Affero General Public License.
64
+
65
+ "Copyright" also means copyright-like laws that apply to other kinds of
66
+ works, such as semiconductor masks.
67
+
68
+ "The Program" refers to any copyrightable work licensed under this
69
+ License. Each licensee is addressed as "you". "Licensees" and
70
+ "recipients" may be individuals or organizations.
71
+
72
+ To "modify" a work means to copy from or adapt all or part of the work
73
+ in a fashion requiring copyright permission, other than the making of an
74
+ exact copy. The resulting work is called a "modified version" of the
75
+ earlier work or a work "based on" the earlier work.
76
+
77
+ A "covered work" means either the unmodified Program or a work based
78
+ on the Program.
79
+
80
+ To "propagate" a work means to do anything with it that, without
81
+ permission, would make you directly or secondarily liable for
82
+ infringement under applicable copyright law, except executing it on a
83
+ computer or modifying a private copy. Propagation includes copying,
84
+ distribution (with or without modification), making available to the
85
+ public, and in some countries other activities as well.
86
+
87
+ To "convey" a work means any kind of propagation that enables other
88
+ parties to make or receive copies. Mere interaction with a user through
89
+ a computer network, with no transfer of a copy, is not conveying.
90
+
91
+ An interactive user interface displays "Appropriate Legal Notices"
92
+ to the extent that it includes a convenient and prominently visible
93
+ feature that (1) displays an appropriate copyright notice, and (2)
94
+ tells the user that there is no warranty for the work (except to the
95
+ extent that warranties are provided), that licensees may convey the
96
+ work under this License, and how to view a copy of this License. If
97
+ the interface presents a list of user commands or options, such as a
98
+ menu, a prominent item in the list meets this criterion.
99
+
100
+ 1. Source Code.
101
+
102
+ The "source code" for a work means the preferred form of the work
103
+ for making modifications to it. "Object code" means any non-source
104
+ form of a work.
105
+
106
+ A "Standard Interface" means an interface that either is an official
107
+ standard defined by a recognized standards body, or, in the case of
108
+ interfaces specified for a particular programming language, one that
109
+ is widely used among developers working in that language.
110
+
111
+ The "System Libraries" of an executable work include anything, other
112
+ than the work as a whole, that (a) is included in the normal form of
113
+ packaging a Major Component, but which is not part of that Major
114
+ Component, and (b) serves only to enable use of the work with that
115
+ Major Component, or to implement a Standard Interface for which an
116
+ implementation is available to the public in source code form. A
117
+ "Major Component", in this context, means a major essential component
118
+ (kernel, window system, and so on) of the specific operating system
119
+ (if any) on which the executable work runs, or a compiler used to
120
+ produce the work, or an object code interpreter used to run it.
121
+
122
+ The "Corresponding Source" for a work in object code form means all
123
+ the source code needed to generate, install, and (for an executable
124
+ work) run the object code and to modify the work, including scripts to
125
+ control those activities. However, it does not include the work's
126
+ System Libraries, or general-purpose tools or generally available free
127
+ programs which are used unmodified in performing those activities but
128
+ which are not part of the work. For example, Corresponding Source
129
+ includes interface definition files associated with source files for
130
+ the work, and the source code for shared libraries and dynamically
131
+ linked subprograms that the work is specifically designed to require,
132
+ such as by intimate data communication or control flow between those
133
+ subprograms and other parts of the work.
134
+
135
+ The Corresponding Source need not include anything that users
136
+ can regenerate automatically from other parts of the Corresponding
137
+ Source.
138
+
139
+ The Corresponding Source for a work in source code form is that
140
+ same work.
141
+
142
+ 2. Basic Permissions.
143
+
144
+ All rights granted under this License are granted for the term of
145
+ copyright on the Program, and are irrevocable provided the stated
146
+ conditions are met. This License explicitly affirms your unlimited
147
+ permission to run the unmodified Program. The output from running a
148
+ covered work is covered by this License only if the output, given its
149
+ content, constitutes a covered work. This License acknowledges your
150
+ rights of fair use or other equivalent, as provided by copyright law.
151
+
152
+ You may make, run and propagate covered works that you do not
153
+ convey, without conditions so long as your license otherwise remains
154
+ in force. You may convey covered works to others for the sole purpose
155
+ of having them make modifications exclusively for you, or provide you
156
+ with facilities for running those works, provided that you comply with
157
+ the terms of this License in conveying all material for which you do
158
+ not control copyright. Those thus making or running the covered works
159
+ for you must do so exclusively on your behalf, under your direction
160
+ and control, on terms that prohibit them from making any copies of
161
+ your copyrighted material outside their relationship with you.
162
+
163
+ Conveying under any other circumstances is permitted solely under
164
+ the conditions stated below. Sublicensing is not allowed; section 10
165
+ makes it unnecessary.
166
+
167
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
168
+
169
+ No covered work shall be deemed part of an effective technological
170
+ measure under any applicable law fulfilling obligations under article
171
+ 11 of the WIPO copyright treaty adopted on 20 December 1996, or
172
+ similar laws prohibiting or restricting circumvention of such
173
+ measures.
174
+
175
+ When you convey a covered work, you waive any legal power to forbid
176
+ circumvention of technological measures to the extent such circumvention
177
+ is effected by exercising rights under this License with respect to
178
+ the covered work, and you disclaim any intention to limit operation or
179
+ modification of the work as a means of enforcing, against the work's
180
+ users, your or third parties' legal rights to forbid circumvention of
181
+ technological measures.
182
+
183
+ 4. Conveying Verbatim Copies.
184
+
185
+ You may convey verbatim copies of the Program's source code as you
186
+ receive it, in any medium, provided that you conspicuously and
187
+ appropriately publish on each copy an appropriate copyright notice;
188
+ keep intact all notices stating that this License and any
189
+ non-permissive terms added in accord with section 7 apply to the code;
190
+ keep intact all notices of the absence of any warranty; and give all
191
+ recipients a copy of this License along with the Program.
192
+
193
+ You may charge any price or no price for each copy that you convey,
194
+ and you may offer support or warranty protection for a fee.
195
+
196
+ 5. Conveying Modified Source Versions.
197
+
198
+ You may convey a work based on the Program, or the modifications to
199
+ produce it from the Program, in the form of source code under the
200
+ terms of section 4, provided that you also meet all of these conditions:
201
+
202
+ a) The work must carry prominent notices stating that you modified
203
+ it, and giving a relevant date.
204
+
205
+ b) The work must carry prominent notices stating that it is
206
+ released under this License and any conditions added under section
207
+ 7. This requirement modifies the requirement in section 4 to
208
+ "keep intact all notices".
209
+
210
+ c) You must license the entire work, as a whole, under this
211
+ License to anyone who comes into possession of a copy. This
212
+ License will therefore apply, along with any applicable section 7
213
+ additional terms, to the whole of the work, and all its parts,
214
+ regardless of how they are packaged. This License gives no
215
+ permission to license the work in any other way, but it does not
216
+ invalidate such permission if you have separately received it.
217
+
218
+ d) If the work has interactive user interfaces, each must display
219
+ Appropriate Legal Notices; however, if the Program has interactive
220
+ interfaces that do not display Appropriate Legal Notices, your
221
+ work need not make them do so.
222
+
223
+ A compilation of a covered work with other separate and independent
224
+ works, which are not by their nature extensions of the covered work,
225
+ and which are not combined with it such as to form a larger program,
226
+ in or on a volume of a storage or distribution medium, is called an
227
+ "aggregate" if the compilation and its resulting copyright are not
228
+ used to limit the access or legal rights of the compilation's users
229
+ beyond what the individual works permit. Inclusion of a covered work
230
+ in an aggregate does not cause this License to apply to the other
231
+ parts of the aggregate.
232
+
233
+ 6. Conveying Non-Source Forms.
234
+
235
+ You may convey a covered work in object code form under the terms
236
+ of sections 4 and 5, provided that you also convey the
237
+ machine-readable Corresponding Source under the terms of this License,
238
+ in one of these ways:
239
+
240
+ a) Convey the object code in, or embodied in, a physical product
241
+ (including a physical distribution medium), accompanied by the
242
+ Corresponding Source fixed on a durable physical medium
243
+ customarily used for software interchange.
244
+
245
+ b) Convey the object code in, or embodied in, a physical product
246
+ (including a physical distribution medium), accompanied by a
247
+ written offer, valid for at least three years and valid for as
248
+ long as you offer spare parts or customer support for that product
249
+ model, to give anyone who possesses the object code either (1) a
250
+ copy of the Corresponding Source for all the software in the
251
+ product that is covered by this License, on a durable physical
252
+ medium customarily used for software interchange, for a price no
253
+ more than your reasonable cost of physically performing this
254
+ conveying of source, or (2) access to copy the
255
+ Corresponding Source from a network server at no charge.
256
+
257
+ c) Convey individual copies of the object code with a copy of the
258
+ written offer to provide the Corresponding Source. This
259
+ alternative is allowed only occasionally and noncommercially, and
260
+ only if you received the object code with such an offer, in accord
261
+ with subsection 6b.
262
+
263
+ d) Convey the object code by offering access from a designated
264
+ place (gratis or for a charge), and offer equivalent access to the
265
+ Corresponding Source in the same way through the same place at no
266
+ further charge. You need not require recipients to copy the
267
+ Corresponding Source along with the object code. If the place to
268
+ copy the object code is a network server, the Corresponding Source
269
+ may be on a different server (operated by you or a third party)
270
+ that supports equivalent copying facilities, provided you maintain
271
+ clear directions next to the object code saying where to find the
272
+ Corresponding Source. Regardless of what server hosts the
273
+ Corresponding Source, you remain obligated to ensure that it is
274
+ available for as long as needed to satisfy these requirements.
275
+
276
+ e) Convey the object code using peer-to-peer transmission, provided
277
+ you inform other peers where the object code and Corresponding
278
+ Source of the work are being offered to the general public at no
279
+ charge under subsection 6d.
280
+
281
+ A separable portion of the object code, whose source code is excluded
282
+ from the Corresponding Source as a System Library, need not be
283
+ included in conveying the object code work.
284
+
285
+ A "User Product" is either (1) a "consumer product", which means any
286
+ tangible personal property which is normally used for personal, family,
287
+ or household purposes, or (2) anything designed or sold for incorporation
288
+ into a dwelling. In determining whether a product is a consumer product,
289
+ doubtful cases shall be resolved in favor of coverage. For a particular
290
+ product received by a particular user, "normally used" refers to a
291
+ typical or common use of that class of product, regardless of the status
292
+ of the particular user or of the way in which the particular user
293
+ actually uses, or expects or is expected to use, the product. A product
294
+ is a consumer product regardless of whether the product has substantial
295
+ commercial, industrial or non-consumer uses, unless such uses represent
296
+ the only significant mode of use of the product.
297
+
298
+ "Installation Information" for a User Product means any methods,
299
+ procedures, authorization keys, or other information required to install
300
+ and execute modified versions of a covered work in that User Product from
301
+ a modified version of its Corresponding Source. The information must
302
+ suffice to ensure that the continued functioning of the modified object
303
+ code is in no case prevented or interfered with solely because
304
+ modification has been made.
305
+
306
+ If you convey an object code work under this section in, or with, or
307
+ specifically for use in, a User Product, and the conveying occurs as
308
+ part of a transaction in which the right of possession and use of the
309
+ User Product is transferred to the recipient in perpetuity or for a
310
+ fixed term (regardless of how the transaction is characterized), the
311
+ Corresponding Source conveyed under this section must be accompanied
312
+ by the Installation Information. But this requirement does not apply
313
+ if neither you nor any third party retains the ability to install
314
+ modified object code on the User Product (for example, the work has
315
+ been installed in ROM).
316
+
317
+ The requirement to provide Installation Information does not include a
318
+ requirement to continue to provide support service, warranty, or updates
319
+ for a work that has been modified or installed by the recipient, or for
320
+ the User Product in which it has been modified or installed. Access to a
321
+ network may be denied when the modification itself materially and
322
+ adversely affects the operation of the network or violates the rules and
323
+ protocols for communication across the network.
324
+
325
+ Corresponding Source conveyed, and Installation Information provided,
326
+ in accord with this section must be in a format that is publicly
327
+ documented (and with an implementation available to the public in
328
+ source code form), and must require no special password or key for
329
+ unpacking, reading or copying.
330
+
331
+ 7. Additional Terms.
332
+
333
+ "Additional permissions" are terms that supplement the terms of this
334
+ License by making exceptions from one or more of its conditions.
335
+ Additional permissions that are applicable to the entire Program shall
336
+ be treated as though they were included in this License, to the extent
337
+ that they are valid under applicable law. If additional permissions
338
+ apply only to part of the Program, that part may be used separately
339
+ under those permissions, but the entire Program remains governed by
340
+ this License without regard to the additional permissions.
341
+
342
+ When you convey a copy of a covered work, you may at your option
343
+ remove any additional permissions from that copy, or from any part of
344
+ it. (Additional permissions may be written to require their own
345
+ removal in certain cases when you modify the work.) You may place
346
+ additional permissions on material, added by you to a covered work,
347
+ for which you have or can give appropriate copyright permission.
348
+
349
+ Notwithstanding any other provision of this License, for material you
350
+ add to a covered work, you may (if authorized by the copyright holders of
351
+ that material) supplement the terms of this License with terms:
352
+
353
+ a) Disclaiming warranty or limiting liability differently from the
354
+ terms of sections 15 and 16 of this License; or
355
+
356
+ b) Requiring preservation of specified reasonable legal notices or
357
+ author attributions in that material or in the Appropriate Legal
358
+ Notices displayed by works containing it; or
359
+
360
+ c) Prohibiting misrepresentation of the origin of that material, or
361
+ requiring that modified versions of such material be marked in
362
+ reasonable ways as different from the original version; or
363
+
364
+ d) Limiting the use for publicity purposes of names of licensors or
365
+ authors of the material; or
366
+
367
+ e) Declining to grant rights under trademark law for use of some
368
+ trade names, trademarks, or service marks; or
369
+
370
+ f) Requiring indemnification of licensors and authors of that
371
+ material by anyone who conveys the material (or modified versions of
372
+ it) with contractual assumptions of liability to the recipient, for
373
+ any liability that these contractual assumptions directly impose on
374
+ those licensors and authors.
375
+
376
+ All other non-permissive additional terms are considered "further
377
+ restrictions" within the meaning of section 10. If the Program as you
378
+ received it, or any part of it, contains a notice stating that it is
379
+ governed by this License along with a term that is a further
380
+ restriction, you may remove that term. If a license document contains
381
+ a further restriction but permits relicensing or conveying under this
382
+ License, you may add to a covered work material governed by the terms
383
+ of that license document, provided that the further restriction does
384
+ not survive such relicensing or conveying.
385
+
386
+ If you add terms to a covered work in accord with this section, you
387
+ must place, in the relevant source files, a statement of the
388
+ additional terms that apply to those files, or a notice indicating
389
+ where to find the applicable terms.
390
+
391
+ Additional terms, permissive or non-permissive, may be stated in the
392
+ form of a separately written license, or stated as exceptions;
393
+ the above requirements apply either way.
394
+
395
+ 8. Termination.
396
+
397
+ You may not propagate or modify a covered work except as expressly
398
+ provided under this License. Any attempt otherwise to propagate or
399
+ modify it is void, and will automatically terminate your rights under
400
+ this License (including any patent licenses granted under the third
401
+ paragraph of section 11).
402
+
403
+ However, if you cease all violation of this License, then your
404
+ license from a particular copyright holder is reinstated (a)
405
+ provisionally, unless and until the copyright holder explicitly and
406
+ finally terminates your license, and (b) permanently, if the copyright
407
+ holder fails to notify you of the violation by some reasonable means
408
+ prior to 60 days after the cessation.
409
+
410
+ Moreover, your license from a particular copyright holder is
411
+ reinstated permanently if the copyright holder notifies you of the
412
+ violation by some reasonable means, this is the first time you have
413
+ received notice of violation of this License (for any work) from that
414
+ copyright holder, and you cure the violation prior to 30 days after
415
+ your receipt of the notice.
416
+
417
+ Termination of your rights under this section does not terminate the
418
+ licenses of parties who have received copies or rights from you under
419
+ this License. If your rights have been terminated and not permanently
420
+ reinstated, you do not qualify to receive new licenses for the same
421
+ material under section 10.
422
+
423
+ 9. Acceptance Not Required for Having Copies.
424
+
425
+ You are not required to accept this License in order to receive or
426
+ run a copy of the Program. Ancillary propagation of a covered work
427
+ occurring solely as a consequence of using peer-to-peer transmission
428
+ to receive a copy likewise does not require acceptance. However,
429
+ nothing other than this License grants you permission to propagate or
430
+ modify any covered work. These actions infringe copyright if you do
431
+ not accept this License. Therefore, by modifying or propagating a
432
+ covered work, you indicate your acceptance of this License to do so.
433
+
434
+ 10. Automatic Licensing of Downstream Recipients.
435
+
436
+ Each time you convey a covered work, the recipient automatically
437
+ receives a license from the original licensors, to run, modify and
438
+ propagate that work, subject to this License. You are not responsible
439
+ for enforcing compliance by third parties with this License.
440
+
441
+ An "entity transaction" is a transaction transferring control of an
442
+ organization, or substantially all assets of one, or subdividing an
443
+ organization, or merging organizations. If propagation of a covered
444
+ work results from an entity transaction, each party to that
445
+ transaction who receives a copy of the work also receives whatever
446
+ licenses to the work the party's predecessor in interest had or could
447
+ give under the previous paragraph, plus a right to possession of the
448
+ Corresponding Source of the work from the predecessor in interest, if
449
+ the predecessor has it or can get it with reasonable efforts.
450
+
451
+ You may not impose any further restrictions on the exercise of the
452
+ rights granted or affirmed under this License. For example, you may
453
+ not impose a license fee, royalty, or other charge for exercise of
454
+ rights granted under this License, and you may not initiate litigation
455
+ (including a cross-claim or counterclaim in a lawsuit) alleging that
456
+ any patent claim is infringed by making, using, selling, offering for
457
+ sale, or importing the Program or any portion of it.
458
+
459
+ 11. Patents.
460
+
461
+ A "contributor" is a copyright holder who authorizes use under this
462
+ License of the Program or a work on which the Program is based. The
463
+ work thus licensed is called the contributor's "contributor version".
464
+
465
+ A contributor's "essential patent claims" are all patent claims
466
+ owned or controlled by the contributor, whether already acquired or
467
+ hereafter acquired, that would be infringed by some manner, permitted
468
+ by this License, of making, using, or selling its contributor version,
469
+ but do not include claims that would be infringed only as a
470
+ consequence of further modification of the contributor version. For
471
+ purposes of this definition, "control" includes the right to grant
472
+ patent sublicenses in a manner consistent with the requirements of
473
+ this License.
474
+
475
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
476
+ patent license under the contributor's essential patent claims, to
477
+ make, use, sell, offer for sale, import and otherwise run, modify and
478
+ propagate the contents of its contributor version.
479
+
480
+ In the following three paragraphs, a "patent license" is any express
481
+ agreement or commitment, however denominated, not to enforce a patent
482
+ (such as an express permission to practice a patent or covenant not to
483
+ sue for patent infringement). To "grant" such a patent license to a
484
+ party means to make such an agreement or commitment not to enforce a
485
+ patent against the party.
486
+
487
+ If you convey a covered work, knowingly relying on a patent license,
488
+ and the Corresponding Source of the work is not available for anyone
489
+ to copy, free of charge and under the terms of this License, through a
490
+ publicly available network server or other readily accessible means,
491
+ then you must either (1) cause the Corresponding Source to be so
492
+ available, or (2) arrange to deprive yourself of the benefit of the
493
+ patent license for this particular work, or (3) arrange, in a manner
494
+ consistent with the requirements of this License, to extend the patent
495
+ license to downstream recipients. "Knowingly relying" means you have
496
+ actual knowledge that, but for the patent license, your conveying the
497
+ covered work in a country, or your recipient's use of the covered work
498
+ in a country, would infringe one or more identifiable patents in that
499
+ country that you have reason to believe are valid.
500
+
501
+ If, pursuant to or in connection with a single transaction or
502
+ arrangement, you convey, or propagate by procuring conveyance of, a
503
+ covered work, and grant a patent license to some of the parties
504
+ receiving the covered work authorizing them to use, propagate, modify
505
+ or convey a specific copy of the covered work, then the patent license
506
+ you grant is automatically extended to all recipients of the covered
507
+ work and works based on it.
508
+
509
+ A patent license is "discriminatory" if it does not include within
510
+ the scope of its coverage, prohibits the exercise of, or is
511
+ conditioned on the non-exercise of one or more of the rights that are
512
+ specifically granted under this License. You may not convey a covered
513
+ work if you are a party to an arrangement with a third party that is
514
+ in the business of distributing software, under which you make payment
515
+ to the third party based on the extent of your activity of conveying
516
+ the work, and under which the third party grants, to any of the
517
+ parties who would receive the covered work from you, a discriminatory
518
+ patent license (a) in connection with copies of the covered work
519
+ conveyed by you (or copies made from those copies), or (b) primarily
520
+ for and in connection with specific products or compilations that
521
+ contain the covered work, unless you entered into that arrangement,
522
+ or that patent license was granted, prior to 28 March 2007.
523
+
524
+ Nothing in this License shall be construed as excluding or limiting
525
+ any implied license or other defenses to infringement that may
526
+ otherwise be available to you under applicable patent law.
527
+
528
+ 12. No Surrender of Others' Freedom.
529
+
530
+ If conditions are imposed on you (whether by court order, agreement or
531
+ otherwise) that contradict the conditions of this License, they do not
532
+ excuse you from the conditions of this License. If you cannot convey a
533
+ covered work so as to satisfy simultaneously your obligations under this
534
+ License and any other pertinent obligations, then as a consequence you may
535
+ not convey it at all. For example, if you agree to terms that obligate you
536
+ to collect a royalty for further conveying from those to whom you convey
537
+ the Program, the only way you could satisfy both those terms and this
538
+ License would be to refrain entirely from conveying the Program.
539
+
540
+ 13. Remote Network Interaction; Use with the GNU General Public License.
541
+
542
+ Notwithstanding any other provision of this License, if you modify the
543
+ Program, your modified version must prominently offer all users
544
+ interacting with it remotely through a computer network (if your version
545
+ supports such interaction) an opportunity to receive the Corresponding
546
+ Source of your version by providing access to the Corresponding Source
547
+ from a network server at no charge, through some standard or customary
548
+ means of facilitating copying of software. This Corresponding Source
549
+ shall include the Corresponding Source for any work covered by version 3
550
+ of the GNU General Public License that is incorporated pursuant to the
551
+ following paragraph.
552
+
553
+ Notwithstanding any other provision of this License, you have
554
+ permission to link or combine any covered work with a work licensed
555
+ under version 3 of the GNU General Public License into a single
556
+ combined work, and to convey the resulting work. The terms of this
557
+ License will continue to apply to the part which is the covered work,
558
+ but the work with which it is combined will remain governed by version
559
+ 3 of the GNU General Public License.
560
+
561
+ 14. Revised Versions of this License.
562
+
563
+ The Free Software Foundation may publish revised and/or new versions of
564
+ the GNU Affero General Public License from time to time. Such new versions
565
+ will be similar in spirit to the present version, but may differ in detail to
566
+ address new problems or concerns.
567
+
568
+ Each version is given a distinguishing version number. If the
569
+ Program specifies that a certain numbered version of the GNU Affero General
570
+ Public License "or any later version" applies to it, you have the
571
+ option of following the terms and conditions either of that numbered
572
+ version or of any later version published by the Free Software
573
+ Foundation. If the Program does not specify a version number of the
574
+ GNU Affero General Public License, you may choose any version ever published
575
+ by the Free Software Foundation.
576
+
577
+ If the Program specifies that a proxy can decide which future
578
+ versions of the GNU Affero General Public License can be used, that proxy's
579
+ public statement of acceptance of a version permanently authorizes you
580
+ to choose that version for the Program.
581
+
582
+ Later license versions may give you additional or different
583
+ permissions. However, no additional obligations are imposed on any
584
+ author or copyright holder as a result of your choosing to follow a
585
+ later version.
586
+
587
+ 15. Disclaimer of Warranty.
588
+
589
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
590
+ APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
591
+ HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
592
+ OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
593
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
594
+ PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
595
+ IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
596
+ ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
597
+
598
+ 16. Limitation of Liability.
599
+
600
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
601
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
602
+ THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
603
+ GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
604
+ USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
605
+ DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
606
+ PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
607
+ EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
608
+ SUCH DAMAGES.
609
+
610
+ 17. Interpretation of Sections 15 and 16.
611
+
612
+ If the disclaimer of warranty and limitation of liability provided
613
+ above cannot be given local legal effect according to their terms,
614
+ reviewing courts shall apply local law that most closely approximates
615
+ an absolute waiver of all civil liability in connection with the
616
+ Program, unless a warranty or assumption of liability accompanies a
617
+ copy of the Program in return for a fee.
618
+
619
+ END OF TERMS AND CONDITIONS
620
+
621
+ How to Apply These Terms to Your New Programs
622
+
623
+ If you develop a new program, and you want it to be of the greatest
624
+ possible use to the public, the best way to achieve this is to make it
625
+ free software which everyone can redistribute and change under these terms.
626
+
627
+ To do so, attach the following notices to the program. It is safest
628
+ to attach them to the start of each source file to most effectively
629
+ state the exclusion of warranty; and each file should have at least
630
+ the "copyright" line and a pointer to where the full notice is found.
631
+
632
+ <one line to give the program's name and a brief idea of what it does.>
633
+ Copyright (C) <year> <name of author>
634
+
635
+ This program is free software: you can redistribute it and/or modify
636
+ it under the terms of the GNU Affero General Public License as published
637
+ by the Free Software Foundation, either version 3 of the License, or
638
+ (at your option) any later version.
639
+
640
+ This program is distributed in the hope that it will be useful,
641
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
642
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
643
+ GNU Affero General Public License for more details.
644
+
645
+ You should have received a copy of the GNU Affero General Public License
646
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
647
+
648
+ Also add information on how to contact you by electronic and paper mail.
649
+
650
+ If your software can interact with users remotely through a computer
651
+ network, you should also make sure that it provides a way for users to
652
+ get its source. For example, if your program is a web application, its
653
+ interface could display a "Source" link that leads users to an archive
654
+ of the code. There are many ways you could offer source, and different
655
+ solutions will be better for different programs; see section 13 for the
656
+ specific requirements.
657
+
658
+ You should also get your employer (if you work as a programmer) or school,
659
+ if any, to sign a "copyright disclaimer" for the program, if necessary.
660
+ For more information on this, and how to apply and follow the GNU AGPL, see
661
+ <https://www.gnu.org/licenses/>.
README.md CHANGED
@@ -1,12 +1,199 @@
1
- ---
2
- title: Rvc Ui
3
- emoji: ๐Ÿ“Š
4
- colorFrom: pink
5
- colorTo: blue
6
- sdk: gradio
7
- sdk_version: 4.41.0
8
- app_file: app.py
9
- pinned: false
10
- ---
11
-
12
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div align="center">
2
+
3
+ # Retrieval-based-Voice-Conversion-WebUI
4
+ An easy-to-use voice conversion framework based on VITS.
5
+
6
+
7
+
8
+ [![madewithlove](https://img.shields.io/badge/made_with-%E2%9D%A4-red?style=for-the-badge&labelColor=orange
9
+ )](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI)
10
+
11
+ ![moe](https://counter.seku.su/cmoe?name=rvc&theme=r34)
12
+
13
+ [![Licence](https://img.shields.io/github/license/fumiama/Retrieval-based-Voice-Conversion-WebUI?style=for-the-badge)](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/blob/main/LICENSE)
14
+ [![Huggingface](https://img.shields.io/badge/๐Ÿค—%20-Spaces-yellow.svg?style=for-the-badge)](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/)
15
+
16
+ [![Discord](https://img.shields.io/badge/RVC%20Developers-Discord-7289DA?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/HcsmBBGyVk)
17
+
18
+ [**FAQ (Frequently Asked Questions)**](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/wiki/FAQ-(Frequently-Asked-Questions))
19
+
20
+ [**English**](./README.md) | [**ไธญๆ–‡็ฎ€ไฝ“**](./docs/cn/README.cn.md) | [**ๆ—ฅๆœฌ่ชž**](./docs/jp/README.ja.md) | [**ํ•œ๊ตญ์–ด**](./docs/kr/README.ko.md) ([**้Ÿ“ๅœ‹่ชž**](./docs/kr/README.ko.han.md)) | [**Franรงais**](./docs/fr/README.fr.md) | [**Tรผrkรงe**](./docs/tr/README.tr.md) | [**Portuguรชs**](./docs/pt/README.pt.md)
21
+
22
+ </div>
23
+
24
+ > The base model is trained using nearly 50 hours of high-quality open-source VCTK training set. Therefore, there are no copyright concerns, please feel free to use.
25
+
26
+ > Please look forward to the base model of RVCv3 with larger parameters, larger dataset, better effects, basically flat inference speed, and less training data required.
27
+
28
+ > There's a [one-click downloader](https://github.com/fumiama/RVC-Models-Downloader) for models/integration packages/tools. Welcome to try.
29
+
30
+ | Training and inference Webui |
31
+ | :--------: |
32
+ | ![web](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/assets/41315874/17e48404-2627-4fad-a0ec-65f9065aeade) |
33
+
34
+ | Real-time voice changing GUI |
35
+ | :---------: |
36
+ | ![realtime-gui](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/assets/41315874/95b36866-b92d-40c7-b5db-6a35ca5caeac) |
37
+
38
+ ## Features:
39
+ + Reduce tone leakage by replacing the source feature to training-set feature using top1 retrieval;
40
+ + Easy + fast training, even on poor graphics cards;
41
+ + Training with a small amounts of data (>=10min low noise speech recommended);
42
+ + Model fusion to change timbres (using ckpt processing tab->ckpt merge);
43
+ + Easy-to-use WebUI;
44
+ + UVR5 model to quickly separate vocals and instruments;
45
+ + High-pitch Voice Extraction Algorithm [InterSpeech2023-RMVPE](#Credits) to prevent a muted sound problem. Provides the best results (significantly) and is faster with lower resource consumption than Crepe_full;
46
+ + AMD/Intel graphics cards acceleration supported;
47
+ + Intel ARC graphics cards acceleration with IPEX supported.
48
+
49
+ Check out our [Demo Video](https://www.bilibili.com/video/BV1pm4y1z7Gm/) here!
50
+
51
+ ## Environment Configuration
52
+ ### Python Version Limitation
53
+ > It is recommended to use conda to manage the Python environment.
54
+
55
+ > For the reason of the version limitation, please refer to this [bug](https://github.com/facebookresearch/fairseq/issues/5012).
56
+
57
+ ```bash
58
+ python --version # 3.8 <= Python < 3.11
59
+ ```
60
+
61
+ ### Linux/MacOS One-click Dependency Installation & Startup Script
62
+ By executing `run.sh` in the project root directory, you can configure the `venv` virtual environment, automatically install the required dependencies, and start the main program with one click.
63
+ ```bash
64
+ sh ./run.sh
65
+ ```
66
+
67
+ ### Manual Installation of Dependencies
68
+ 1. Install `pytorch` and its core dependencies, skip if already installed. Refer to: https://pytorch.org/get-started/locally/
69
+ ```bash
70
+ pip install torch torchvision torchaudio
71
+ ```
72
+ 2. If you are using Nvidia Ampere architecture (RTX30xx) in Windows, according to the experience of #21, you need to specify the cuda version corresponding to pytorch.
73
+ ```bash
74
+ pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117
75
+ ```
76
+ 3. Install the corresponding dependencies according to your own graphics card.
77
+ - Nvidia GPU
78
+ ```bash
79
+ pip install -r requirements/main.txt
80
+ ```
81
+ - AMD/Intel GPU
82
+ ```bash
83
+ pip install -r requirements/dml.txt
84
+ ```
85
+ - AMD ROCM (Linux)
86
+ ```bash
87
+ pip install -r requirements/amd.txt
88
+ ```
89
+ - Intel IPEX (Linux)
90
+ ```bash
91
+ pip install -r requirements/ipex.txt
92
+ ```
93
+
94
+ ## Preparation of Other Files
95
+ ### 1. Assets
96
+ > RVC requires some models located in the `assets` folder for inference and training.
97
+ #### Check/Download Automatically (Default)
98
+ > By default, RVC can automatically check the integrity of the required resources when the main program starts.
99
+
100
+ > Even if the resources are not complete, the program will continue to start.
101
+
102
+ - If you want to download all resources, please add the `--update` parameter.
103
+ - If you want to skip the resource integrity check at startup, please add the `--nocheck` parameter.
104
+
105
+ #### Download Manually
106
+ > All resource files are located in [Hugging Face space](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/)
107
+
108
+ > You can find some scripts to download them in the `tools` folder
109
+
110
+ > You can also use the [one-click downloader](https://github.com/fumiama/RVC-Models-Downloader) for models/integration packages/tools
111
+
112
+ Below is a list that includes the names of all pre-models and other files required by RVC.
113
+
114
+ - ./assets/hubert/hubert_base.pt
115
+ ```bash
116
+ rvcmd assets/hubert # RVC-Models-Downloader command
117
+ ```
118
+ - ./assets/pretrained
119
+ ```bash
120
+ rvcmd assets/v1 # RVC-Models-Downloader command
121
+ ```
122
+ - ./assets/uvr5_weights
123
+ ```bash
124
+ rvcmd assets/uvr5 # RVC-Models-Downloader command
125
+ ```
126
+ If you want to use the v2 version of the model, you need to download additional resources in
127
+
128
+ - ./assets/pretrained_v2
129
+ ```bash
130
+ rvcmd assets/v2 # RVC-Models-Downloader command
131
+ ```
132
+
133
+ ### 2. Download the required files for the rmvpe vocal pitch extraction algorithm
134
+
135
+ If you want to use the latest RMVPE vocal pitch extraction algorithm, you need to download the pitch extraction model parameters and place them in `assets/rmvpe`.
136
+
137
+ - [rmvpe.pt](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.pt)
138
+ ```bash
139
+ rvcmd assets/rmvpe # RVC-Models-Downloader command
140
+ ```
141
+
142
+ #### Download DML environment of RMVPE (optional, for AMD/Intel GPU)
143
+
144
+ - [rmvpe.onnx](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.onnx)
145
+ ```bash
146
+ rvcmd assets/rmvpe # RVC-Models-Downloader command
147
+ ```
148
+
149
+ ### 3. AMD ROCM (optional, Linux only)
150
+
151
+ If you want to run RVC on a Linux system based on AMD's ROCM technology, please first install the required drivers [here](https://rocm.docs.amd.com/en/latest/deploy/linux/os-native/install.html).
152
+
153
+ If you are using Arch Linux, you can use pacman to install the required drivers.
154
+ ````
155
+ pacman -S rocm-hip-sdk rocm-opencl-sdk
156
+ ````
157
+ For some models of graphics cards, you may need to configure the following environment variables (such as: RX6700XT).
158
+ ````
159
+ export ROCM_PATH=/opt/rocm
160
+ export HSA_OVERRIDE_GFX_VERSION=10.3.0
161
+ ````
162
+ Also, make sure your current user is in the `render` and `video` user groups.
163
+ ````
164
+ sudo usermod -aG render $USERNAME
165
+ sudo usermod -aG video $USERNAME
166
+ ````
167
+ ## Getting Started
168
+ ### Direct Launch
169
+ Use the following command to start the WebUI.
170
+ ```bash
171
+ python web.py
172
+ ```
173
+ ### Linux/MacOS
174
+ ```bash
175
+ ./run.sh
176
+ ```
177
+ ### For I-card users who need to use IPEX technology (Linux only)
178
+ ```bash
179
+ source /opt/intel/oneapi/setvars.sh
180
+ ./run.sh
181
+ ```
182
+ ### Using the Integration Package (Windows Users)
183
+ Download and unzip `RVC-beta.7z`. After unzipping, double-click `go-web.bat` to start the program with one click.
184
+ ```bash
185
+ rvcmd packs/general/latest # RVC-Models-Downloader command
186
+ ```
187
+
188
+ ## Credits
189
+ + [ContentVec](https://github.com/auspicious3000/contentvec/)
190
+ + [VITS](https://github.com/jaywalnut310/vits)
191
+ + [HIFIGAN](https://github.com/jik876/hifi-gan)
192
+ + [Gradio](https://github.com/gradio-app/gradio)
193
+ + [Ultimate Vocal Remover](https://github.com/Anjok07/ultimatevocalremovergui)
194
+ + [audio-slicer](https://github.com/openvpi/audio-slicer)
195
+ + [Vocal pitch extraction:RMVPE](https://github.com/Dream-High/RMVPE)
196
+ + The pretrained model is trained and tested by [yxlllc](https://github.com/yxlllc/RMVPE) and [RVC-Boss](https://github.com/RVC-Boss).
197
+
198
+ ## Thanks to all contributors for their efforts
199
+ [![contributors](https://contrib.rocks/image?repo=fumiama/Retrieval-based-Voice-Conversion-WebUI)](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/graphs/contributors)
app.py ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from web import *
2
+ import gradio as gr
3
+ import os
4
+
5
+ with gr.Blocks(title="RVC UI") as app:
6
+ gr.Markdown("<center><h1> **RVC UI**")
7
+ gr.Markdown("<h1>this ui not done yet!")
8
+ with gr.TabItem("inference"):
9
+ with gr.Tabs():
10
+ models = gr.Dropdown(label="voice model", choices=sorted(names))
11
+ with gr.Row():
12
+ clean_button = gr.Button("Refresh model", variant="primary")
13
+ with gr.Row():
14
+ with gr.Row():
15
+ pith_voice = gr.Number(label="Transpose 12 for femal, -12 fo male)", value=0)
16
+ spk_item = gr.Slider(minimum=0, maximum=2333, step=1, label="Select Speaker/Singer ID", value=0, visible=False, interactive=False)
17
+ clean_button.click(fn=clean, inputs=[], outputs=[models], api_name="infer_clean")
18
+ modelinfo = gr.Textbox(label="Model info", max_lines=8, visible=False)
19
+
20
+ input_audio0 = gr.Audio(label="The audio file to be processed", type="filepath")
21
+ file_index1 = gr.File(label="Path to the feature index file. Leave blank to use the selected result from the dropdown")
22
+ with gr.Column():
23
+ f0method0 = gr.Radio(label="Select the pitch extraction algorithm ('pm': faster extraction but lower-quality speech; 'harvest': better bass but extremely slow; 'crepe': better quality but GPU intensive), 'rmvpe': best quality, and little GPU requirement", choices=["pm", "dio", "harvest", "crepe", "rmvpe", "fcpe"], value="rmvpe", interactive=True)
24
+ resample_sr0 = gr.Slider(minimum=0, maximum=48000, label="Resample the output audio in post-processing to the final sample rate. Set to 0 for no resampling", value=0, step=1, interactive=True)
25
+ rms_mix_rate0 = gr.Slider(minimum=0, maximum=1, label="Adjust the volume envelope scaling. Closer to 0, the more it mimicks the volume of the original vocals. Can help mask noise and make volume sound more natural when set relatively low. Closer to 1 will be more of a consistently loud volume", value=0.25, interactive=True)
26
+ protect0 = gr.Slider(minimum=0, maximum=0.5, label="Protect voiceless consonants and breath sounds to prevent artifacts such as tearing in electronic music. Set to 0.5 to disable. Decrease the value to increase protection, but it may reduce indexing accuracy", value=0.33, step=0.01, interactive=True)
27
+ filter_radius0 = gr.Slider(minimum=0, maximum=7, label="If >=3: apply median filtering to the harvested pitch results. The value represents the filter radius and can reduce breathiness.", value=3, step=1, interactive=True)
28
+ f0_file = gr.File(label="F0 curve file (optional). One pitch per line. Replaces the default F0 and pitch modulation", visible=False)
29
+ but0 = gr.Button("Convert", variant="primary")
30
+ vc_output1 = gr.Textbox(label="Output information", interactive=False)
31
+ vc_output2 = gr.Audio(label="Export audio (click on the three dots in the lower right corner to download)", type="filepath", interactive=False)
32
+ #refresh_button.click(fn=change_choices, inputs=[], outputs=[models, file_index2], api_name="infer_refresh")
33
+ with gr.Accordion("Batch inference"):
34
+ gr.Markdown("<center>Batch conversion\n. Enter the folder containing the audio files to be converted or upload multiple audio files. The converted audio will be output in the specified folder (default: 'opt').")
35
+ vc_transform1 = gr.Number(label="Transpose (integer, number of semitones, raise by an octave: 12, lower by an octave: -12)", value=0)
36
+ dir_input = gr.Textbox(label="Enter the path of the audio folder to be processed (copy it from the address bar of the file manager)", placeholder="C:\\Users\\Desktop\\input_vocal_dir")
37
+ inputs = gr.File(file_count="multiple", label="Multiple audio files can also be imported. If a folder path exists, this input is ignored.")
38
+ opt_input = gr.Textbox(label="Specify output folder", value="opt")
39
+ file_index4 = gr.Dropdown(label="Auto-detect index path and select from the dropdown", choices=sorted(index_paths), interactive=True)
40
+ file_index3 = gr.File(label="Path to the feature index file. Leave blank to use the selected result from the dropdown")
41
+ #refresh_button.click(fn=lambda: change_choices()[1], inputs=[], outputs=file_index4, api_name="infer_refresh_batch")
42
+ f0method1 = gr.Radio(label="Select the pitch extraction algorithm ('pm': faster extraction but lower-quality speech; 'harvest': better bass but extremely slow; 'crepe': better quality but GPU intensive), 'rmvpe': best quality, and little GPU requirement", choices=["pm", "harvest", "crepe", "rmvpe", "fcpe"], value="rmvpe", interactive=True)
43
+ resample_sr1 = gr.Slider(minimum=0, maximum=48000, label="Resample the output audio in post-processing to the final sample rate. Set to 0 for no resampling", value=0, step=1, interactive=True)
44
+ rms_mix_rate1 = gr.Slider(minimum=0, maximum=1, label="Adjust the volume envelope scaling. Closer to 0, the more it mimicks the volume of the original vocals. Can help mask noise and make volume sound more natural when set relatively low. Closer to 1 will be more of a consistently loud volume", value=1, interactive=True)
45
+ protect1 = gr.Slider(minimum=0, maximum=0.5, label="Protect voiceless consonants and breath sounds to prevent artifacts such as tearing in electronic music. Set to 0.5 to disable. Decrease the value to increase protection, but it may reduce indexing accuracy", value=0.33, step=0.01, interactive=True)
46
+ filter_radius1 = gr.Slider(minimum=0, maximum=7, label="If >=3: apply median filtering to the harvested pitch results. The value represents the filter radius and can reduce breathiness.", value=3, step=1, interactive=True)
47
+ index_rate2 = gr.Slider(minimum=0, maximum=1, label="Feature searching ratio", value=1, interactive=True)
48
+ format1 = gr.Radio(label="Export file format", choices=["wav", "flac", "mp3", "m4a"], value="wav", interactive=True)
49
+ but1 = gr.Button("Convert", variant="primary")
50
+ vc_output3 = gr.Textbox(
51
+ label="Output information",
52
+ interactive=False
53
+ )
54
+
55
+ with gr.TabItem("Train"):
56
+ gr.Markdown("### Step 1. Fill in the experimental configuration.\nExperimental data is stored in the 'logs' folder, with each experiment having a separate folder. Manually enter the experiment name path, which contains the experimental configuration, logs, and trained model files.")
57
+ exp_dir1 = gr.Textbox(label="Enter the experiment name", value="my voice")
58
+ author = gr.Textbox(label="Model Author (Nullable)")
59
+ np7 = gr.Slider(minimum=0, maximum=config.n_cpu, step=1, label="Number of CPU processes used for pitch extraction and data processing", value=int(np.ceil(config.n_cpu / 1.5)), interactive=True)
60
+ sr2 = gr.Radio(label="Target sample rate", choices=["40k", "48k"], value="40k", interactive=True)
61
+ if_f0_3 = gr.Radio(label="Whether the model has pitch guidance (required for singing, optional for speech)", choices=["Yes", "No"], value="Yes", interactive=True)
62
+ version19 = gr.Radio(label="Version", choices=["v1", "v2"], value="v2", interactive=True, visible=True)
63
+ gr.Markdown("### Step 2. Audio processing. \n#### 1. Slicing.\nAutomatically traverse all files in the training folder that can be decoded into audio and perform slice normalization. Generates 2 wav folders in the experiment directory. Currently, only single-singer/speaker training is supported.")
64
+ trainset_dir4 = gr.Textbox(label="Enter the path of the training folder")
65
+ spk_id5 = gr.Slider(minimum=0, maximum=4, step=1, label="Please specify the speaker/singer ID", value=0, interactive=True)
66
+ gr.Markdown("#### 2. Feature extraction.\nUse CPU to extract pitch (if the model has pitch), use GPU to extract features (select GPU index).")
67
+ gpu_info9 = gr.Textbox(label="GPU Information",value=gpu_info,visible=F0GPUVisible)
68
+ gpus6 = gr.Textbox(label="Enter the GPU index(es) separated by '-', e.g., 0-1-2 to use GPU 0, 1, and 2",value=gpus,interactive=True,visible=F0GPUVisible)
69
+ gpus_rmvpe = gr.Textbox(label="Enter the GPU index(es) separated by '-', e.g., 0-0-1 to use 2 processes in GPU0 and 1 process in GPU1",value="%s-%s" % (gpus, gpus),interactive=True,visible=F0GPUVisible)
70
+ f0method8 = gr.Radio(label="Select the pitch extraction algorithm: when extracting singing, you can use 'pm' to speed up. For high-quality speech with fast performance, but worse CPU usage, you can use 'dio'. 'harvest' results in better quality but is slower. 'rmvpe' has the best results and consumes less CPU/GPU", choices=["pm", "harvest", "dio", "rmvpe", "rmvpe_gpu"], value="rmvpe_gpu", interactive=True)
71
+ f0method8.change(fn=change_f0_method,inputs=[f0method8],outputs=[gpus_rmvpe])
72
+ gr.Markdown("### Step 3. Start training.\nFill in the training settings and start training the model and index.")
73
+ save_epoch10 = gr.Slider(minimum=1, maximum=50, step=1, label="Save frequency (save_every_epoch)", value=5, interactive=True)
74
+ total_epoch11 = gr.Slider(minimum=2, maximum=1000, step=1, label="Total training epochs (total_epoch)", value=20, interactive=True)
75
+ batch_size12 = gr.Slider(minimum=1, maximum=40, step=1, label="Batch size per GPU", value=20, interactive=True)
76
+ if_save_latest13 = gr.Radio(label="Save only the latest '.ckpt' file to save disk space", choices=["Yes", "No"], value="No", interactive=True)
77
+ if_cache_gpu17 = gr.Radio(label="Cache all training sets to GPU memory. Caching small datasets (less than 10 minutes) can speed up training, but caching large datasets will consume a lot of GPU memory and may not provide much speed improvement", choices=["Yes", "No"], value="No", interactive=True)
78
+ if_save_every_weights18 = gr.Radio(label="Save a small final model to the 'weights' folder at each save point", choices=["Yes","No"], value="No", interactive=True)
79
+ pretrained_G14 = gr.Textbox(label="Load pre-trained base model G path", value="assets/pretrained_v2/f0G40k.pth", interactive=True)
80
+ pretrained_D15 = gr.Textbox(label="Load pre-trained base model D path", value="assets/pretrained_v2/f0D40k.pth", interactive=True)
81
+ gpus16 = gr.Textbox(label="Enter the GPU index(es) separated by '-', e.g., 0-1-2 to use GPU 0, 1, and 2", value="0", interactive=True)
82
+ sr2.change(change_sr2,[sr2, if_f0_3, version19],[pretrained_G14, pretrained_D15])
83
+ version19.change(change_version19,[sr2, if_f0_3, version19],[pretrained_G14, pretrained_D15, sr2])
84
+ if_f0_3.change(fn=lambda: None, inputs=[if_f0_3, sr2, version19], outputs=[f0method8, gpus_rmvpe, pretrained_G14, pretrained_D15])
85
+ but1 = gr.Button("Process data", variant="primary")
86
+ but2 = gr.Button("Feature extraction", variant="primary")
87
+ but3 = gr.Button("Train model", variant="primary")
88
+ but4 = gr.Button("Train feature index", variant="primary")
89
+ but5 = gr.Button("One-click training", variant="primary")
90
+ info1 = gr.Textbox(label="Output information", value="")
91
+
92
+ but2.click(extract_f0_feature,[gpus6,np7,f0method8,if_f0_3,exp_dir1,version19,gpus_rmvpe,],[info1],api_name="train_extract_f0_feature")
93
+ but1.click(preprocess_dataset,[trainset_dir4, exp_dir1, sr2, np7],[info1],api_name="train_preprocess")
94
+ but3.click(click_train,[exp_dir1,sr2,if_f0_3,spk_id5,save_epoch10,total_epoch11,batch_size12,if_save_latest13,pretrained_G14,pretrained_D15,gpus16,if_cache_gpu17,if_save_every_weights18,version19,author,],info1,api_name="train_start")
95
+ but4.click(train_index, [exp_dir1, version19], info3)
96
+ but5.click(train1key,[exp_dir1,sr2,if_f0_3,trainset_dir4,spk_id5,np7,f0method8,save_epoch10,total_epoch11,batch_size12,if_save_latest13,pretrained_G14,pretrained_D15,gpus16,if_cache_gpu17,if_save_every_weights18,version19,gpus_rmvpe,author],info1,api_name="train_start_all")
97
+
98
+ with gr.TabItem('Credits'):
99
+ gr.Markdown(
100
+ f"""
101
+ This UI's Made by Blane187
102
+ """
103
+ )
104
+ app.launch()
105
+
assets/hubert/.gitignore ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ *
2
+ !.gitignore
assets/indices/.gitignore ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ *
2
+ !.gitignore
assets/pretrained/.gitignore ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ *
2
+ !.gitignore
assets/pretrained_v2/.gitignore ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ *
2
+ !.gitignore
assets/rmvpe/.gitignore ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ *
2
+ !.gitignore
assets/uvr5_weights/.gitignore ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ *
2
+ !.gitignore
configs/__init__.py ADDED
@@ -0,0 +1 @@
 
 
1
+ from .config import singleton_variable, Config, CPUConfig
configs/config.json ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "pth_path": "",
3
+ "index_path": "",
4
+ "sg_hostapi": "MME",
5
+ "sg_wasapi_exclusive": false,
6
+ "sg_input_device": "",
7
+ "sg_output_device": "",
8
+ "sr_type": "sr_device",
9
+ "threhold": -60.0,
10
+ "pitch": 12.0,
11
+ "formant": 0.0,
12
+ "rms_mix_rate": 0.5,
13
+ "index_rate": 0.0,
14
+ "block_time": 0.15,
15
+ "crossfade_length": 0.08,
16
+ "extra_time": 2.0,
17
+ "n_cpu": 4.0,
18
+ "use_jit": false,
19
+ "use_pv": false,
20
+ "f0method": "fcpe"
21
+ }
configs/config.py ADDED
@@ -0,0 +1,259 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import argparse
2
+ import os
3
+ import sys
4
+ import json
5
+ import shutil
6
+ from multiprocessing import cpu_count
7
+
8
+ import torch
9
+
10
+ # TODO: move device selection into rvc
11
+ import logging
12
+
13
+ logger = logging.getLogger(__name__)
14
+
15
+
16
+ version_config_list = [
17
+ "v1/32k.json",
18
+ "v1/40k.json",
19
+ "v1/48k.json",
20
+ "v2/48k.json",
21
+ "v2/32k.json",
22
+ ]
23
+
24
+
25
+ def singleton_variable(func):
26
+ def wrapper(*args, **kwargs):
27
+ if wrapper.instance is None:
28
+ wrapper.instance = func(*args, **kwargs)
29
+ return wrapper.instance
30
+
31
+ wrapper.instance = None
32
+ return wrapper
33
+
34
+
35
+ @singleton_variable
36
+ class Config:
37
+ def __init__(self):
38
+ self.device = "cuda:0"
39
+ self.is_half = True
40
+ self.use_jit = False
41
+ self.n_cpu = 0
42
+ self.gpu_name = None
43
+ self.json_config = self.load_config_json()
44
+ self.gpu_mem = None
45
+ (
46
+ self.python_cmd,
47
+ self.listen_port,
48
+ self.global_link,
49
+ self.noparallel,
50
+ self.noautoopen,
51
+ self.dml,
52
+ self.nocheck,
53
+ self.update,
54
+ ) = self.arg_parse()
55
+ self.instead = ""
56
+ self.preprocess_per = 3.7
57
+ self.x_pad, self.x_query, self.x_center, self.x_max = self.device_config()
58
+
59
+ @staticmethod
60
+ def load_config_json() -> dict:
61
+ d = {}
62
+ for config_file in version_config_list:
63
+ p = f"configs/inuse/{config_file}"
64
+ if not os.path.exists(p):
65
+ shutil.copy(f"configs/{config_file}", p)
66
+ with open(f"configs/inuse/{config_file}", "r") as f:
67
+ d[config_file] = json.load(f)
68
+ return d
69
+
70
+ @staticmethod
71
+ def arg_parse() -> tuple:
72
+ exe = sys.executable or "python"
73
+ parser = argparse.ArgumentParser()
74
+ parser.add_argument("--port", type=int, default=7865, help="Listen port")
75
+ parser.add_argument("--pycmd", type=str, default=exe, help="Python command")
76
+ parser.add_argument(
77
+ "--global_link", action="store_true", help="Generate a global proxy link"
78
+ )
79
+ parser.add_argument(
80
+ "--noparallel", action="store_true", help="Disable parallel processing"
81
+ )
82
+ parser.add_argument(
83
+ "--noautoopen",
84
+ action="store_true",
85
+ help="Do not open in browser automatically",
86
+ )
87
+ parser.add_argument(
88
+ "--dml",
89
+ action="store_true",
90
+ help="torch_dml",
91
+ )
92
+ parser.add_argument(
93
+ "--nocheck", action="store_true", help="Run without checking assets"
94
+ )
95
+ parser.add_argument(
96
+ "--update", action="store_true", help="Update to latest assets"
97
+ )
98
+ cmd_opts = parser.parse_args()
99
+
100
+ cmd_opts.port = cmd_opts.port if 0 <= cmd_opts.port <= 65535 else 7865
101
+
102
+ return (
103
+ cmd_opts.pycmd,
104
+ cmd_opts.port,
105
+ cmd_opts.global_link,
106
+ cmd_opts.noparallel,
107
+ cmd_opts.noautoopen,
108
+ cmd_opts.dml,
109
+ cmd_opts.nocheck,
110
+ cmd_opts.update,
111
+ )
112
+
113
+ # has_mps is only available in nightly pytorch (for now) and MasOS 12.3+.
114
+ # check `getattr` and try it for compatibility
115
+ @staticmethod
116
+ def has_mps() -> bool:
117
+ if not torch.backends.mps.is_available():
118
+ return False
119
+ try:
120
+ torch.zeros(1).to(torch.device("mps"))
121
+ return True
122
+ except Exception:
123
+ return False
124
+
125
+ @staticmethod
126
+ def has_xpu() -> bool:
127
+ if hasattr(torch, "xpu") and torch.xpu.is_available():
128
+ return True
129
+ else:
130
+ return False
131
+
132
+ def use_fp32_config(self):
133
+ for config_file in version_config_list:
134
+ self.json_config[config_file]["train"]["fp16_run"] = False
135
+ with open(f"configs/inuse/{config_file}", "r") as f:
136
+ strr = f.read().replace("true", "false")
137
+ with open(f"configs/inuse/{config_file}", "w") as f:
138
+ f.write(strr)
139
+ logger.info("overwrite " + config_file)
140
+ self.preprocess_per = 3.0
141
+ logger.info("overwrite preprocess_per to %d" % (self.preprocess_per))
142
+
143
+ def device_config(self):
144
+ if torch.cuda.is_available():
145
+ if self.has_xpu():
146
+ self.device = self.instead = "xpu:0"
147
+ self.is_half = True
148
+ i_device = int(self.device.split(":")[-1])
149
+ self.gpu_name = torch.cuda.get_device_name(i_device)
150
+ if (
151
+ ("16" in self.gpu_name and "V100" not in self.gpu_name.upper())
152
+ or "P40" in self.gpu_name.upper()
153
+ or "P10" in self.gpu_name.upper()
154
+ or "1060" in self.gpu_name
155
+ or "1070" in self.gpu_name
156
+ or "1080" in self.gpu_name
157
+ ):
158
+ logger.info("Found GPU %s, force to fp32", self.gpu_name)
159
+ self.is_half = False
160
+ self.use_fp32_config()
161
+ else:
162
+ logger.info("Found GPU %s", self.gpu_name)
163
+ self.gpu_mem = int(
164
+ torch.cuda.get_device_properties(i_device).total_memory
165
+ / 1024
166
+ / 1024
167
+ / 1024
168
+ + 0.4
169
+ )
170
+ if self.gpu_mem <= 4:
171
+ self.preprocess_per = 3.0
172
+ elif self.has_mps():
173
+ logger.info("No supported Nvidia GPU found")
174
+ self.device = self.instead = "mps"
175
+ self.is_half = False
176
+ self.use_fp32_config()
177
+ else:
178
+ logger.info("No supported Nvidia GPU found")
179
+ self.device = self.instead = "cpu"
180
+ self.is_half = False
181
+ self.use_fp32_config()
182
+
183
+ if self.n_cpu == 0:
184
+ self.n_cpu = cpu_count()
185
+
186
+ if self.is_half:
187
+ # 6Gๆ˜พๅญ˜้…็ฝฎ
188
+ x_pad = 3
189
+ x_query = 10
190
+ x_center = 60
191
+ x_max = 65
192
+ else:
193
+ # 5Gๆ˜พๅญ˜้…็ฝฎ
194
+ x_pad = 1
195
+ x_query = 6
196
+ x_center = 38
197
+ x_max = 41
198
+
199
+ if self.gpu_mem is not None and self.gpu_mem <= 4:
200
+ x_pad = 1
201
+ x_query = 5
202
+ x_center = 30
203
+ x_max = 32
204
+ if self.dml:
205
+ logger.info("Use DirectML instead")
206
+ import torch_directml
207
+
208
+ self.device = torch_directml.device(torch_directml.default_device())
209
+ self.is_half = False
210
+ else:
211
+ if self.instead:
212
+ logger.info(f"Use {self.instead} instead")
213
+ logger.info(
214
+ "Half-precision floating-point: %s, device: %s"
215
+ % (self.is_half, self.device)
216
+ )
217
+ return x_pad, x_query, x_center, x_max
218
+
219
+
220
+ @singleton_variable
221
+ class CPUConfig:
222
+ def __init__(self):
223
+ self.device = "cpu"
224
+ self.is_half = False
225
+ self.use_jit = False
226
+ self.n_cpu = 1
227
+ self.gpu_name = None
228
+ self.json_config = self.load_config_json()
229
+ self.gpu_mem = None
230
+ self.instead = "cpu"
231
+ self.preprocess_per = 3.7
232
+ self.x_pad, self.x_query, self.x_center, self.x_max = self.device_config()
233
+
234
+ @staticmethod
235
+ def load_config_json() -> dict:
236
+ d = {}
237
+ for config_file in version_config_list:
238
+ with open(f"configs/{config_file}", "r") as f:
239
+ d[config_file] = json.load(f)
240
+ return d
241
+
242
+ def use_fp32_config(self):
243
+ for config_file in version_config_list:
244
+ self.json_config[config_file]["train"]["fp16_run"] = False
245
+ self.preprocess_per = 3.0
246
+
247
+ def device_config(self):
248
+ self.use_fp32_config()
249
+
250
+ if self.n_cpu == 0:
251
+ self.n_cpu = cpu_count()
252
+
253
+ # 5Gๆ˜พๅญ˜้…็ฝฎ
254
+ x_pad = 1
255
+ x_query = 6
256
+ x_center = 38
257
+ x_max = 41
258
+
259
+ return x_pad, x_query, x_center, x_max
configs/inuse/.gitignore ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ *
2
+ !.gitignore
3
+ !v1
4
+ !v2
configs/inuse/v1/.gitignore ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ *
2
+ !.gitignore
configs/inuse/v2/.gitignore ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ *
2
+ !.gitignore
configs/v1/32k.json ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "train": {
3
+ "log_interval": 200,
4
+ "seed": 1234,
5
+ "epochs": 20000,
6
+ "learning_rate": 1e-4,
7
+ "betas": [0.8, 0.99],
8
+ "eps": 1e-9,
9
+ "batch_size": 4,
10
+ "fp16_run": true,
11
+ "lr_decay": 0.999875,
12
+ "segment_size": 12800,
13
+ "init_lr_ratio": 1,
14
+ "warmup_epochs": 0,
15
+ "c_mel": 45,
16
+ "c_kl": 1.0
17
+ },
18
+ "data": {
19
+ "max_wav_value": 32768.0,
20
+ "sampling_rate": 32000,
21
+ "filter_length": 1024,
22
+ "hop_length": 320,
23
+ "win_length": 1024,
24
+ "n_mel_channels": 80,
25
+ "mel_fmin": 0.0,
26
+ "mel_fmax": null
27
+ },
28
+ "model": {
29
+ "inter_channels": 192,
30
+ "hidden_channels": 192,
31
+ "filter_channels": 768,
32
+ "n_heads": 2,
33
+ "n_layers": 6,
34
+ "kernel_size": 3,
35
+ "p_dropout": 0,
36
+ "resblock": "1",
37
+ "resblock_kernel_sizes": [3,7,11],
38
+ "resblock_dilation_sizes": [[1,3,5], [1,3,5], [1,3,5]],
39
+ "upsample_rates": [10,4,2,2,2],
40
+ "upsample_initial_channel": 512,
41
+ "upsample_kernel_sizes": [16,16,4,4,4],
42
+ "use_spectral_norm": false,
43
+ "gin_channels": 256,
44
+ "spk_embed_dim": 109
45
+ }
46
+ }
configs/v1/40k.json ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "train": {
3
+ "log_interval": 200,
4
+ "seed": 1234,
5
+ "epochs": 20000,
6
+ "learning_rate": 1e-4,
7
+ "betas": [0.8, 0.99],
8
+ "eps": 1e-9,
9
+ "batch_size": 4,
10
+ "fp16_run": true,
11
+ "lr_decay": 0.999875,
12
+ "segment_size": 12800,
13
+ "init_lr_ratio": 1,
14
+ "warmup_epochs": 0,
15
+ "c_mel": 45,
16
+ "c_kl": 1.0
17
+ },
18
+ "data": {
19
+ "max_wav_value": 32768.0,
20
+ "sampling_rate": 40000,
21
+ "filter_length": 2048,
22
+ "hop_length": 400,
23
+ "win_length": 2048,
24
+ "n_mel_channels": 125,
25
+ "mel_fmin": 0.0,
26
+ "mel_fmax": null
27
+ },
28
+ "model": {
29
+ "inter_channels": 192,
30
+ "hidden_channels": 192,
31
+ "filter_channels": 768,
32
+ "n_heads": 2,
33
+ "n_layers": 6,
34
+ "kernel_size": 3,
35
+ "p_dropout": 0,
36
+ "resblock": "1",
37
+ "resblock_kernel_sizes": [3,7,11],
38
+ "resblock_dilation_sizes": [[1,3,5], [1,3,5], [1,3,5]],
39
+ "upsample_rates": [10,10,2,2],
40
+ "upsample_initial_channel": 512,
41
+ "upsample_kernel_sizes": [16,16,4,4],
42
+ "use_spectral_norm": false,
43
+ "gin_channels": 256,
44
+ "spk_embed_dim": 109
45
+ }
46
+ }
configs/v1/48k.json ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "train": {
3
+ "log_interval": 200,
4
+ "seed": 1234,
5
+ "epochs": 20000,
6
+ "learning_rate": 1e-4,
7
+ "betas": [0.8, 0.99],
8
+ "eps": 1e-9,
9
+ "batch_size": 4,
10
+ "fp16_run": true,
11
+ "lr_decay": 0.999875,
12
+ "segment_size": 11520,
13
+ "init_lr_ratio": 1,
14
+ "warmup_epochs": 0,
15
+ "c_mel": 45,
16
+ "c_kl": 1.0
17
+ },
18
+ "data": {
19
+ "max_wav_value": 32768.0,
20
+ "sampling_rate": 48000,
21
+ "filter_length": 2048,
22
+ "hop_length": 480,
23
+ "win_length": 2048,
24
+ "n_mel_channels": 128,
25
+ "mel_fmin": 0.0,
26
+ "mel_fmax": null
27
+ },
28
+ "model": {
29
+ "inter_channels": 192,
30
+ "hidden_channels": 192,
31
+ "filter_channels": 768,
32
+ "n_heads": 2,
33
+ "n_layers": 6,
34
+ "kernel_size": 3,
35
+ "p_dropout": 0,
36
+ "resblock": "1",
37
+ "resblock_kernel_sizes": [3,7,11],
38
+ "resblock_dilation_sizes": [[1,3,5], [1,3,5], [1,3,5]],
39
+ "upsample_rates": [10,6,2,2,2],
40
+ "upsample_initial_channel": 512,
41
+ "upsample_kernel_sizes": [16,16,4,4,4],
42
+ "use_spectral_norm": false,
43
+ "gin_channels": 256,
44
+ "spk_embed_dim": 109
45
+ }
46
+ }
configs/v2/32k.json ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "train": {
3
+ "log_interval": 200,
4
+ "seed": 1234,
5
+ "epochs": 20000,
6
+ "learning_rate": 1e-4,
7
+ "betas": [0.8, 0.99],
8
+ "eps": 1e-9,
9
+ "batch_size": 4,
10
+ "fp16_run": true,
11
+ "lr_decay": 0.999875,
12
+ "segment_size": 12800,
13
+ "init_lr_ratio": 1,
14
+ "warmup_epochs": 0,
15
+ "c_mel": 45,
16
+ "c_kl": 1.0
17
+ },
18
+ "data": {
19
+ "max_wav_value": 32768.0,
20
+ "sampling_rate": 32000,
21
+ "filter_length": 1024,
22
+ "hop_length": 320,
23
+ "win_length": 1024,
24
+ "n_mel_channels": 80,
25
+ "mel_fmin": 0.0,
26
+ "mel_fmax": null
27
+ },
28
+ "model": {
29
+ "inter_channels": 192,
30
+ "hidden_channels": 192,
31
+ "filter_channels": 768,
32
+ "n_heads": 2,
33
+ "n_layers": 6,
34
+ "kernel_size": 3,
35
+ "p_dropout": 0,
36
+ "resblock": "1",
37
+ "resblock_kernel_sizes": [3,7,11],
38
+ "resblock_dilation_sizes": [[1,3,5], [1,3,5], [1,3,5]],
39
+ "upsample_rates": [10,8,2,2],
40
+ "upsample_initial_channel": 512,
41
+ "upsample_kernel_sizes": [20,16,4,4],
42
+ "use_spectral_norm": false,
43
+ "gin_channels": 256,
44
+ "spk_embed_dim": 109
45
+ }
46
+ }
configs/v2/48k.json ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "train": {
3
+ "log_interval": 200,
4
+ "seed": 1234,
5
+ "epochs": 20000,
6
+ "learning_rate": 1e-4,
7
+ "betas": [0.8, 0.99],
8
+ "eps": 1e-9,
9
+ "batch_size": 4,
10
+ "fp16_run": true,
11
+ "lr_decay": 0.999875,
12
+ "segment_size": 17280,
13
+ "init_lr_ratio": 1,
14
+ "warmup_epochs": 0,
15
+ "c_mel": 45,
16
+ "c_kl": 1.0
17
+ },
18
+ "data": {
19
+ "max_wav_value": 32768.0,
20
+ "sampling_rate": 48000,
21
+ "filter_length": 2048,
22
+ "hop_length": 480,
23
+ "win_length": 2048,
24
+ "n_mel_channels": 128,
25
+ "mel_fmin": 0.0,
26
+ "mel_fmax": null
27
+ },
28
+ "model": {
29
+ "inter_channels": 192,
30
+ "hidden_channels": 192,
31
+ "filter_channels": 768,
32
+ "n_heads": 2,
33
+ "n_layers": 6,
34
+ "kernel_size": 3,
35
+ "p_dropout": 0,
36
+ "resblock": "1",
37
+ "resblock_kernel_sizes": [3,7,11],
38
+ "resblock_dilation_sizes": [[1,3,5], [1,3,5], [1,3,5]],
39
+ "upsample_rates": [12,10,2,2],
40
+ "upsample_initial_channel": 512,
41
+ "upsample_kernel_sizes": [24,20,4,4],
42
+ "use_spectral_norm": false,
43
+ "gin_channels": 256,
44
+ "spk_embed_dim": 109
45
+ }
46
+ }
docker-compose.yml ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: "3.8"
2
+ services:
3
+ rvc:
4
+ build:
5
+ context: .
6
+ dockerfile: Dockerfile
7
+ container_name: rvc
8
+ volumes:
9
+ - ./weights:/app/assets/weights
10
+ - ./opt:/app/opt
11
+ # - ./dataset:/app/dataset # you can use this folder in order to provide your dataset for model training
12
+ ports:
13
+ - 7865:7865
14
+ deploy:
15
+ resources:
16
+ reservations:
17
+ devices:
18
+ - driver: nvidia
19
+ count: 1
20
+ capabilities: [gpu]
docs/cn/README.cn.md ADDED
@@ -0,0 +1,198 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div align="center">
2
+
3
+ # Retrieval-based-Voice-Conversion-WebUI
4
+ ไธ€ไธชๅŸบไบŽVITS็š„็ฎ€ๅ•ๆ˜“็”จ็š„ๅ˜ๅฃฐๆก†ๆžถ<br><br>
5
+
6
+ [![madewithlove](https://img.shields.io/badge/made_with-%E2%9D%A4-red?style=for-the-badge&labelColor=orange
7
+ )](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI)
8
+
9
+ ![moe](https://counter.seku.su/cmoe?name=rvc&theme=r34)
10
+
11
+ [![Licence](https://img.shields.io/github/license/fumiama/Retrieval-based-Voice-Conversion-WebUI?style=for-the-badge)](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/blob/main/LICENSE)
12
+ [![Huggingface](https://img.shields.io/badge/๐Ÿค—%20-Spaces-yellow.svg?style=for-the-badge)](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/)
13
+
14
+ [![Discord](https://img.shields.io/badge/RVC%20Developers-Discord-7289DA?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/HcsmBBGyVk)
15
+
16
+ [**ๅธธ่ง้—ฎ้ข˜่งฃ็ญ”**](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E8%A7%A3%E7%AD%94) | [**AutoDLยท5ๆฏ›้’ฑ่ฎญ็ปƒAIๆญŒๆ‰‹**](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/wiki/Autodl%E8%AE%AD%E7%BB%83RVC%C2%B7AI%E6%AD%8C%E6%89%8B%E6%95%99%E7%A8%8B) | [**ๅฏน็…งๅฎž้ชŒ่ฎฐๅฝ•**](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/wiki/Autodl%E8%AE%AD%E7%BB%83RVC%C2%B7AI%E6%AD%8C%E6%89%8B%E6%95%99%E7%A8%8B](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/wiki/%E5%AF%B9%E7%85%A7%E5%AE%9E%E9%AA%8C%C2%B7%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95)) | [**ๅœจ็บฟๆผ”็คบ**](https://modelscope.cn/studios/FlowerCry/RVCv2demo)
17
+
18
+ [**English**](../../README.md) | [**ไธญๆ–‡็ฎ€ไฝ“**](../cn/README.cn.md) | [**ๆ—ฅๆœฌ่ชž**](../jp/README.ja.md) | [**ํ•œ๊ตญ์–ด**](../kr/README.ko.md) ([**้Ÿ“ๅœ‹่ชž**](../kr/README.ko.han.md)) | [**Franรงais**](../fr/README.fr.md) | [**Tรผrkรงe**](../tr/README.tr.md) | [**Portuguรชs**](../pt/README.pt.md)
19
+
20
+ </div>
21
+
22
+ > ๅบ•ๆจกไฝฟ็”จๆŽฅ่ฟ‘50ๅฐๆ—ถ็š„ๅผ€ๆบ้ซ˜่ดจ้‡VCTK่ฎญ็ปƒ้›†่ฎญ็ปƒ๏ผŒๆ— ็‰ˆๆƒๆ–น้ข็š„้กพ่™‘๏ผŒ่ฏทๅคงๅฎถๆ”พๅฟƒไฝฟ็”จ
23
+
24
+ > ่ฏทๆœŸๅพ…RVCv3็š„ๅบ•ๆจก๏ผŒๅ‚ๆ•ฐๆ›ดๅคง๏ผŒๆ•ฐๆฎ้›†ๆ›ดๅคง๏ผŒๆ•ˆๆžœๆ›ดๅฅฝ๏ผŒๅŸบๆœฌๆŒๅนณ็š„ๆŽจ็†้€Ÿๅบฆ๏ผŒ้œ€่ฆ่ฎญ็ปƒๆ•ฐๆฎ้‡ๆ›ดๅฐ‘ใ€‚
25
+
26
+ > ็”ฑไบŽๆŸไบ›ๅœฐๅŒบๆ— ๆณ•็›ด่ฟžHugging Face๏ผŒๅณไฝฟ่ฎพๆณ•ๆˆๅŠŸ่ฎฟ้—ฎ๏ผŒ้€ŸๅบฆไนŸๅๅˆ†็ผ“ๆ…ข๏ผŒ็‰นๆŽจๅ‡บๆจกๅž‹/ๆ•ดๅˆๅŒ…/ๅทฅๅ…ท็š„ไธ€้”ฎไธ‹่ฝฝๅ™จ๏ผŒๆฌข่ฟŽ่ฏ•็”จ๏ผš[RVC-Models-Downloader](https://github.com/fumiama/RVC-Models-Downloader)
27
+
28
+ | ่ฎญ็ปƒๆŽจ็†็•Œ้ข |
29
+ | :--------: |
30
+ | ![web](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/assets/41315874/17e48404-2627-4fad-a0ec-65f9065aeade) |
31
+
32
+ | ๅฎžๆ—ถๅ˜ๅฃฐ็•Œ้ข |
33
+ | :---------: |
34
+ | ![realtime-gui](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/assets/41315874/95b36866-b92d-40c7-b5db-6a35ca5caeac) |
35
+
36
+ ## ็ฎ€ไป‹
37
+ ๆœฌไป“ๅบ“ๅ…ทๆœ‰ไปฅไธ‹็‰น็‚น
38
+ + ไฝฟ็”จtop1ๆฃ€็ดขๆ›ฟๆข่พ“ๅ…ฅๆบ็‰นๅพไธบ่ฎญ็ปƒ้›†็‰นๅพๆฅๆœ็ป้Ÿณ่‰ฒๆณ„ๆผ
39
+ + ๅณไพฟๅœจ็›ธๅฏน่พƒๅทฎ็š„ๆ˜พๅกไธŠไนŸ่ƒฝๅฟซ้€Ÿ่ฎญ็ปƒ
40
+ + ไฝฟ็”จๅฐ‘้‡ๆ•ฐๆฎ่ฟ›่กŒ่ฎญ็ปƒไนŸ่ƒฝๅพ—ๅˆฐ่พƒๅฅฝ็ป“ๆžœ(ๆŽจ่่‡ณๅฐ‘ๆ”ถ้›†10ๅˆ†้’ŸไฝŽๅบ•ๅ™ช่ฏญ้Ÿณๆ•ฐๆฎ)
41
+ + ๅฏไปฅ้€š่ฟ‡ๆจกๅž‹่žๅˆๆฅๆ”นๅ˜้Ÿณ่‰ฒ(ๅ€ŸๅŠฉckptๅค„็†้€‰้กนๅกไธญ็š„ckpt-merge)
42
+ + ็ฎ€ๅ•ๆ˜“็”จ็š„็ฝ‘้กต็•Œ้ข
43
+ + ๅฏ่ฐƒ็”จUVR5ๆจกๅž‹ๆฅๅฟซ้€Ÿๅˆ†็ฆปไบบๅฃฐๅ’Œไผดๅฅ
44
+ + ไฝฟ็”จๆœ€ๅ…ˆ่ฟ›็š„[ไบบๅฃฐ้Ÿณ้ซ˜ๆๅ–็ฎ—ๆณ•InterSpeech2023-RMVPE](#ๅ‚่€ƒ้กน็›ฎ)ๆ น็ปๅ“‘้Ÿณ้—ฎ้ข˜๏ผŒๆ•ˆๆžœๆ›ดๅฅฝ๏ผŒ่ฟ่กŒๆ›ดๅฟซ๏ผŒ่ต„ๆบๅ ็”จๆ›ดๅฐ‘
45
+ + AๅกIๅกๅŠ ้€Ÿๆ”ฏๆŒ
46
+
47
+ ็‚นๆญคๆŸฅ็œ‹ๆˆ‘ไปฌ็š„[ๆผ”็คบ่ง†้ข‘](https://www.bilibili.com/video/BV1pm4y1z7Gm/) !
48
+
49
+ ## ็Žฏๅขƒ้…็ฝฎ
50
+ ### Python ็‰ˆๆœฌ้™ๅˆถ
51
+ > ๅปบ่ฎฎไฝฟ็”จ conda ็ฎก็† Python ็Žฏๅขƒ
52
+
53
+ > ็‰ˆๆœฌ้™ๅˆถๅŽŸๅ› ๅ‚่งๆญค[bug](https://github.com/facebookresearch/fairseq/issues/5012)
54
+
55
+ ```bash
56
+ python --version # 3.8 <= Python < 3.11
57
+ ```
58
+
59
+ ### Linux/MacOS ไธ€้”ฎไพ่ต–ๅฎ‰่ฃ…ๅฏๅŠจ่„šๆœฌ
60
+ ๆ‰ง่กŒ้กน็›ฎๆ น็›ฎๅฝ•ไธ‹`run.sh`ๅณๅฏไธ€้”ฎ้…็ฝฎ`venv`่™šๆ‹Ÿ็Žฏๅขƒใ€่‡ชๅŠจๅฎ‰่ฃ…ๆ‰€้œ€ไพ่ต–ๅนถๅฏๅŠจไธป็จ‹ๅบใ€‚
61
+ ```bash
62
+ sh ./run.sh
63
+ ```
64
+
65
+ ### ๆ‰‹ๅŠจๅฎ‰่ฃ…ไพ่ต–
66
+ 1. ๅฎ‰่ฃ…`pytorch`ๅŠๅ…ถๆ ธๅฟƒไพ่ต–๏ผŒ่‹ฅๅทฒๅฎ‰่ฃ…ๅˆ™่ทณ่ฟ‡ใ€‚ๅ‚่€ƒ่‡ช: https://pytorch.org/get-started/locally/
67
+ ```bash
68
+ pip install torch torchvision torchaudio
69
+ ```
70
+ 2. ๅฆ‚ๆžœๆ˜ฏ win ็ณป็ปŸ + Nvidia Ampere ๆžถๆž„(RTX30xx)๏ผŒๆ นๆฎ #21 ็š„็ป้ชŒ๏ผŒ้œ€่ฆๆŒ‡ๅฎš pytorch ๅฏนๅบ”็š„ CUDA ็‰ˆๆœฌ
71
+ ```bash
72
+ pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117
73
+ ```
74
+ 3. ๆ นๆฎ่‡ชๅทฑ็š„ๆ˜พๅกๅฎ‰่ฃ…ๅฏนๅบ”ไพ่ต–
75
+ - Nๅก
76
+ ```bash
77
+ pip install -r requirements/main.txt
78
+ ```
79
+ - Aๅก/Iๅก
80
+ ```bash
81
+ pip install -r requirements/dml.txt
82
+ ```
83
+ - AๅกROCM(Linux)
84
+ ```bash
85
+ pip install -r requirements/amd.txt
86
+ ```
87
+ - IๅกIPEX(Linux)
88
+ ```bash
89
+ pip install -r requirements/ipex.txt
90
+ ```
91
+
92
+ ## ๅ…ถไป–่ต„ๆบๅ‡†ๅค‡
93
+ ### 1. assets
94
+ > RVC้œ€่ฆไฝไบŽ`assets`ๆ–‡ไปถๅคนไธ‹็š„ไธ€ไบ›ๆจกๅž‹่ต„ๆบ่ฟ›่กŒๆŽจ็†ๅ’Œ่ฎญ็ปƒใ€‚
95
+ #### ่‡ชๅŠจๆฃ€ๆŸฅ/ไธ‹่ฝฝ่ต„ๆบ(้ป˜่ฎค)
96
+ > ้ป˜่ฎคๆƒ…ๅ†ตไธ‹๏ผŒRVCๅฏๅœจไธป็จ‹ๅบๅฏๅŠจๆ—ถ่‡ชๅŠจๆฃ€ๆŸฅๆ‰€้œ€่ต„ๆบ็š„ๅฎŒๆ•ดๆ€งใ€‚
97
+
98
+ > ๅณไฝฟ่ต„ๆบไธๅฎŒๆ•ด๏ผŒ็จ‹ๅบไนŸๅฐ†็ปง็ปญๅฏๅŠจใ€‚
99
+
100
+ - ๅฆ‚ๆžœๆ‚จๅธŒๆœ›ไธ‹่ฝฝๆ‰€ๆœ‰่ต„ๆบ๏ผŒ่ฏทๆทปๅŠ `--update`ๅ‚ๆ•ฐ
101
+ - ๅฆ‚ๆžœๆ‚จๅธŒๆœ›่ทณ๏ฟฝ๏ฟฝ๏ฟฝๅฏๅŠจๆ—ถ็š„่ต„ๆบๅฎŒๆ•ดๆ€งๆฃ€ๆŸฅ๏ผŒ่ฏทๆทปๅŠ `--nocheck`ๅ‚ๆ•ฐ
102
+
103
+ #### ๆ‰‹ๅŠจไธ‹่ฝฝ่ต„ๆบ
104
+ > ๆ‰€ๆœ‰่ต„ๆบๆ–‡ไปถๅ‡ไฝไบŽ[Hugging Face space](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/)
105
+
106
+ > ไฝ ๅฏไปฅๅœจ`tools`ๆ–‡ไปถๅคนๆ‰พๅˆฐไธ‹่ฝฝๅฎƒไปฌ็š„่„šๆœฌ
107
+
108
+ > ไฝ ไนŸๅฏไปฅไฝฟ็”จๆจกๅž‹/ๆ•ดๅˆๅŒ…/ๅทฅๅ…ท็š„ไธ€้”ฎไธ‹่ฝฝๅ™จ๏ผš[RVC-Models-Downloader](https://github.com/fumiama/RVC-Models-Downloader)
109
+
110
+ ไปฅไธ‹ๆ˜ฏไธ€ไปฝๆธ…ๅ•๏ผŒๅŒ…ๆ‹ฌไบ†ๆ‰€ๆœ‰RVCๆ‰€้œ€็š„้ข„ๆจกๅž‹ๅ’Œๅ…ถไป–ๆ–‡ไปถ็š„ๅ็งฐใ€‚
111
+
112
+ - ./assets/hubert/hubert_base.pt
113
+ ```bash
114
+ rvcmd assets/hubert # RVC-Models-Downloader command
115
+ ```
116
+ - ./assets/pretrained
117
+ ```bash
118
+ rvcmd assets/v1 # RVC-Models-Downloader command
119
+ ```
120
+ - ./assets/uvr5_weights
121
+ ```bash
122
+ rvcmd assets/uvr5 # RVC-Models-Downloader command
123
+ ```
124
+ ๆƒณไฝฟ็”จv2็‰ˆๆœฌๆจกๅž‹็š„่ฏ๏ผŒ้œ€่ฆ้ขๅค–ไธ‹่ฝฝ
125
+
126
+ - ./assets/pretrained_v2
127
+ ```bash
128
+ rvcmd assets/v2 # RVC-Models-Downloader command
129
+ ```
130
+
131
+ ### 2. ไธ‹่ฝฝ rmvpe ไบบๅฃฐ้Ÿณ้ซ˜ๆๅ–็ฎ—ๆณ•ๆ‰€้œ€ๆ–‡ไปถ
132
+
133
+ ๅฆ‚ๆžœไฝ ๆƒณไฝฟ็”จๆœ€ๆ–ฐ็š„RMVPEไบบๅฃฐ้Ÿณ้ซ˜ๆๅ–็ฎ—ๆณ•๏ผŒๅˆ™ไฝ ้œ€่ฆไธ‹่ฝฝ้Ÿณ้ซ˜ๆๅ–ๆจกๅž‹ๅ‚ๆ•ฐๅนถๆ”พ็ฝฎไบŽ`assets/rmvpe`ใ€‚
134
+
135
+ - ไธ‹่ฝฝ[rmvpe.pt](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.pt)
136
+ ```bash
137
+ rvcmd assets/rmvpe # RVC-Models-Downloader command
138
+ ```
139
+
140
+ #### ไธ‹่ฝฝ rmvpe ็š„ dml ็Žฏๅขƒ(ๅฏ้€‰, Aๅก/Iๅก็”จๆˆท)
141
+
142
+ - ไธ‹่ฝฝ[rmvpe.onnx](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.onnx)
143
+ ```bash
144
+ rvcmd assets/rmvpe # RVC-Models-Downloader command
145
+ ```
146
+
147
+ ### 3. AMDๆ˜พๅกRocm(ๅฏ้€‰, ไป…Linux)
148
+
149
+ ๅฆ‚ๆžœไฝ ๆƒณๅŸบไบŽAMD็š„RocmๆŠ€ๆœฏๅœจLinux็ณป็ปŸไธŠ่ฟ่กŒRVC๏ผŒ่ฏทๅ…ˆๅœจ[่ฟ™้‡Œ](https://rocm.docs.amd.com/en/latest/deploy/linux/os-native/install.html)ๅฎ‰่ฃ…ๆ‰€้œ€็š„้ฉฑๅŠจใ€‚
150
+
151
+ ่‹ฅไฝ ไฝฟ็”จ็š„ๆ˜ฏArch Linux๏ผŒๅฏไปฅไฝฟ็”จpacmanๆฅๅฎ‰่ฃ…ๆ‰€้œ€้ฉฑๅŠจ๏ผš
152
+ ````
153
+ pacman -S rocm-hip-sdk rocm-opencl-sdk
154
+ ````
155
+ ๅฏนไบŽๆŸไบ›ๅž‹ๅท็š„ๆ˜พๅก๏ผŒไฝ ๅฏ่ƒฝ้œ€่ฆ้ขๅค–้…็ฝฎๅฆ‚ไธ‹็š„็Žฏๅขƒๅ˜้‡๏ผˆๅฆ‚๏ผšRX6700XT๏ผ‰๏ผš
156
+ ````
157
+ export ROCM_PATH=/opt/rocm
158
+ export HSA_OVERRIDE_GFX_VERSION=10.3.0
159
+ ````
160
+ ๅŒๆ—ถ็กฎไฟไฝ ็š„ๅฝ“ๅ‰็”จๆˆทๅค„ไบŽ`render`ไธŽ`video`็”จๆˆท็ป„ๅ†…๏ผš
161
+ ````
162
+ sudo usermod -aG render $USERNAME
163
+ sudo usermod -aG video $USERNAME
164
+ ````
165
+
166
+ ## ๅผ€ๅง‹ไฝฟ็”จ
167
+ ### ็›ดๆŽฅๅฏๅŠจ
168
+ ไฝฟ็”จไปฅไธ‹ๆŒ‡ไปคๆฅๅฏๅŠจ WebUI
169
+ ```bash
170
+ python web.py
171
+ ```
172
+ ### Linux/MacOS ็”จๆˆท
173
+ ```bash
174
+ ./run.sh
175
+ ```
176
+ ### ๅฏนไบŽ้œ€่ฆไฝฟ็”จIPEXๆŠ€ๆœฏ็š„Iๅก็”จๆˆท(ไป…Linux)
177
+ ```bash
178
+ source /opt/intel/oneapi/setvars.sh
179
+ ./run.sh
180
+ ```
181
+ ### ไฝฟ็”จๆ•ดๅˆๅŒ… (Windows ็”จๆˆท)
182
+ ไธ‹่ฝฝๅนถ่งฃๅŽ‹`RVC-beta.7z`๏ผŒ่งฃๅŽ‹ๅŽๅŒๅ‡ป`go-web.bat`ๅณๅฏไธ€้”ฎๅฏๅŠจใ€‚
183
+ ```bash
184
+ rvcmd packs/general/latest # RVC-Models-Downloader command
185
+ ```
186
+
187
+ ## ๅ‚่€ƒ้กน็›ฎ
188
+ + [ContentVec](https://github.com/auspicious3000/contentvec/)
189
+ + [VITS](https://github.com/jaywalnut310/vits)
190
+ + [HIFIGAN](https://github.com/jik876/hifi-gan)
191
+ + [Gradio](https://github.com/gradio-app/gradio)
192
+ + [Ultimate Vocal Remover](https://github.com/Anjok07/ultimatevocalremovergui)
193
+ + [audio-slicer](https://github.com/openvpi/audio-slicer)
194
+ + [Vocal pitch extraction:RMVPE](https://github.com/Dream-High/RMVPE)
195
+ + The pretrained model is trained and tested by [yxlllc](https://github.com/yxlllc/RMVPE) and [RVC-Boss](https://github.com/RVC-Boss).
196
+
197
+ ## ๆ„Ÿ่ฐขๆ‰€ๆœ‰่ดก็Œฎ่€…ไฝœๅ‡บ็š„ๅŠชๅŠ›
198
+ [![contributors](https://contrib.rocks/image?repo=fumiama/Retrieval-based-Voice-Conversion-WebUI)](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/graphs/contributors)
docs/cn/faq.md ADDED
@@ -0,0 +1,150 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Q1:ไธ€้”ฎ่ฎญ็ปƒ็ป“ๆŸๆฒกๆœ‰็ดขๅผ•
2
+
3
+ ๆ˜พ็คบ"Training is done. The program is closed."ๅˆ™ๆจกๅž‹่ฎญ็ปƒๆˆๅŠŸ๏ผŒๅŽ็ปญ็ดง้‚ป็š„ๆŠฅ้”™ๆ˜ฏๅ‡็š„๏ผ›
4
+
5
+
6
+ ไธ€้”ฎ่ฎญ็ปƒ็ป“ๆŸๅฎŒๆˆๆฒกๆœ‰addedๅผ€ๅคด็š„็ดขๅผ•ๆ–‡ไปถ๏ผŒๅฏ่ƒฝๆ˜ฏๅ› ไธบ่ฎญ็ปƒ้›†ๅคชๅคงๅกไฝไบ†ๆทปๅŠ ็ดขๅผ•็š„ๆญฅ้ชค๏ผ›ๅทฒ้€š่ฟ‡ๆ‰นๅค„็†add็ดขๅผ•่งฃๅ†ณๅ†…ๅญ˜add็ดขๅผ•ๅฏนๅ†…ๅญ˜้œ€ๆฑ‚่ฟ‡ๅคง็š„้—ฎ้ข˜ใ€‚ไธดๆ—ถๅฏๅฐ่ฏ•ๅ†ๆฌก็‚นๅ‡ป"่ฎญ็ปƒ็ดขๅผ•"ๆŒ‰้’ฎใ€‚
7
+
8
+
9
+ ## Q2:่ฎญ็ปƒ็ป“ๆŸๆŽจ็†ๆฒก็œ‹ๅˆฐ่ฎญ็ปƒ้›†็š„้Ÿณ่‰ฒ
10
+ ็‚นๅˆทๆ–ฐ้Ÿณ่‰ฒๅ†็œ‹็œ‹๏ผŒๅฆ‚ๆžœ่ฟ˜ๆฒกๆœ‰็œ‹็œ‹่ฎญ็ปƒๆœ‰ๆฒกๆœ‰ๆŠฅ้”™๏ผŒๆŽงๅˆถๅฐๅ’Œwebui็š„ๆˆชๅ›พ๏ผŒlogs/ๅฎž้ชŒๅไธ‹็š„log๏ผŒ้ƒฝๅฏไปฅๅ‘็ป™ๅผ€ๅ‘่€…็œ‹็œ‹ใ€‚
11
+
12
+
13
+ ## Q3:ๅฆ‚ไฝ•ๅˆ†ไบซๆจกๅž‹
14
+ โ€ƒโ€ƒrvc_root/logs/ๅฎž้ชŒๅ ไธ‹้ขๅญ˜ๅ‚จ็š„pthไธๆ˜ฏ็”จๆฅๅˆ†ไบซๆจกๅž‹็”จๆฅๆŽจ็†็š„๏ผŒ่€Œๆ˜ฏไธบไบ†ๅญ˜ๅ‚จๅฎž้ชŒ็Šถๆ€ไพ›ๅค็Žฐ๏ผŒไปฅๅŠ็ปง็ปญ่ฎญ็ปƒ็”จ็š„ใ€‚็”จๆฅๅˆ†ไบซ็š„ๆจกๅž‹ๅบ”่ฏฅๆ˜ฏweightsๆ–‡ไปถๅคนไธ‹ๅคงๅฐไธบ60+MB็š„pthๆ–‡ไปถ๏ผ›
15
+
16
+ โ€ƒโ€ƒๅŽ็ปญๅฐ†ๆŠŠweights/exp_name.pthๅ’Œlogs/exp_name/added_xxx.indexๅˆๅนถๆ‰“ๅŒ…ๆˆweights/exp_name.zip็œๅŽปๅกซๅ†™index็š„ๆญฅ้ชค๏ผŒ้‚ฃไนˆzipๆ–‡ไปถ็”จๆฅๅˆ†ไบซ๏ผŒไธ่ฆๅˆ†ไบซpthๆ–‡ไปถ๏ผŒ้™ค้žๆ˜ฏๆƒณๆขๆœบๅ™จ็ปง็ปญ่ฎญ็ปƒ๏ผ›
17
+
18
+ โ€ƒโ€ƒๅฆ‚ๆžœไฝ ๆŠŠlogsๆ–‡ไปถๅคนไธ‹็š„ๅ‡ ็™พMB็š„pthๆ–‡ไปถๅคๅˆถ/ๅˆ†ไบซๅˆฐweightsๆ–‡ไปถๅคนไธ‹ๅผบ่กŒ็”จไบŽๆŽจ็†๏ผŒๅฏ่ƒฝไผšๅ‡บ็Žฐf0๏ผŒtgt_sr็ญ‰ๅ„็งkeyไธๅญ˜ๅœจ็š„ๆŠฅ้”™ใ€‚ไฝ ้œ€่ฆ็”จckpt้€‰้กนๅกๆœ€ไธ‹้ข๏ผŒๆ‰‹ๅทฅๆˆ–่‡ชๅŠจ๏ผˆๆœฌๅœฐlogsไธ‹ๅฆ‚ๆžœ่ƒฝๆ‰พๅˆฐ็›ธๅ…ณไฟกๆฏๅˆ™ไผš่‡ชๅŠจ๏ผ‰้€‰ๆ‹ฉๆ˜ฏๅฆๆบๅธฆ้Ÿณ้ซ˜ใ€็›ฎๆ ‡้Ÿณ้ข‘้‡‡ๆ ท็Ž‡็š„้€‰้กนๅŽ่ฟ›่กŒckptๅฐๆจกๅž‹ๆๅ–๏ผˆ่พ“ๅ…ฅ่ทฏๅพ„ๅกซGๅผ€ๅคด็š„้‚ฃไธช๏ผ‰๏ผŒๆๅ–ๅฎŒๅœจweightsๆ–‡ไปถๅคนไธ‹ไผšๅ‡บ็Žฐ60+MB็š„pthๆ–‡ไปถ๏ผŒๅˆทๆ–ฐ้Ÿณ่‰ฒๅŽๅฏไปฅ้€‰ๆ‹ฉไฝฟ็”จใ€‚
19
+
20
+
21
+ ## Q4:Connection Error.
22
+ ไนŸ่ฎธไฝ ๅ…ณ้—ญไบ†ๆŽงๅˆถๅฐ๏ผˆ้ป‘่‰ฒ็ช—ๅฃ๏ผ‰ใ€‚
23
+
24
+
25
+ ## Q5:WebUIๅผนๅ‡บExpecting value: line 1 column 1 (char 0).
26
+ ่ฏทๅ…ณ้—ญ็ณป็ปŸๅฑ€ๅŸŸ็ฝ‘ไปฃ็†/ๅ…จๅฑ€ไปฃ็†ใ€‚
27
+
28
+
29
+ ่ฟ™ไธชไธไป…ๆ˜ฏๅฎขๆˆท็ซฏ็š„ไปฃ็†๏ผŒไนŸๅŒ…ๆ‹ฌๆœๅŠก็ซฏ็š„ไปฃ็†๏ผˆไพ‹ๅฆ‚ไฝ ไฝฟ็”จautodl่ฎพ็ฝฎไบ†http_proxyๅ’Œhttps_proxyๅญฆๆœฏๅŠ ้€Ÿ๏ผŒไฝฟ็”จๆ—ถไนŸ้œ€่ฆunsetๅ…ณๆŽ‰๏ผ‰
30
+
31
+
32
+ ## Q6:ไธ็”จWebUIๅฆ‚ไฝ•้€š่ฟ‡ๅ‘ฝไปค่ฎญ็ปƒๆŽจ็†
33
+ ่ฎญ็ปƒ่„šๆœฌ๏ผš
34
+
35
+ ๅฏๅ…ˆ่ท‘้€šWebUI๏ผŒๆถˆๆฏ็ช—ๅ†…ไผšๆ˜พ็คบๆ•ฐๆฎ้›†ๅค„็†ๅ’Œ่ฎญ็ปƒ็”จๅ‘ฝไปค่กŒ๏ผ›
36
+
37
+
38
+ ๆŽจ็†่„šๆœฌ๏ผš
39
+
40
+ https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/myinfer.py
41
+
42
+
43
+ ไพ‹ๅญ๏ผš
44
+
45
+
46
+ runtime\python.exe myinfer.py 0 "E:\codes\py39\RVC-beta\todo-songs\1111.wav" "E:\codes\py39\logs\mi-test\added_IVF677_Flat_nprobe_7.index" harvest "test.wav" "weights/mi-test.pth" 0.6 cuda:0 True
47
+
48
+
49
+ f0up_key=sys.argv[1]
50
+
51
+ input_path=sys.argv[2]
52
+
53
+ index_path=sys.argv[3]
54
+
55
+ f0method=sys.argv[4]#harvest or pm
56
+
57
+ opt_path=sys.argv[5]
58
+
59
+ model_path=sys.argv[6]
60
+
61
+ index_rate=float(sys.argv[7])
62
+
63
+ device=sys.argv[8]
64
+
65
+ is_half=bool(sys.argv[9])
66
+
67
+
68
+ ## Q7:Cuda error/Cuda out of memory.
69
+ ๅฐๆฆ‚็Ž‡ๆ˜ฏcuda้…็ฝฎ้—ฎ้ข˜ใ€่ฎพๅค‡ไธๆ”ฏๆŒ๏ผ›ๅคงๆฆ‚็Ž‡ๆ˜ฏๆ˜พๅญ˜ไธๅคŸ๏ผˆout of memory๏ผ‰๏ผ›
70
+
71
+
72
+ ่ฎญ็ปƒ็š„่ฏ็ผฉๅฐbatch size๏ผˆๅฆ‚ๆžœ็ผฉๅฐๅˆฐ1่ฟ˜ไธๅคŸๅช่ƒฝๆ›ดๆขๆ˜พๅก่ฎญ็ปƒ๏ผ‰๏ผŒๆŽจ็†็š„่ฏ้…Œๆƒ…็ผฉๅฐconfig.py็ป“ๅฐพ็š„x_pad๏ผŒx_query๏ผŒx_center๏ผŒx_maxใ€‚4Gไปฅไธ‹ๆ˜พๅญ˜๏ผˆไพ‹ๅฆ‚1060๏ผˆ3G๏ผ‰ๅ’Œๅ„็ง2Gๆ˜พๅก๏ผ‰ๅฏไปฅ็›ดๆŽฅๆ”พๅผƒ๏ผŒ4Gๆ˜พๅญ˜ๆ˜พๅก่ฟ˜ๆœ‰ๆ•‘ใ€‚
73
+
74
+
75
+ ## Q8:total_epoch่ฐƒๅคšๅฐ‘ๆฏ”่พƒๅฅฝ
76
+
77
+ ๅฆ‚ๆžœ่ฎญ็ปƒ้›†้Ÿณ่ดจๅทฎๅบ•ๅ™ชๅคง๏ผŒ20~30่ถณๅคŸไบ†๏ผŒ่ฐƒๅคช้ซ˜๏ผŒๅบ•ๆจก้Ÿณ่ดจๆ— ๆณ•ๅธฆ้ซ˜ไฝ ็š„ไฝŽ้Ÿณ่ดจ่ฎญ็ปƒ้›†
78
+
79
+ ๅฆ‚ๆžœ่ฎญ็ปƒ้›†้Ÿณ่ดจ้ซ˜ๅบ•ๅ™ชไฝŽๆ—ถ้•ฟๅคš๏ผŒๅฏไปฅ่ฐƒ้ซ˜๏ผŒ200ๆ˜ฏok็š„๏ผˆ่ฎญ็ปƒ้€Ÿๅบฆๅพˆๅฟซ๏ผŒๆ—ข็„ถไฝ ๆœ‰ๆกไปถๅ‡†ๅค‡้ซ˜้Ÿณ่ดจ่ฎญ็ปƒ้›†๏ผŒๆ˜พๅกๆƒณๅฟ…ๆกไปถไนŸไธ้”™๏ผŒ่‚ฏๅฎšไธๅœจไนŽๅคšไธ€ไบ›่ฎญ็ปƒๆ—ถ้—ด๏ผ‰
80
+
81
+
82
+ ## Q9:้œ€่ฆๅคšๅฐ‘่ฎญ็ปƒ้›†ๆ—ถ้•ฟ
83
+ โ€ƒโ€ƒๆŽจ่10min่‡ณ50min
84
+
85
+ โ€ƒโ€ƒไฟ่ฏ้Ÿณ่ดจ้ซ˜ๅบ•ๅ™ชไฝŽ็š„ๆƒ…ๅ†ตไธ‹๏ผŒๅฆ‚ๆžœๆœ‰ไธชไบบ็‰น่‰ฒ็š„้Ÿณ่‰ฒ็ปŸไธ€๏ผŒๅˆ™ๅคšๅคš็›Šๅ–„
86
+
87
+ โ€ƒโ€ƒ้ซ˜ๆฐดๅนณ็š„่ฎญ็ปƒ้›†๏ผˆ็ฒพ็ฎ€+้Ÿณ่‰ฒๆœ‰็‰น่‰ฒ๏ผ‰๏ผŒ5min่‡ณ10minไนŸๆ˜ฏok็š„๏ผŒไป“ๅบ“ไฝœ่€…ๆœฌไบบๅฐฑ็ปๅธธ่ฟ™ไนˆ็Žฉ
88
+
89
+ โ€ƒโ€ƒไนŸๆœ‰ไบบๆ‹ฟ1min่‡ณ2min็š„ๆ•ฐๆฎๆฅ่ฎญ็ปƒๅนถไธ”่ฎญ็ปƒๆˆๅŠŸ็š„๏ผŒไฝ†ๆ˜ฏๆˆๅŠŸ็ป้ชŒๆ˜ฏๅ…ถไป–ไบบไธๅฏๅค็Žฐ็š„๏ผŒไธๅคชๅ…ทๅค‡ๅ‚่€ƒไปทๅ€ผใ€‚่ฟ™่ฆๆฑ‚่ฎญ็ปƒ้›†้Ÿณ่‰ฒ็‰น่‰ฒ้žๅธธๆ˜Žๆ˜พ๏ผˆๆฏ”ๅฆ‚่ฏด้ซ˜้ข‘ๆฐ”ๅฃฐ่พƒๆ˜Žๆ˜พ็š„่่Ž‰ๅฐ‘ๅฅณ้Ÿณ๏ผ‰๏ผŒไธ”้Ÿณ่ดจ้ซ˜๏ผ›
90
+
91
+ โ€ƒโ€ƒ1minไปฅไธ‹ๆ—ถ้•ฟๆ•ฐๆฎ็›ฎๅ‰ๆฒก่งๆœ‰ไบบๅฐ่ฏ•๏ผˆๆˆๅŠŸ๏ผ‰่ฟ‡ใ€‚ไธๅปบ่ฎฎ่ฟ›่กŒ่ฟ™็ง้ฌผ็•œ่กŒไธบใ€‚
92
+
93
+
94
+ ## Q10:index rateๅนฒๅ˜›็”จ็š„๏ผŒๆ€Žไนˆ่ฐƒ๏ผˆ็ง‘ๆ™ฎ๏ผ‰
95
+ โ€ƒโ€ƒๅฆ‚ๆžœๅบ•ๆจกๅ’ŒๆŽจ็†ๆบ็š„้Ÿณ่ดจ้ซ˜ไบŽ่ฎญ็ปƒ้›†็š„้Ÿณ่ดจ๏ผŒไป–ไปฌๅฏไปฅๅธฆ้ซ˜ๆŽจ็†็ป“ๆžœ็š„้Ÿณ่ดจ๏ผŒไฝ†ไปฃไปทๅฏ่ƒฝๆ˜ฏ้Ÿณ่‰ฒๅพ€ๅบ•ๆจก/ๆŽจ็†ๆบ็š„้Ÿณ่‰ฒ้ ๏ผŒ่ฟ™็ง็Žฐ่ฑกๅซๅš"้Ÿณ่‰ฒๆณ„้œฒ"๏ผ›
96
+
97
+ โ€ƒโ€ƒindex rate็”จๆฅๅ‰Šๅ‡/่งฃๅ†ณ้Ÿณ่‰ฒๆณ„้œฒ้—ฎ้ข˜ใ€‚่ฐƒๅˆฐ1๏ผŒๅˆ™็†่ฎบไธŠไธๅญ˜ๅœจๆŽจ็†ๆบ็š„้Ÿณ่‰ฒๆณ„้œฒ้—ฎ้ข˜๏ผŒไฝ†้Ÿณ่ดจๆ›ดๅ€พๅ‘ไบŽ่ฎญ็ปƒ้›†ใ€‚ๅฆ‚ๆžœ่ฎญ็ปƒ้›†้Ÿณ่ดจๆฏ”ๆŽจ็†ๆบไฝŽ๏ผŒๅˆ™index rate่ฐƒ้ซ˜ๅฏ่ƒฝ้™ไฝŽ้Ÿณ่ดจใ€‚่ฐƒๅˆฐ0๏ผŒๅˆ™ไธๅ…ทๅค‡ๅˆฉ็”จๆฃ€็ดขๆททๅˆๆฅไฟๆŠค่ฎญ็ปƒ้›†้Ÿณ่‰ฒ็š„ๆ•ˆๆžœ๏ผ›
98
+
99
+ โ€ƒโ€ƒๅฆ‚ๆžœ่ฎญ็ปƒ้›†ไผ˜่ดจๆ—ถ้•ฟๅคš๏ผŒๅฏ่ฐƒ้ซ˜total_epoch๏ผŒๆญคๆ—ถๆจกๅž‹ๆœฌ่บซไธๅคชไผšๅผ•็”จๆŽจ็†ๆบๅ’Œๅบ•ๆจก็š„้Ÿณ่‰ฒ๏ผŒๅพˆๅฐ‘ๅญ˜ๅœจ"้Ÿณ่‰ฒๆณ„้œฒ"้—ฎ้ข˜๏ผŒๆญคๆ—ถindex_rateไธ้‡่ฆ๏ผŒไฝ ็”š่‡ณๅฏไปฅไธๅปบ็ซ‹/ๅˆ†ไบซindex็ดขๅผ•ๆ–‡ไปถใ€‚
100
+
101
+
102
+ ## Q11:ๆŽจ็†ๆ€Žไนˆ้€‰gpu
103
+ config.pyๆ–‡ไปถ้‡Œdevice cuda:ๅŽ้ข้€‰ๆ‹ฉๅกๅท๏ผ›
104
+
105
+ ๅกๅทๅ’Œๆ˜พๅก็š„ๆ˜ ๅฐ„ๅ…ณ็ณป๏ผŒๅœจ๏ฟฝ๏ฟฝ็ปƒ้€‰้กนๅก็š„ๆ˜พๅกไฟกๆฏๆ ้‡Œ่ƒฝ็œ‹ๅˆฐใ€‚
106
+
107
+
108
+ ## Q12:ๅฆ‚ไฝ•ๆŽจ็†่ฎญ็ปƒไธญ้—ดไฟๅญ˜็š„pth
109
+ ้€š่ฟ‡ckpt้€‰้กนๅกๆœ€ไธ‹้ขๆๅ–ๅฐๆจกๅž‹ใ€‚
110
+
111
+
112
+
113
+ ## Q13:ๅฆ‚ไฝ•ไธญๆ–ญๅ’Œ็ปง็ปญ่ฎญ็ปƒ
114
+ ็Žฐ้˜ถๆฎตๅช่ƒฝๅ…ณ้—ญWebUIๆŽงๅˆถๅฐๅŒๅ‡ปgo-web.bat้‡ๅฏ็จ‹ๅบใ€‚็ฝ‘้กตๅ‚ๆ•ฐไนŸ่ฆๅˆทๆ–ฐ้‡ๆ–ฐๅกซๅ†™๏ผ›
115
+
116
+ ็ปง็ปญ่ฎญ็ปƒ๏ผš็›ธๅŒ็ฝ‘้กตๅ‚ๆ•ฐ็‚น่ฎญ็ปƒๆจกๅž‹๏ผŒๅฐฑไผšๆŽฅ็€ไธŠๆฌก็š„checkpoint็ปง็ปญ่ฎญ็ปƒใ€‚
117
+
118
+
119
+ ## Q14:่ฎญ็ปƒๆ—ถๅ‡บ็Žฐๆ–‡ไปถ้กต้ข/ๅ†…ๅญ˜error
120
+ ่ฟ›็จ‹ๅผ€ๅคชๅคšไบ†๏ผŒๅ†…ๅญ˜็‚ธไบ†ใ€‚ไฝ ๅฏ่ƒฝๅฏไปฅ้€š่ฟ‡ๅฆ‚ไธ‹ๆ–นๅผ่งฃๅ†ณ
121
+
122
+ 1ใ€"ๆๅ–้Ÿณ้ซ˜ๅ’Œๅค„็†ๆ•ฐๆฎไฝฟ็”จ็š„CPU่ฟ›็จ‹ๆ•ฐ" ้…Œๆƒ…ๆ‹‰ไฝŽ๏ผ›
123
+
124
+ 2ใ€่ฎญ็ปƒ้›†้Ÿณ้ข‘ๆ‰‹ๅทฅๅˆ‡ไธ€ไธ‹๏ผŒไธ่ฆๅคช้•ฟใ€‚
125
+
126
+
127
+
128
+ ## Q15:ๅฆ‚ไฝ•ไธญ้€”ๅŠ ๆ•ฐๆฎ่ฎญ็ปƒ
129
+ 1ใ€ๆ‰€ๆœ‰ๆ•ฐๆฎๆ–ฐๅปบไธ€ไธชๅฎž้ชŒๅ๏ผ›
130
+
131
+ 2ใ€ๆ‹ท่ดไธŠไธ€ๆฌก็š„ๆœ€ๆ–ฐ็š„้‚ฃไธชGๅ’ŒDๆ–‡ไปถ๏ผˆๆˆ–่€…ไฝ ๆƒณๅŸบไบŽๅ“ชไธชไธญ้—ดckpt่ฎญ็ปƒ๏ผŒไนŸๅฏไปฅๆ‹ท่ดไธญ้—ด็š„๏ผ‰ๅˆฐๆ–ฐๅฎž้ชŒๅ๏ผ›ไธ‹
132
+
133
+ 3ใ€ไธ€้”ฎ่ฎญ็ปƒๆ–ฐๅฎž้ชŒๅ๏ผŒไป–ไผš็ปง็ปญไธŠไธ€ๆฌก็š„ๆœ€ๆ–ฐ่ฟ›ๅบฆ่ฎญ็ปƒใ€‚
134
+
135
+
136
+ ## Q16: error about llvmlite.dll
137
+
138
+ OSError: Could not load shared object file: llvmlite.dll
139
+
140
+ FileNotFoundError: Could not find module lib\site-packages\llvmlite\binding\llvmlite.dll (or one of its dependencies). Try using the full path with constructor syntax.
141
+
142
+ winๅนณๅฐไผšๆŠฅ่ฟ™ไธช้”™๏ผŒ่ฃ…ไธŠhttps://aka.ms/vs/17/release/vc_redist.x64.exe่ฟ™ไธชๅ†้‡ๅฏWebUIๅฐฑๅฅฝไบ†ใ€‚
143
+
144
+ ## Q17: RuntimeError: The expanded size of the tensor (17280) must match the existing size (0) at non-singleton dimension 1. Target sizes: [1, 17280]. Tensor sizes: [0]
145
+
146
+ wavs16kๆ–‡ไปถๅคนไธ‹๏ผŒๆ‰พๅˆฐๆ–‡ไปถๅคงๅฐๆ˜พ่‘—ๆฏ”ๅ…ถไป–้ƒฝๅฐ็š„ไธ€ไบ›้Ÿณ้ข‘ๆ–‡ไปถ๏ผŒๅˆ ๆŽ‰๏ผŒ็‚นๅ‡ป่ฎญ็ปƒๆจกๅž‹๏ผŒๅฐฑไธไผšๆŠฅ้”™ไบ†๏ผŒไธ่ฟ‡็”ฑไบŽไธ€้”ฎๆต็จ‹ไธญๆ–ญไบ†ไฝ ่ฎญ็ปƒๅฎŒๆจกๅž‹่ฟ˜่ฆ็‚น่ฎญ็ปƒ็ดขๅผ•ใ€‚
147
+
148
+ ## Q18: RuntimeError: The size of tensor a (24) must match the size of tensor b (16) at non-singleton dimension 2
149
+
150
+ ไธ่ฆไธญ้€”ๅ˜ๆ›ด้‡‡ๆ ท็Ž‡็ปง็ปญ่ฎญ็ปƒใ€‚ๅฆ‚ๆžœไธ€ๅฎš่ฆๅ˜ๆ›ด๏ผŒๅบ”ๆ›ดๆขๅฎž้ชŒๅไปŽๅคด่ฎญ็ปƒใ€‚ๅฝ“็„ถไฝ ไนŸๅฏไปฅๆŠŠไธŠๆฌกๆๅ–็š„้Ÿณ้ซ˜ๅ’Œ็‰นๅพ๏ผˆ0/1/2/2b folders๏ผ‰ๆ‹ท่ด่ฟ‡ๅŽปๅŠ ้€Ÿ่ฎญ็ปƒๆต็จ‹ใ€‚
docs/en/faiss_tips_en.md ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ faiss tuning TIPS
2
+ ==================
3
+ # about faiss
4
+ faiss is a library of neighborhood searches for dense vectors, developed by facebook research, which efficiently implements many approximate neighborhood search methods.
5
+ Approximate Neighbor Search finds similar vectors quickly while sacrificing some accuracy.
6
+
7
+ ## faiss in RVC
8
+ In RVC, for the embedding of features converted by HuBERT, we search for embeddings similar to the embedding generated from the training data and mix them to achieve a conversion that is closer to the original speech. However, since this search takes time if performed naively, high-speed conversion is realized by using approximate neighborhood search.
9
+
10
+ # implementation overview
11
+ In '/logs/your-experiment/3_feature256' where the model is located, features extracted by HuBERT from each voice data are located.
12
+ From here we read the npy files in order sorted by filename and concatenate the vectors to create big_npy. (This vector has shape [N, 256].)
13
+ After saving big_npy as /logs/your-experiment/total_fea.npy, train it with faiss.
14
+
15
+ In this article, I will explain the meaning of these parameters.
16
+
17
+ # Explanation of the method
18
+ ## index factory
19
+ An index factory is a unique faiss notation that expresses a pipeline that connects multiple approximate neighborhood search methods as a string.
20
+ This allows you to try various approximate neighborhood search methods simply by changing the index factory string.
21
+ In RVC it is used like this:
22
+
23
+ ```python
24
+ index = faiss.index_factory(256, "IVF%s,Flat" % n_ivf)
25
+ ```
26
+ Among the arguments of index_factory, the first is the number of dimensions of the vector, the second is the index factory string, and the third is the distance to use.
27
+
28
+ For more detailed notation
29
+ https://github.com/facebookresearch/faiss/wiki/The-index-factory
30
+
31
+ ## index for distance
32
+ There are two typical indexes used as similarity of embedding as follows.
33
+
34
+ - Euclidean distance (METRIC_L2)
35
+ - inner product (METRIC_INNER_PRODUCT)
36
+
37
+ Euclidean distance takes the squared difference in each dimension, sums the differences in all dimensions, and then takes the square root. This is the same as the distance in 2D and 3D that we use on a daily basis.
38
+ The inner product is not used as an index of similarity as it is, and the cosine similarity that takes the inner product after being normalized by the L2 norm is generally used.
39
+
40
+ Which is better depends on the case, but cosine similarity is often used in embedding obtained by word2vec and similar image retrieval models learned by ArcFace. If you want to do l2 normalization on vector X with numpy, you can do it with the following code with eps small enough to avoid 0 division.
41
+
42
+ ```python
43
+ X_normed = X / np.maximum(eps, np.linalg.norm(X, ord=2, axis=-1, keepdims=True))
44
+ ```
45
+
46
+ Also, for the index factory, you can change the distance index used for calculation by choosing the value to pass as the third argument.
47
+
48
+ ```python
49
+ index = faiss.index_factory(dimention, text, faiss.METRIC_INNER_PRODUCT)
50
+ ```
51
+
52
+ ## IVF
53
+ IVF (Inverted file indexes) is an algorithm similar to the inverted index in full-text search.
54
+ During learning, the search target is clustered with kmeans, and Voronoi partitioning is performed using the cluster center. Each data point is assigned a cluster, so we create a dictionary that looks up the data points from the clusters.
55
+
56
+ For example, if clusters are assigned as follows
57
+ |index|Cluster|
58
+ |-----|-------|
59
+ |1|A|
60
+ |2|B|
61
+ |3|A|
62
+ |4|C|
63
+ |5|B|
64
+
65
+ The resulting inverted index looks like this:
66
+
67
+ |cluster|index|
68
+ |-------|-----|
69
+ |A|1, 3|
70
+ |B|2, 5|
71
+ |C|4|
72
+
73
+ When searching, we first search n_probe clusters from the clusters, and then calculate the distances for the data points belonging to each cluster.
74
+
75
+ # recommend parameter
76
+ There are official guidelines on how to choose an index, so I will explain accordingly.
77
+ https://github.com/facebookresearch/faiss/wiki/Guidelines-to-choose-an-index
78
+
79
+ For datasets below 1M, 4bit-PQ is the most efficient method available in faiss as of April 2023.
80
+ Combining this with IVF, narrowing down the candidates with 4bit-PQ, and finally recalculating the distance with an accurate index can be described by using the following index factory.
81
+
82
+ ```python
83
+ index = faiss.index_factory(256, "IVF1024,PQ128x4fs,RFlat")
84
+ ```
85
+
86
+ ## Recommended parameters for IVF
87
+ Consider the case of too many IVFs. For example, if coarse quantization by IVF is performed for the number of data, this is the same as a naive exhaustive search and is inefficient.
88
+ For 1M or less, IVF values are recommended between 4*sqrt(N) ~ 16*sqrt(N) for N number of data points.
89
+
90
+ Since the calculation time increases in proportion to the number of n_probes, please consult with the accuracy and choose appropriately. Personally, I don't think RVC needs that much accuracy, so n_probe = 1 is fine.
91
+
92
+ ## FastScan
93
+ FastScan is a method that enables high-speed approximation of distances by Cartesian product quantization by performing them in registers.
94
+ Cartesian product quantization performs clustering independently for each d dimension (usually d = 2) during learning, calculates the distance between clusters in advance, and creates a lookup table. At the time of prediction, the distance of each dimension can be calculated in O(1) by looking at the lookup table.
95
+ So the number you specify after PQ usually specifies half the dimension of the vector.
96
+
97
+ For a more detailed description of FastScan, please refer to the official documentation.
98
+ https://github.com/facebookresearch/faiss/wiki/Fast-accumulation-of-PQ-and-AQ-codes-(FastScan)
99
+
100
+ ## RFlat
101
+ RFlat is an instruction to recalculate the rough distance calculated by FastScan with the exact distance specified by the third argument of index factory.
102
+ When getting k neighbors, k*k_factor points are recalculated.
docs/en/faq_en.md ADDED
@@ -0,0 +1,114 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Q1:Cannot find index file after "One-click Training".
2
+ If it displays "Training is done. The program is closed," then the model has been trained successfully, and the subsequent errors are fake;
3
+
4
+ The lack of an 'added' index file after One-click training may be due to the training set being too large, causing the addition of the index to get stuck; this has been resolved by using batch processing to add the index, which solves the problem of memory overload when adding the index. As a temporary solution, try clicking the "Train Index" button again.<br>
5
+
6
+ ## Q2:Cannot find the model in โ€œInferencing timbreโ€ after training
7
+ Click โ€œRefresh timbre listโ€ and check again; if still not visible, check if there are any errors during training and send screenshots of the console, web UI, and logs/experiment_name/*.log to the developers for further analysis.<br>
8
+
9
+ ## Q3:How to share a model/How to use others' models?
10
+ The pth files stored in rvc_root/logs/experiment_name are not meant for sharing or inference, but for storing the experiment checkpoits for reproducibility and further training. The model to be shared should be the 60+MB pth file in the weights folder;
11
+
12
+ In the future, weights/exp_name.pth and logs/exp_name/added_xxx.index will be merged into a single weights/exp_name.zip file to eliminate the need for manual index input; so share the zip file, not the pth file, unless you want to continue training on a different machine;
13
+
14
+ Copying/sharing the several hundred MB pth files from the logs folder to the weights folder for forced inference may result in errors such as missing f0, tgt_sr, or other keys. You need to use the ckpt tab at the bottom to manually or automatically (if the information is found in the logs/exp_name), select whether to include pitch infomation and target audio sampling rate options and then extract the smaller model. After extraction, there will be a 60+ MB pth file in the weights folder, and you can refresh the voices to use it.<br>
15
+
16
+ ## Q4:Connection Error.
17
+ You may have closed the console (black command line window).<br>
18
+
19
+ ## Q5:WebUI popup 'Expecting value: line 1 column 1 (char 0)'.
20
+ Please disable system LAN proxy/global proxy and then refresh.<br>
21
+
22
+ ## Q6:How to train and infer without the WebUI?
23
+ Training script:<br>
24
+ You can run training in WebUI first, and the command-line versions of dataset preprocessing and training will be displayed in the message window.<br>
25
+
26
+ Inference script:<br>
27
+ https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/myinfer.py<br>
28
+
29
+
30
+ e.g.<br>
31
+
32
+ runtime\python.exe myinfer.py 0 "E:\codes\py39\RVC-beta\todo-songs\1111.wav" "E:\codes\py39\logs\mi-test\added_IVF677_Flat_nprobe_7.index" harvest "test.wav" "weights/mi-test.pth" 0.6 cuda:0 True<br>
33
+
34
+
35
+ f0up_key=sys.argv[1]<br>
36
+ input_path=sys.argv[2]<br>
37
+ index_path=sys.argv[3]<br>
38
+ f0method=sys.argv[4]#harvest or pm<br>
39
+ opt_path=sys.argv[5]<br>
40
+ model_path=sys.argv[6]<br>
41
+ index_rate=float(sys.argv[7])<br>
42
+ device=sys.argv[8]<br>
43
+ is_half=bool(sys.argv[9])<br>
44
+
45
+ ## Q7:Cuda error/Cuda out of memory.
46
+ There is a small chance that there is a problem with the CUDA configuration or the device is not supported; more likely, there is not enough memory (out of memory).<br>
47
+
48
+ For training, reduce the batch size (if reducing to 1 is still not enough, you may need to change the graphics card); for inference, adjust the x_pad, x_query, x_center, and x_max settings in the config.py file as needed. 4G or lower memory cards (e.g. 1060(3G) and various 2G cards) can be abandoned, while 4G memory cards still have a chance.<br>
49
+
50
+ ## Q8:How many total_epoch are optimal?
51
+ If the training dataset's audio quality is poor and the noise floor is high, 20-30 epochs are sufficient. Setting it too high won't improve the audio quality of your low-quality training set.<br>
52
+
53
+ If the training set audio quality is high, the noise floor is low, and there is sufficient duration, you can increase it. 200 is acceptable (since training is fast, and if you're able to prepare a high-quality training set, your GPU likely can handle a longer training duration without issue).<br>
54
+
55
+ ## Q9:How much training set duration is needed?
56
+
57
+ A dataset of around 10min to 50min is recommended.<br>
58
+
59
+ With guaranteed high sound quality and low bottom noise, more can be added if the dataset's timbre is uniform.<br>
60
+
61
+ For a high-level training set (lean + distinctive tone), 5min to 10min is fine.<br>
62
+
63
+ There are some people who have trained successfully with 1min to 2min data, but the success is not reproducible by others and is not very informative. <br>This requires that the training set has a very distinctive timbre (e.g. a high-frequency airy anime girl sound) and the quality of the audio is high;
64
+ Data of less than 1min duration has not been successfully attempted so far. This is not recommended.<br>
65
+
66
+
67
+ ## Q10:What is the index rate for and how to adjust it?
68
+ If the tone quality of the pre-trained model and inference source is higher than that of the training set, they can bring up the tone quality of the inference result, but at the cost of a possible tone bias towards the tone of the underlying model/inference source rather than the tone of the training set, which is generally referred to as "tone leakage".<br>
69
+
70
+ The index rate is used to reduce/resolve the timbre leakage problem. If the index rate is set to 1, theoretically there is no timbre leakage from the inference source and the timbre quality is more biased towards the training set. If the training set has a lower sound quality than the inference source, then a higher index rate may reduce the sound quality. Turning it down to 0 does not have the effect of using retrieval blending to protect the training set tones.<br>
71
+
72
+ If the training set has good audio quality and long duration, turn up the total_epoch, when the model itself is less likely to refer to the inferred source and the pretrained underlying model, and there is little "tone leakage", the index_rate is not important and you can even not create/share the index file.<br>
73
+
74
+ ## Q11:How to choose the gpu when inferring?
75
+ In the config.py file, select the card number after "device cuda:".<br>
76
+
77
+ The mapping between card number and graphics card can be seen in the graphics card information section of the training tab.<br>
78
+
79
+ ## Q12:How to use the model saved in the middle of training?
80
+ Save via model extraction at the bottom of the ckpt processing tab.
81
+
82
+ ## Q13:File/memory error(when training)?
83
+ Too many processes and your memory is not enough. You may fix it by:
84
+
85
+ 1ใ€decrease the input in field "Threads of CPU".
86
+
87
+ 2ใ€pre-cut trainset to shorter audio files.
88
+
89
+ ## Q14: How to continue training using more data
90
+
91
+ step1: put all wav data to path2.
92
+
93
+ step2: exp_name2+path2 -> process dataset and extract feature.
94
+
95
+ step3: copy the latest G and D file of exp_name1 (your previous experiment) into exp_name2 folder.
96
+
97
+ step4: click "train the model", and it will continue training from the beginning of your previous exp model epoch.
98
+
99
+ ## Q15: error about llvmlite.dll
100
+
101
+ OSError: Could not load shared object file: llvmlite.dll
102
+
103
+ FileNotFoundError: Could not find module lib\site-packages\llvmlite\binding\llvmlite.dll (or one of its dependencies). Try using the full path with constructor syntax.
104
+
105
+ The issue will happen in windows, install https://aka.ms/vs/17/release/vc_redist.x64.exe and it will be fixed.
106
+
107
+ ## Q16: RuntimeError: The expanded size of the tensor (17280) must match the existing size (0) at non-singleton dimension 1. Target sizes: [1, 17280]. Tensor sizes: [0]
108
+
109
+ Delete the wav files whose size is significantly smaller than others, and that won't happen again. Than click "train the model"and "train the index".
110
+
111
+ ## Q17: RuntimeError: The size of tensor a (24) must match the size of tensor b (16) at non-singleton dimension 2
112
+
113
+ Do not change the sampling rate and then continue training. If it is necessary to change, the exp name should be changed and the model will be trained from scratch. You can also copy the pitch and features (0/1/2/2b folders) extracted last time to accelerate the training process.
114
+
docs/en/training_tips_en.md ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Instructions and tips for RVC training
2
+ ======================================
3
+ This TIPS explains how data training is done.
4
+
5
+ # Training flow
6
+ I will explain along the steps in the training tab of the GUI.
7
+
8
+ ## step1
9
+ Set the experiment name here.
10
+
11
+ You can also set here whether the model should take pitch into account.
12
+ If the model doesn't consider pitch, the model will be lighter, but not suitable for singing.
13
+
14
+ Data for each experiment is placed in `/logs/your-experiment-name/`.
15
+
16
+ ## step2a
17
+ Loads and preprocesses audio.
18
+
19
+ ### load audio
20
+ If you specify a folder with audio, the audio files in that folder will be read automatically.
21
+ For example, if you specify `C:Users\hoge\voices`, `C:Users\hoge\voices\voice.mp3` will be loaded, but `C:Users\hoge\voices\dir\voice.mp3` will Not loaded.
22
+
23
+ Since ffmpeg is used internally for reading audio, if the extension is supported by ffmpeg, it will be read automatically.
24
+ After converting to int16 with ffmpeg, convert to float32 and normalize between -1 to 1.
25
+
26
+ ### denoising
27
+ The audio is smoothed by scipy's filtfilt.
28
+
29
+ ### Audio Split
30
+ First, the input audio is divided by detecting parts of silence that last longer than a certain period (max_sil_kept=5 seconds?). After splitting the audio on silence, split the audio every 4 seconds with an overlap of 0.3 seconds. For audio separated within 4 seconds, after normalizing the volume, convert the wav file to `/logs/your-experiment-name/0_gt_wavs` and then convert it to 16k sampling rate to `/logs/your-experiment-name/1_16k_wavs ` as a wav file.
31
+
32
+ ## step2b
33
+ ### Extract pitch
34
+ Extract pitch information from wav files. Extract the pitch information (=f0) using the method built into parselmouth or pyworld and save it in `/logs/your-experiment-name/2a_f0`. Then logarithmically convert the pitch information to an integer between 1 and 255 and save it in `/logs/your-experiment-name/2b-f0nsf`.
35
+
36
+ ### Extract feature_print
37
+ Convert the wav file to embedding in advance using HuBERT. Read the wav file saved in `/logs/your-experiment-name/1_16k_wavs`, convert the wav file to 256-dimensional features with HuBERT, and save in npy format in `/logs/your-experiment-name/3_feature256`.
38
+
39
+ ## step3
40
+ train the model.
41
+ ### Glossary for Beginners
42
+ In deep learning, the data set is divided and the learning proceeds little by little. In one model update (step), batch_size data are retrieved and predictions and error corrections are performed. Doing this once for a dataset counts as one epoch.
43
+
44
+ Therefore, the learning time is the learning time per step x (the number of data in the dataset / batch size) x the number of epochs. In general, the larger the batch size, the more stable the learning becomes (learning time per step รท batch size) becomes smaller, but it uses more GPU memory. GPU RAM can be checked with the nvidia-smi command. Learning can be done in a short time by increasing the batch size as much as possible according to the machine of the execution environment.
45
+
46
+ ### Specify pretrained model
47
+ RVC starts training the model from pretrained weights instead of from 0, so it can be trained with a small dataset.
48
+
49
+ By default
50
+
51
+ - If you consider pitch, it loads `rvc-location/pretrained/f0G40k.pth` and `rvc-location/pretrained/f0D40k.pth`.
52
+ - If you don't consider pitch, it loads `rvc-location/pretrained/G40k.pth` and `rvc-location/pretrained/D40k.pth`.
53
+
54
+ When learning, model parameters are saved in `logs/your-experiment-name/G_{}.pth` and `logs/your-experiment-name/D_{}.pth` for each save_every_epoch, but by specifying this path, you can start learning. You can restart or start training from model weights learned in a different experiment.
55
+
56
+ ### learning index
57
+ RVC saves the HuBERT feature values used during training, and during inference, searches for feature values that are similar to the feature values used during learning to perform inference. In order to perform this search at high speed, the index is learned in advance.
58
+ For index learning, we use the approximate neighborhood search library faiss. Read the feature value of `logs/your-experiment-name/3_feature256` and use it to learn the index, and save it as `logs/your-experiment-name/add_XXX.index`.
59
+
60
+ (From the 20230428update version, it is read from the index, and saving / specifying is no longer necessary.)
61
+
62
+ ### Button description
63
+ - Train model: After executing step2b, press this button to train the model.
64
+ - Train feature index: After training the model, perform index learning.
65
+ - One-click training: step2b, model training and feature index training all at once.
docs/fr/README.fr.md ADDED
@@ -0,0 +1,166 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div align="center">
2
+
3
+ # Retrieval-based-Voice-Conversion-WebUI
4
+ Un framework simple et facile ร  utiliser pour la conversion vocale (modificateur de voix) basรฉ sur VITS
5
+
6
+
7
+
8
+ [![madewithlove](https://img.shields.io/badge/made_with-%E2%9D%A4-red?style=for-the-badge&labelColor=orange
9
+ )](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI)
10
+
11
+ ![moe](https://counter.seku.su/cmoe?name=rvc&theme=r34)
12
+
13
+ [![Licence](https://img.shields.io/github/license/fumiama/Retrieval-based-Voice-Conversion-WebUI?style=for-the-badge)](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/blob/main/LICENSE)
14
+ [![Huggingface](https://img.shields.io/badge/๐Ÿค—%20-Spaces-yellow.svg?style=for-the-badge)](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/)
15
+
16
+ [![Discord](https://img.shields.io/badge/RVC%20Developers-Discord-7289DA?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/HcsmBBGyVk)
17
+
18
+ [**FAQ**](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E8%A7%A3%E7%AD%94) | [**AutoDLยทFormation d'un chanteur AI pour 5 centimes**](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/wiki/Autodl%E8%AE%AD%E7%BB%83RVC%C2%B7AI%E6%AD%8C%E6%89%8B%E6%95%99%E7%A8%8B) | [**Enregistrement des expรฉriences comparatives**](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/wiki/%E5%AF%B9%E7%85%A7%E5%AE%9E%E9%AA%8C%C2%B7%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95) | [**Dรฉmonstration en ligne**](https://huggingface.co/spaces/Ricecake123/RVC-demo)
19
+
20
+ </div>
21
+
22
+ ------
23
+
24
+ [**English**](../en/README.en.md) | [ **ไธญๆ–‡็ฎ€ไฝ“**](../../README.md) | [**ๆ—ฅๆœฌ่ชž**](../jp/README.ja.md) | [**ํ•œ๊ตญ์–ด**](../kr/README.ko.md) ([**้Ÿ“ๅœ‹่ชž**](../kr/README.ko.han.md)) | [**Franรงais**](../fr/README.fr.md) | [**Turc**](../tr/README.tr.md) | [**Portuguรชs**](../pt/README.pt.md)
25
+
26
+ Cliquez ici pour voir notre [vidรฉo de dรฉmonstration](https://www.bilibili.com/video/BV1pm4y1z7Gm/) !
27
+
28
+ > Conversion vocale en temps rรฉel avec RVC : [w-okada/voice-changer](https://github.com/w-okada/voice-changer)
29
+
30
+ > Le modรจle de base est formรฉ avec prรจs de 50 heures de donnรฉes VCTK de haute qualitรฉ et open source. Aucun souci concernant les droits d'auteur, n'hรฉsitez pas ร  l'utiliser.
31
+
32
+ > Attendez-vous au modรจle de base RVCv3 : plus de paramรจtres, plus de donnรฉes, de meilleurs rรฉsultats, une vitesse d'infรฉrence presque identique, et nรฉcessite moins de donnรฉes pour la formation.
33
+
34
+ ## Introduction
35
+ Ce dรฉpรดt a les caractรฉristiques suivantes :
36
+ + Utilise le top1 pour remplacer les caractรฉristiques de la source d'entrรฉe par les caractรฉristiques de l'ensemble d'entraรฎnement pour รฉliminer les fuites de timbre vocal.
37
+ + Peut รชtre formรฉ rapidement mรชme sur une carte graphique relativement moins performante.
38
+ + Obtient de bons rรฉsultats mรชme avec peu de donnรฉes pour la formation (il est recommandรฉ de collecter au moins 10 minutes de donnรฉes vocales avec un faible bruit de fond).
39
+ + Peut changer le timbre vocal en fusionnant des modรจles (avec l'aide de l'onglet ckpt-merge).
40
+ + Interface web simple et facile ร  utiliser.
41
+ + Peut appeler le modรจle UVR5 pour sรฉparer rapidement la voix et l'accompagnement.
42
+ + Utilise l'algorithme de pitch vocal le plus avancรฉ [InterSpeech2023-RMVPE](#projets-rรฉfรฉrencรฉs) pour รฉliminer les problรจmes de voix muette. Meilleurs rรฉsultats, plus rapide que crepe_full, et moins gourmand en ressources.
43
+ + Support d'accรฉlรฉration pour les cartes AMD et Intel.
44
+
45
+ ## Configuration de l'environnement
46
+ Exรฉcutez les commandes suivantes dans un environnement Python de version 3.8 ou supรฉrieure.
47
+
48
+ (Windows/Linux)
49
+ Installez d'abord les dรฉpendances principales via pip :
50
+ ```bash
51
+ # Installez Pytorch et ses dรฉpendances essentielles, sautez si dรฉjร  installรฉ.
52
+ # Voir : https://pytorch.org/get-started/locally/
53
+ pip install torch torchvision torchaudio
54
+
55
+ # Pour les utilisateurs de Windows avec une architecture Nvidia Ampere (RTX30xx), en se basant sur l'expรฉrience #21, spรฉcifiez la version CUDA correspondante pour Pytorch.
56
+ pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117
57
+
58
+ # Pour Linux + carte AMD, utilisez cette version de Pytorch:
59
+ pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.4.2
60
+ ```
61
+
62
+ Vous pouvez utiliser poetry pour installer les dรฉpendances :
63
+ ```bash
64
+ # Installez l'outil de gestion des dรฉpendances Poetry, sautez si dรฉjร  installรฉ.
65
+ # Voir : https://python-poetry.org/docs/#installation
66
+ curl -sSL https://install.python-poetry.org | python3 -
67
+
68
+ # Installez les dรฉpendances avec poetry.
69
+ poetry install
70
+ ```
71
+
72
+ Ou vous pouvez utiliser pip pour installer les dรฉpendances :
73
+ ```bash
74
+ # Cartes Nvidia :
75
+ pip install -r requirements/main.txt
76
+
77
+ # Cartes AMD/Intel :
78
+ pip install -r requirements/dml.txt
79
+
80
+ # Cartes Intel avec IPEX
81
+ pip install -r requirements/ipex.txt
82
+
83
+ # Cartes AMD sur Linux (ROCm)
84
+ pip install -r requirements/amd.txt
85
+ ```
86
+
87
+ ------
88
+ Les utilisateurs de Mac peuvent exรฉcuter `run.sh` pour installer les dรฉpendances :
89
+ ```bash
90
+ sh ./run.sh
91
+ ```
92
+
93
+ ## Prรฉparation d'autres modรจles prรฉ-entraรฎnรฉs
94
+ RVC nรฉcessite d'autres modรจles prรฉ-entraรฎnรฉs pour l'infรฉrence et la formation.
95
+
96
+ ```bash
97
+ #Tรฉlรฉcharger tous les modรจles depuis https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/
98
+ python tools/download_models.py
99
+ ```
100
+
101
+ Ou vous pouvez tรฉlรฉcharger ces modรจles depuis notre [espace Hugging Face](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/).
102
+
103
+ Voici une liste des modรจles et autres fichiers requis par RVC :
104
+ ```bash
105
+ ./assets/hubert/hubert_base.pt
106
+
107
+ ./assets/pretrained
108
+
109
+ ./assets/uvr5_weights
110
+
111
+ # Pour tester la version v2 du modรจle, tรฉlรฉchargez รฉgalement :
112
+
113
+ ./assets/pretrained_v2
114
+
115
+ # Si vous souhaitez utiliser le dernier algorithme RMVPE de pitch vocal, tรฉlรฉchargez les paramรจtres du modรจle de pitch et placez-les dans le rรฉpertoire racine de RVC.
116
+
117
+ https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.pt
118
+
119
+ # Les utilisateurs de cartes AMD/Intel nรฉcessitant l'environnement DML doivent tรฉlรฉcharger :
120
+
121
+ https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.onnx
122
+
123
+ ```
124
+ Pour les utilisateurs d'Intel ARC avec IPEX, exรฉcutez d'abord `source /opt/intel/oneapi/setvars.sh`.
125
+ Ensuite, exรฉcutez la commande suivante pour dรฉmarrer WebUI :
126
+ ```bash
127
+ python web.py
128
+ ```
129
+
130
+ Si vous utilisez Windows ou macOS, vous pouvez tรฉlรฉcharger et extraire `RVC-beta.7z`. Les utilisateurs de Windows peuvent exรฉcuter `go-web.bat` pour dรฉmarrer WebUI, tandis que les utilisateurs de macOS peuvent exรฉcuter `sh ./run.sh`.
131
+
132
+ ## Compatibilitรฉ ROCm pour les cartes AMD (seulement Linux)
133
+ Installez tous les pilotes dรฉcrits [ici](https://rocm.docs.amd.com/en/latest/deploy/linux/os-native/install.html).
134
+
135
+ Sur Arch utilisez pacman pour installer le pilote:
136
+ ````
137
+ pacman -S rocm-hip-sdk rocm-opencl-sdk
138
+ ````
139
+
140
+ Vous devrez peut-รชtre crรฉer ces variables d'environnement (par exemple avec RX6700XT):
141
+ ````
142
+ export ROCM_PATH=/opt/rocm
143
+ export HSA_OVERRIDE_GFX_VERSION=10.3.0
144
+ ````
145
+ Assurez-vous que votre utilisateur est dans les groupes `render` et `video`:
146
+ ````
147
+ sudo usermod -aG render $USERNAME
148
+ sudo usermod -aG video $USERNAME
149
+ ````
150
+ Enfin vous pouvez exรฉcuter WebUI:
151
+ ```bash
152
+ python web.py
153
+ ```
154
+
155
+ ## Crรฉdits
156
+ + [ContentVec](https://github.com/auspicious3000/contentvec/)
157
+ + [VITS](https://github.com/jaywalnut310/vits)
158
+ + [HIFIGAN](https://github.com/jik876/hifi-gan)
159
+ + [Gradio](https://github.com/gradio-app/gradio)
160
+ + [Ultimate Vocal Remover](https://github.com/Anjok07/ultimatevocalremovergui)
161
+ + [audio-slicer](https://github.com/openvpi/audio-slicer)
162
+ + [Extraction de la hauteur vocale : RMVPE](https://github.com/Dream-High/RMVPE)
163
+ + Le modรจle prรฉ-entraรฎnรฉ a รฉtรฉ formรฉ et testรฉ par [yxlllc](https://github.com/yxlllc/RMVPE) et [RVC-Boss](https://github.com/RVC-Boss).
164
+
165
+ ## Remerciements ร  tous les contributeurs pour leurs efforts
166
+ [![contributors](https://contrib.rocks/image?repo=fumiama/Retrieval-based-Voice-Conversion-WebUI)](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/graphs/contributors)
docs/fr/faiss_tips_fr.md ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Conseils de rรฉglage pour faiss
2
+ ==================
3
+ # ร€ propos de faiss
4
+ faiss est une bibliothรจque de recherches de voisins pour les vecteurs denses, dรฉveloppรฉe par Facebook Research, qui implรฉmente efficacement de nombreuses mรฉthodes de recherche de voisins approximatifs.
5
+ La recherche de voisins approximatifs trouve rapidement des vecteurs similaires tout en sacrifiant une certaine prรฉcision.
6
+
7
+ ## faiss dans RVC
8
+ Dans RVC, pour l'incorporation des caractรฉristiques converties par HuBERT, nous recherchons des incorporations similaires ร  l'incorporation gรฉnรฉrรฉe ร  partir des donnรฉes d'entraรฎnement et les mixons pour obtenir une conversion plus proche de la parole originale. Cependant, cette recherche serait longue si elle รฉtait effectuรฉe de maniรจre naรฏve, donc une conversion ร  haute vitesse est rรฉalisรฉe en utilisant une recherche de voisinage approximatif.
9
+
10
+ # Vue d'ensemble de la mise en ล“uvre
11
+ Dans '/logs/votre-expรฉrience/3_feature256' oรน le modรจle est situรฉ, les caractรฉristiques extraites par HuBERT de chaque donnรฉe vocale sont situรฉes.
12
+ ร€ partir de lร , nous lisons les fichiers npy dans un ordre triรฉ par nom de fichier et concatรฉnons les vecteurs pour crรฉer big_npy. (Ce vecteur a la forme [N, 256].)
13
+ Aprรจs avoir sauvegardรฉ big_npy comme /logs/votre-expรฉrience/total_fea.npy, nous l'entraรฎnons avec faiss.
14
+
15
+ Dans cet article, j'expliquerai la signification de ces paramรจtres.
16
+
17
+ # Explication de la mรฉthode
18
+ ## Usine d'index
19
+ Une usine d'index est une notation unique de faiss qui exprime un pipeline qui relie plusieurs mรฉthodes de recherche de voisinage approximatif sous forme de chaรฎne.
20
+ Cela vous permet d'essayer diverses mรฉthodes de recherche de voisinage approximatif simplement en changeant la chaรฎne de l'usine d'index.
21
+ Dans RVC, elle est utilisรฉe comme ceci :
22
+
23
+ ```python
24
+ index = faiss.index_factory(256, "IVF%s,Flat" % n_ivf)
25
+ ```
26
+
27
+ Parmi les arguments de index_factory, le premier est le nombre de dimensions du vecteur, le second est la chaรฎne de l'usine d'index, et le troisiรจme est la distance ร  utiliser.
28
+
29
+ Pour une notation plus dรฉtaillรฉe :
30
+ https://github.com/facebookresearch/faiss/wiki/The-index-factory
31
+
32
+ ## Index pour la distance
33
+ Il existe deux index typiques utilisรฉs comme similaritรฉ de l'incorporation comme suit :
34
+
35
+ - Distance euclidienne (METRIC_L2)
36
+ - Produit intรฉrieur (METRIC_INNER_PRODUCT)
37
+
38
+ La distance euclidienne prend la diffรฉrence au carrรฉ dans chaque dimension, somme les diffรฉrences dans toutes les dimensions, puis prend la racine carrรฉe. C'est la mรชme chose que la distance en 2D et 3D que nous utilisons au quotidien.
39
+ Le produit intรฉrieur n'est pas utilisรฉ comme index de similaritรฉ tel quel, et la similaritรฉ cosinus qui prend le produit intรฉrieur aprรจs avoir รฉtรฉ normalisรฉ par la norme L2 est gรฉnรฉralement utilisรฉe.
40
+
41
+ Lequel est le mieux dรฉpend du cas, mais la similaritรฉ cosinus est souvent utilisรฉe dans l'incorporation obtenue par word2vec et des modรจles de rรฉcupรฉration d'images similaires appris par ArcFace. Si vous voulez faire une normalisation l2 sur le vecteur X avec numpy, vous pouvez le faire avec le code suivant avec eps suffisamment petit pour รฉviter une division par 0.
42
+
43
+ ```python
44
+ X_normed = X / np.maximum(eps, np.linalg.norm(X, ord=2, axis=-1, keepdims=True))
45
+ ```
46
+
47
+ De plus, pour l'usine d'index, vous pouvez changer l'index de distance utilisรฉ pour le calcul en choisissant la valeur ร  passer comme troisiรจme argument.
48
+
49
+ ```python
50
+ index = faiss.index_factory(dimention, texte, faiss.METRIC_INNER_PRODUCT)
51
+ ```
52
+
53
+ ## IVF
54
+ IVF (Inverted file indexes) est un algorithme similaire ร  l'index inversรฉ dans la recherche en texte intรฉgral.
55
+ Lors de l'apprentissage, la cible de recherche est regroupรฉe avec kmeans, et une partition de Voronoi est effectuรฉe en utilisant le centre du cluster. Chaque point de donnรฉes est attribuรฉ ร  un cluster, nous crรฉons donc un dictionnaire qui permet de rechercher les points de donnรฉes ร  partir des clusters.
56
+
57
+ Par exemple, si des clusters sont attribuรฉs comme suit :
58
+ |index|Cluster|
59
+ |-----|-------|
60
+ |1|A|
61
+ |2|B|
62
+ |3|A|
63
+ |4|C|
64
+ |5|B|
65
+
66
+ L'index inversรฉ rรฉsultant ressemble ร  ceci :
67
+
68
+ |cluster|index|
69
+ |-------|-----|
70
+ |A|1, 3|
71
+ |B|2, 5|
72
+ |C|4|
73
+
74
+ Lors de la recherche, nous recherchons d'abord n_probe clusters parmi les clusters, puis nous calculons les distances pour les points de donnรฉes appartenant ร  chaque cluster.
75
+
76
+ # Recommandation de paramรจtre
77
+ Il existe des directives officielles sur la faรงon de choisir un index, je vais donc expliquer en consรฉquence.
78
+ https://github.com/facebookresearch/faiss/wiki/Guidelines-to-choose-an-index
79
+
80
+ Pour les ensembles de donnรฉes infรฉrieurs ร  1M, 4bit-PQ est la mรฉthode la plus efficace disponible dans faiss en avril 2023.
81
+ En combinant cela avec IVF, en rรฉduisant les candidats avec 4bit-PQ, et enfin en recalculant la distance avec un index prรฉcis, on peut le dรฉcrire en utilisant l'usine d'index suivante.
82
+
83
+ ```python
84
+ index = faiss.index_factory(256, "IVF1024,PQ128x4fs,RFlat")
85
+ ```
86
+
87
+ ## Paramรจtres recommandรฉs pour IVF
88
+ Considรฉrez le cas de trop d'IVF. Par exemple, si une quantification grossiรจre par IVF est effectuรฉe pour le nombre de donnรฉes, cela revient ร  une recherche exhaustive naรฏve et est inefficace.
89
+ Pour 1M ou moins, les valeurs IVF sont recommandรฉes entre 4*sqrt(N) ~ 16*sqrt(N) pour N nombre de points de donnรฉes.
90
+
91
+ Comme le temps de calcul augmente proportionnellement au nombre de n_probes, veuillez consulter la prรฉcision et choisir de maniรจre appropriรฉe. Personnellement, je ne pense pas que RVC ait besoin de tant de prรฉcision, donc n_probe = 1 est bien.
92
+
93
+ ## FastScan
94
+ FastScan est une mรฉthode qui permet d'approximer rapidement les distances par quantification de produit cartรฉsien en les effectuant dans les registres.
95
+ La quantification du produit cartรฉsien effectue un regroupement indรฉpendamment
96
+
97
+ pour chaque dimension d (gรฉnรฉralement d = 2) pendant l'apprentissage, calcule la distance entre les clusters ร  l'avance, et crรฉe une table de recherche. Au moment de la prรฉdiction, la distance de chaque dimension peut รชtre calculรฉe en O(1) en consultant la table de recherche.
98
+ Le nombre que vous spรฉcifiez aprรจs PQ spรฉcifie gรฉnรฉralement la moitiรฉ de la dimension du vecteur.
99
+
100
+ Pour une description plus dรฉtaillรฉe de FastScan, veuillez consulter la documentation officielle.
101
+ https://github.com/facebookresearch/faiss/wiki/Fast-accumulation-of-PQ-and-AQ-codes-(FastScan)
102
+
103
+ ## RFlat
104
+ RFlat est une instruction pour recalculer la distance approximative calculรฉe par FastScan avec la distance exacte spรฉcifiรฉe par le troisiรจme argument de l'usine d'index.
105
+ Lors de l'obtention de k voisins, k*k_factor points sont recalculรฉs.
docs/fr/faq_fr.md ADDED
@@ -0,0 +1,164 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Q1: Impossible de trouver le fichier index aprรจs "Entraรฎnement en un clic".
2
+ Si l'affichage indique "L'entraรฎnement est terminรฉ. Le programme est fermรฉ", alors le modรจle a รฉtรฉ formรฉ avec succรจs, et les erreurs subsรฉquentes sont fausses ;
3
+
4
+ L'absence d'un fichier index 'ajoutรฉ' aprรจs un entraรฎnement en un clic peut รชtre due au fait que le jeu d'entraรฎnement est trop grand, ce qui bloque l'ajout de l'index ; cela a รฉtรฉ rรฉsolu en utilisant un traitement par lots pour ajouter l'index, ce qui rรฉsout le problรจme de surcharge de mรฉmoire lors de l'ajout de l'index. Comme solution temporaire, essayez de cliquer ร  nouveau sur le bouton "Entraรฎner l'index".<br>
5
+
6
+ ## Q2: Impossible de trouver le modรจle dans โ€œInfรฉrence du timbreโ€ aprรจs l'entraรฎnement
7
+ Cliquez sur โ€œActualiser la liste des timbresโ€ et vรฉrifiez ร  nouveau ; si vous ne le voyez toujours pas, vรฉrifiez s'il y a des erreurs pendant l'entraรฎnement et envoyez des captures d'รฉcran de la console, de l'interface utilisateur web, et des logs/nom_de_l'expรฉrience/*.log aux dรฉveloppeurs pour une analyse plus approfondie.<br>
8
+
9
+ ## Q3: Comment partager un modรจle/Comment utiliser les modรจles d'autres personnes ?
10
+ Les fichiers pth stockรฉs dans rvc_root/logs/nom_de_l'expรฉrience ne sont pas destinรฉs ร  รชtre partagรฉs ou infรฉrรฉs, mais ร  stocker les points de contrรดle de l'expรฉrience pour la reproductibilitรฉ et l'entraรฎnement ultรฉrieur. Le modรจle ร  partager doit รชtre le fichier pth de 60+MB dans le dossier des poids ;
11
+
12
+ ร€ l'avenir, les poids/nom_de_l'expรฉrience.pth et les logs/nom_de_l'expรฉrience/ajoutรฉ_xxx.index seront fusionnรฉs en un seul fichier poids/nom_de_l'expรฉrience.zip pour รฉliminer le besoin d'une entrรฉe d'index manuelle ; partagez donc le fichier zip, et non le fichier pth, sauf si vous souhaitez continuer l'entraรฎnement sur une machine diffรฉrente ;
13
+
14
+ Copier/partager les fichiers pth de plusieurs centaines de Mo du dossier des logs au dossier des poids pour une infรฉrence forcรฉe peut entraรฎner des erreurs telles que des f0, tgt_sr, ou d'autres clรฉs manquantes. Vous devez utiliser l'onglet ckpt en bas pour sรฉlectionner manuellement ou automatiquement (si l'information se trouve dans les logs/nom_de_l'expรฉrience), si vous souhaitez inclure les informations sur la hauteur et les options de taux d'รฉchantillonnage audio cible, puis extraire le modรจle plus petit. Aprรจs extraction, il y aura un fichier pth de 60+ MB dans le dossier des poids, et vous pouvez actualiser les voix pour l'utiliser.<br>
15
+
16
+ ## Q4: Erreur de connexion.
17
+ Il se peut que vous ayez fermรฉ la console (fenรชtre de ligne de commande noire).<br>
18
+
19
+ ## Q5: WebUI affiche 'Expecting value: line 1 column 1 (char 0)'.
20
+ Veuillez dรฉsactiver le proxy systรจme LAN/proxy global puis rafraรฎchir.<br>
21
+
22
+ ## Q6: Comment s'entraรฎner et dรฉduire sans le WebUI ?
23
+ Script d'entraรฎnement :<br>
24
+ Vous pouvez d'abord lancer l'entraรฎnement dans WebUI, et les versions en ligne de commande de la prรฉparation du jeu de donnรฉes et de l'entraรฎnement seront affichรฉes dans la fenรชtre de message.<br>
25
+
26
+ Script d'infรฉrence :<br>
27
+ https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/myinfer.py<br>
28
+
29
+ Par exemple :<br>
30
+
31
+ runtime\python.exe myinfer.py 0 "E:\codes\py39\RVC-beta\todo-songs\1111.wav" "E:\codes\py39\logs\mi-test\added_IVF677_Flat_nprobe_7.index" rรฉcolte "test.wav" "weights/mi-test.pth" 0.6 cuda:0 True<br>
32
+
33
+ f0up_key=sys.argv[1]<br>
34
+ input_path=sys.argv[2]<br>
35
+ index_path=sys.argv[3]<br>
36
+ f0method=sys.argv[4]#rรฉcolte ou pm<br>
37
+ opt_path=sys.argv[5]<br>
38
+ model_path=sys.argv[6]<br>
39
+ index_rate=float(sys.argv[7])<br>
40
+ device=sys.argv[8]<br>
41
+ is_half=bool(sys.argv[9])<br>
42
+
43
+ ### Explication des arguments :
44
+
45
+ 1. **Numรฉro de voix cible** : `0` (dans cet exemple)
46
+ 2. **Chemin du fichier audio d'entrรฉe** : `"C:\ YOUR PATH FOR THE ROOT (RVC0813Nvidia)\INPUTS_VOCAL\vocal.wav"`
47
+ 3. **Chemin du fichier index** : `"C:\ YOUR PATH FOR THE ROOT (RVC0813Nvidia)\logs\Hagrid.index"`
48
+ 4. **Mรฉthode pour l'extraction du pitch (F0)** : `harvest` (dans cet exemple)
49
+ 5. **Chemin de sortie pour le fichier audio traitรฉ** : `"C:\ YOUR PATH FOR THE ROOT (RVC0813Nvidia)\INPUTS_VOCAL\test.wav"`
50
+ 6. **Chemin du modรจle** : `"C:\ YOUR PATH FOR THE ROOT (RVC0813Nvidia)\weights\HagridFR.pth"`
51
+ 7. **Taux d'index** : `0.6` (dans cet exemple)
52
+ 8. **Pรฉriphรฉrique pour l'exรฉcution (GPU/CPU)** : `cuda:0` pour une carte NVIDIA, par exemple.
53
+ 9. **Protection des droits d'auteur (True/False)**.
54
+
55
+ <!-- Pour myinfer nouveau models :
56
+
57
+ runtime\python.exe myinfer.py 0 "C:\ YOUR PATH FOR THE ROOT (RVC0813Nvidia)\INPUTS_VOCAL\vocal.wav" "C:\ YOUR PATH FOR THE ROOT (RVC0813Nvidia)\logs\Hagrid.index" harvest "C:\ YOUR PATH FOR THE ROOT (RVC0813Nvidia)\INPUTS_VOCAL\test.wav" "C:\ YOUR PATH FOR THE ROOT (RVC0813Nvidia)\weights\HagridFR.pth" 0.6 cuda:0 True 5 44100 44100 1.0 1.0 True
58
+
59
+
60
+ f0up_key=sys.argv[1]
61
+ input_path = sys.argv[2]
62
+ index_path = sys.argv[3]
63
+ f0method = sys.argv[4]
64
+ opt_path = sys.argv[5]
65
+ model_path = sys.argv[6]
66
+ index_rate = float(sys.argv[7])
67
+ device = sys.argv[8]
68
+ is_half = bool(sys.argv[9])
69
+ filter_radius = int(sys.argv[10])
70
+ tgt_sr = int(sys.argv[11])
71
+ resample_sr = int(sys.argv[12])
72
+ rms_mix_rate = float(sys.argv[13])
73
+ version = sys.argv[14]
74
+ protect = sys.argv[15].lower() == 'false' # change for true if needed
75
+
76
+ ### Explication des arguments :
77
+
78
+ 1. **Numรฉro de voix cible** : `0` (dans cet exemple)
79
+ 2. **Chemin du fichier audio d'entrรฉe** : `"C:\ YOUR PATH FOR THE ROOT (RVC0813Nvidia)\INPUTS_VOCAL\vocal.wav"`
80
+ 3. **Chemin du fichier index** : `"C:\ YOUR PATH FOR THE ROOT (RVC0813Nvidia)\logs\Hagrid.index"`
81
+ 4. **Mรฉthode pour l'extraction du pitch (F0)** : `harvest` (dans cet exemple)
82
+ 5. **Chemin de sortie pour le fichier audio traitรฉ** : `"C:\ YOUR PATH FOR THE ROOT (RVC0813Nvidia)\INPUTS_VOCAL\test.wav"`
83
+ 6. **Chemin du modรจle** : `"C:\ YOUR PATH FOR THE ROOT (RVC0813Nvidia)\weights\HagridFR.pth"`
84
+ 7. **Taux d'index** : `0.6` (dans cet exemple)
85
+ 8. **Pรฉriphรฉrique pour l'exรฉcution (GPU/CPU)** : `cuda:0` pour une carte NVIDIA, par exemple.
86
+ 9. **Protection des droits d'auteur (True/False)**.
87
+ 10. **Rayon du filtre** : `5` (dans cet exemple)
88
+ 11. **Taux d'รฉchantillonnage cible** : `44100` (dans cet exemple)
89
+ 12. **Taux d'รฉchantillonnage pour le rรฉรฉchantillonnage** : `44100` (dans cet exemple)
90
+ 13. **Taux de mixage RMS** : `1.0` (dans cet exemple)
91
+ 14. **Version** : `1.0` (dans cet exemple)
92
+ 15. **Protection** : `True` (dans cet exemple)
93
+
94
+ Assurez-vous de remplacer les chemins par ceux correspondant ร  votre configuration et d'ajuster les autres paramรจtres selon vos besoins.
95
+ -->
96
+
97
+ ## Q7: Erreur Cuda/Mรฉmoire Cuda รฉpuisรฉe.
98
+ Il y a une faible chance qu'il y ait un problรจme avec la configuration CUDA ou que le dispositif ne soit pas pris en charge ; plus probablement, il n'y a pas assez de mรฉmoire (manque de mรฉmoire).<br>
99
+
100
+ Pour l'entraรฎnement, rรฉduisez la taille du lot (si la rรฉduction ร  1 n'est toujours pas suffisante, vous devrez peut-รชtre changer la carte graphique) ; pour l'infรฉrence, ajustez les paramรจtres x_pad, x_query, x_center, et x_max dans le fichier config.py selon les besoins. Les cartes mรฉmoire de 4 Go ou moins (par exemple 1060(3G) et diverses cartes de 2 Go) peuvent รชtre abandonnรฉes, tandis que les cartes mรฉmoire de 4 Go ont encore une chance.<br>
101
+
102
+ ## Q8: Combien de total_epoch sont optimaux ?
103
+ Si la qualitรฉ audio du jeu d'entraรฎnement est mรฉdiocre et que le niveau de bruit est รฉlevรฉ, 20-30 รฉpoques sont suffisantes. Le fixer trop haut n'amรฉliorera pas la qualitรฉ audio de votre jeu d'entraรฎnement de faible qualitรฉ.<br>
104
+
105
+ Si la qualitรฉ audio du jeu d'entraรฎnement est รฉlevรฉe, le niveau de bruit est faible, et la durรฉe est suffisante, vous pouvez l'augmenter. 200 est acceptable (puisque l'entraรฎnement est rapide, et si vous รชtes capable de prรฉparer un jeu d'entraรฎnement de haute qualitรฉ, votre GPU peut probablement gรฉrer une durรฉe d'entraรฎnement plus longue sans problรจme).<br>
106
+
107
+ ## Q9: Quelle durรฉe de jeu d'entraรฎnement est nรฉcessaire ?
108
+ Un jeu d'environ 10 min ร  50 min est recommandรฉ.<br>
109
+
110
+ Avec une garantie de haute qualitรฉ sonore et de faible bruit de fond, plus peut รชtre ajoutรฉ si le timbre du jeu est uniforme.<br>
111
+
112
+ Pour un jeu d'entraรฎnement de haut niveau (ton maigre + ton distinctif), 5 min ร  10 min sont suffisantes.<br>
113
+
114
+ Il y a des personnes qui ont rรฉussi ร  s'entraรฎner avec des donnรฉes de 1 min ร  2 min, mais le succรจs n'est pas reproductible par d'autres et n'est pas trรจs informatif. <br>Cela nรฉcessite que le jeu d'entraรฎnement ait un timbre trรจs distinctif (par exemple, un son de fille d'anime aรฉrien ร  haute frรฉquence) et que la qualitรฉ de l'audio soit รฉlevรฉe ;
115
+ Aucune tentative rรฉussie n'a รฉtรฉ faite jusqu'ร  prรฉsent avec des donnรฉes de moins de 1 min. Cela n'est pas recommandรฉ.<br>
116
+
117
+ ## Q10: ร€ quoi sert le taux d'index et comment l'ajuster ?
118
+ Si la qualitรฉ tonale du modรจle prรฉ-entraรฎnรฉ et de la source d'infรฉrence est supรฉrieure ร  celle du jeu d'entraรฎnement, ils peuvent amรฉliorer la qualitรฉ tonale du rรฉsultat d'infรฉrence, mais au prix d'un possible biais tonal vers le ton du modรจle sous-jacent/source d'infรฉrence plutรดt que le ton du jeu d'entraรฎnement, ce qui est gรฉnรฉralement appelรฉ "fuite de ton".<br>
119
+
120
+ Le taux d'index est utilisรฉ pour rรฉduire/rรฉsoudre le problรจme de la fuite de timbre. Si le taux d'index est fixรฉ ร  1, thรฉoriquement il n'y a pas de fuite de timbre de la source d'infรฉrence et la qualitรฉ du timbre est plus biaisรฉe vers le jeu d'entraรฎnement. Si le jeu d'entraรฎnement a une qualitรฉ sonore infรฉrieure ร  celle de la source d'infรฉrence, alors un taux d'index plus รฉlevรฉ peut rรฉduire la qualitรฉ sonore. Le rรฉduire ร  0 n'a pas l'effet d'utiliser le mรฉlange de rรฉcupรฉration pour protรฉger les tons du jeu d'entraรฎnement.<br>
121
+
122
+ Si le jeu d'entraรฎnement a une bonne qualitรฉ audio et une longue durรฉe, augmentez le total_epoch, lorsque le modรจle lui-mรชme est moins susceptible de se rรฉfรฉrer ร  la source dรฉduite et au modรจle sous-jacent prรฉ-entraรฎnรฉ, et qu'il y a peu de "fuite de ton", le taux d'index n'est pas important et vous pouvez mรชme ne pas crรฉer/partager le fichier index.<br>
123
+
124
+ ## Q11: Comment choisir le gpu lors de l'infรฉrence ?
125
+ Dans le fichier config.py, sรฉlectionnez le numรฉro de carte aprรจs "device cuda:".<br>
126
+
127
+ La correspondance entre le numรฉro de carte et la carte graphique peut รชtre vue dans la section d'information de la carte graphique de l'onglet d'entraรฎnement.<br>
128
+
129
+ ## Q12: Comment utiliser le modรจle sauvegardรฉ au milieu de l'entraรฎnement ?
130
+ Sauvegardez via l'extraction de modรจle en bas de l'onglet de traitement ckpt.
131
+
132
+ ## Q13: Erreur de fichier/erreur de mรฉmoire (lors de l'entraรฎnement) ?
133
+ Il y a trop de processus et votre mรฉmoire n'est pas suffisante. Vous pouvez le corriger en :
134
+
135
+ 1. Diminuer l'entrรฉe dans le champ "Threads of CPU".
136
+
137
+ 2. Prรฉ-dรฉcouper le jeu d'entraรฎnement en fichiers audio plus courts.
138
+
139
+ ## Q14: Comment poursuivre l'entraรฎnement avec plus de donnรฉes
140
+
141
+ รฉtape 1 : mettre toutes les donnรฉes wav dans path2.
142
+
143
+ รฉtape 2 : exp_name2+path2 -> traiter le jeu de donnรฉes et extraire la caractรฉristique.
144
+
145
+ รฉtape 3 : copier les derniers fichiers G et D de exp_name1 (votre expรฉrience prรฉcรฉdente) dans le dossier exp_name2.
146
+
147
+ รฉtape 4 : cliquez sur "entraรฎner le modรจle", et il continuera l'entraรฎnement depuis le dรฉbut de votre รฉpoque de modรจle exp prรฉcรฉdente.
148
+
149
+ ## Q15: erreur ร  propos de llvmlite.dll
150
+
151
+ OSError: Impossible de charger le fichier objet partagรฉ : llvmlite.dll
152
+
153
+ FileNotFoundError: Impossible de trouver le module lib\site-packages\llvmlite\binding\llvmlite.dll (ou l'une de ses dรฉpendances). Essayez d'utiliser la syntaxe complรจte du constructeur.
154
+
155
+ Le problรจme se produira sous Windows, installez https://aka.ms/vs/17/release/vc_redist.x64.exe et il sera corrigรฉ.
156
+
157
+ ## Q16: RuntimeError: La taille รฉtendue du tensor (17280) doit correspondre ร  la taille existante (0) ร  la dimension non-singleton 1. Tailles cibles : [1, 17280]. Tailles des tensors : [0]
158
+
159
+ Supprimez les fichiers wav dont la taille est nettement infรฉrieure ร  celle des autres, et cela ne se reproduira plus. Ensuite, cliquez sur "entraรฎner le modรจle" et "entraรฎner l'index".
160
+
161
+ ## Q17: RuntimeError: La taille du tensor a (24) doit correspondre ร  la taille du tensor b (16) ร  la dimension non-singleton 2
162
+
163
+ Ne changez pas le taux d'รฉchantillonnage puis continuez l'entraรฎnement. S'il est nรฉcessaire de changer, le nom de l'expรฉrience doit รชtre modifiรฉ et le modรจle sera formรฉ ร  partir de zรฉro. Vous pouvez รฉgalement copier les hauteurs et caractรฉristiques (dossiers 0/1/2/2b) extraites la derniรจre fois pour accรฉlรฉrer le processus d'entraรฎnement.
164
+
docs/fr/training_tips_fr.md ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Instructions et conseils pour la formation RVC
2
+ ======================================
3
+ Ces conseils expliquent comment se dรฉroule la formation des donnรฉes.
4
+
5
+ # Flux de formation
6
+ Je vais expliquer selon les รฉtapes de l'onglet de formation de l'interface graphique.
7
+
8
+ ## รฉtape 1
9
+ Dรฉfinissez ici le nom de l'expรฉrience.
10
+
11
+ Vous pouvez รฉgalement dรฉfinir ici si le modรจle doit prendre en compte le pitch.
12
+ Si le modรจle ne considรจre pas le pitch, le modรจle sera plus lรฉger, mais pas adaptรฉ au chant.
13
+
14
+ Les donnรฉes de chaque expรฉrience sont placรฉes dans `/logs/nom-de-votre-experience/`.
15
+
16
+ ## รฉtape 2a
17
+ Charge et prรฉ-traite l'audio.
18
+
19
+ ### charger l'audio
20
+ Si vous spรฉcifiez un dossier avec de l'audio, les fichiers audio de ce dossier seront lus automatiquement.
21
+ Par exemple, si vous spรฉcifiez `C:Users\hoge\voices`, `C:Users\hoge\voices\voice.mp3` sera chargรฉ, mais `C:Users\hoge\voices\dir\voice.mp3` ne sera pas chargรฉ.
22
+
23
+ Comme ffmpeg est utilisรฉ en interne pour lire l'audio, si l'extension est prise en charge par ffmpeg, elle sera lue automatiquement.
24
+ Aprรจs la conversion en int16 avec ffmpeg, convertir en float32 et normaliser entre -1 et 1.
25
+
26
+ ### dรฉbruitage
27
+ L'audio est lissรฉ par filtfilt de scipy.
28
+
29
+ ### Sรฉparation audio
30
+ Tout d'abord, l'audio d'entrรฉe est divisรฉ en dรฉtectant des parties de silence qui durent plus d'une certaine pรฉriode (max_sil_kept = 5 secondes ?). Aprรจs avoir sรฉparรฉ l'audio sur le silence, sรฉparez l'audio toutes les 4 secondes avec un chevauchement de 0,3 seconde. Pour l'audio sรฉparรฉ en 4 secondes, aprรจs normalisation du volume, convertir le fichier wav en `/logs/nom-de-votre-experience/0_gt_wavs` puis le convertir ร  un taux d'รฉchantillonnage de 16k dans `/logs/nom-de-votre-experience/1_16k_wavs` sous forme de fichier wav.
31
+
32
+ ## รฉtape 2b
33
+ ### Extraire le pitch
34
+ Extrait les informations de pitch des fichiers wav. Extraire les informations de pitch (=f0) en utilisant la mรฉthode intรฉgrรฉe dans parselmouth ou pyworld et les sauvegarder dans `/logs/nom-de-votre-experience/2a_f0`. Convertissez ensuite logarithmiquement les informations de pitch en un entier entre 1 et 255 et sauvegardez-le dans `/logs/nom-de-votre-experience/2b-f0nsf`.
35
+
36
+ ### Extraire l'empreinte de caractรฉristique
37
+ Convertissez le fichier wav en incorporation ร  l'avance en utilisant HuBERT. Lisez le fichier wav sauvegardรฉ dans `/logs/nom-de-votre-experience/1_16k_wavs`, convertissez le fichier wav en caractรฉristiques de dimension 256 avec HuBERT, et sauvegardez au format npy dans `/logs/nom-de-votre-experience/3_feature256`.
38
+
39
+ ## รฉtape 3
40
+ former le modรจle.
41
+ ### Glossaire pour les dรฉbutants
42
+ Dans l'apprentissage profond, l'ensemble de donnรฉes est divisรฉ et l'apprentissage progresse petit ร  petit. Dans une mise ร  jour de modรจle (รฉtape), les donnรฉes de batch_size sont rรฉcupรฉrรฉes et des prรฉdictions et corrections d'erreur sont effectuรฉes. Faire cela une fois pour un ensemble de donnรฉes compte comme une รฉpoque.
43
+
44
+ Par consรฉquent, le temps d'apprentissage est le temps d'apprentissage par รฉtape x (le nombre de donnรฉes dans l'ensemble de donnรฉes / taille du lot) x le nombre d'รฉpoques. En gรฉnรฉral, plus la taille du lot est grande, plus l'apprentissage devient stable (temps d'apprentissage par รฉtape รท taille du lot) devient plus petit, mais il utilise plus de mรฉmoire GPU. La RAM GPU peut รชtre vรฉrifiรฉe avec la commande nvidia-smi. L'apprentissage peut รชtre effectuรฉ en peu de temps en augmentant la taille du lot autant que possible selon la machine de l'environnement d'exรฉcution.
45
+
46
+ ### Spรฉcifier le modรจle prรฉ-entraรฎnรฉ
47
+ RVC commence ร  former le modรจle ร  partir de poids prรฉ-entraรฎnรฉs plutรดt que de zรฉro, il peut donc รชtre formรฉ avec un petit ensemble de donnรฉes.
48
+
49
+ Par dรฉfaut :
50
+
51
+ - Si vous considรฉrez le pitch, il charge `rvc-location/pretrained/f0G40k.pth` et `rvc-location/pretrained/f0D40k.pth`.
52
+ - Si vous ne considรฉrez pas le pitch, il charge `rvc-location/pretrained/f0G40k.pth` et `rvc-location/pretrained/f0D40k.pth`.
53
+
54
+ Lors de l'apprentissage, les paramรจtres du modรจle sont sauvegardรฉs dans `logs/nom-de-votre-experience/G_{}.pth` et `logs/nom-de-votre-experience/D_{}.pth` pour chaque save_every_epoch, mais en spรฉcifiant ce chemin, vous pouvez dรฉmarrer l'apprentissage. Vous pouvez redรฉmarrer ou commencer ร  former ร  partir de poids de modรจle appris lors d'une expรฉrience diffรฉrente.
55
+
56
+ ### Index d'apprentissage
57
+ RVC sauvegarde les valeurs de caractรฉristique HuBERT utilisรฉes lors de la formation, et pendant l'infรฉrence, recherche les valeurs de caractรฉristique qui sont similaires aux valeurs de caractรฉristique utilisรฉes lors de l'apprentissage pour effectuer l'infรฉrence. Afin d'effectuer cette recherche ร  haute vitesse, l'index est appris ร  l'avance.
58
+ Pour l'apprentissage d'index, nous utilisons la bibliothรจque de recherche de voisinage approximatif faiss. Lisez la valeur de caractรฉristique de `logs/nom-de-votre-experience/3_feature256` et utilisez-la pour apprendre l'index, et sauvegardez-la sous `logs/nom-de-votre-experience/add_XXX.index`.
59
+
60
+ (ร€ partir de la version de mise ร  jour 20230428, elle est lue ร  partir de l'index, et la sauvegarde / spรฉcification n'est plus nรฉcessaire.)
61
+
62
+ ### Description du bouton
63
+ - Former le modรจle : aprรจs avoir exรฉcutรฉ l'รฉtape 2b, appuyez sur ce bouton pour former le modรจle.
64
+ - Former l'index de caractรฉristique : aprรจs avoir formรฉ le modรจle, effectuez un apprentissage d'index.
65
+ - Formation en un clic : รฉtape 2b, formation du modรจle et formation de l'index de caractรฉristique tout d'un coup.```
docs/jp/README.ja.md ADDED
@@ -0,0 +1,203 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div align="center">
2
+
3
+ # Retrieval-based-Voice-Conversion-WebUI
4
+ VITSใซๅŸบใฅใไฝฟใ„ใ‚„ใ™ใ„้Ÿณๅฃฐๅค‰ๆ›๏ผˆvoice changer๏ผ‰framework
5
+
6
+
7
+
8
+ [![madewithlove](https://img.shields.io/badge/made_with-%E2%9D%A4-red?style=for-the-badge&labelColor=orange)](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI)
9
+
10
+ ![moe](https://counter.seku.su/cmoe?name=rvc&theme=r34)
11
+
12
+ [![Licence](https://img.shields.io/github/license/fumiama/Retrieval-based-Voice-Conversion-WebUI?style=for-the-badge)](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/blob/main/LICENSE)
13
+ [![Huggingface](https://img.shields.io/badge/๐Ÿค—%20-Spaces-yellow.svg?style=for-the-badge)](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/)
14
+
15
+ [![Discord](https://img.shields.io/badge/RVC%20Developers-Discord-7289DA?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/HcsmBBGyVk)
16
+
17
+ [**ใ‚ˆใใ‚ใ‚‹่ณชๅ•**](./faq_ja.md) | [**AutoDLใงๆŽจ่ซ–(ไธญๅ›ฝ่ชžใฎใฟ)**](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/wiki/Autodl%E8%AE%AD%E7%BB%83RVC%C2%B7AI%E6%AD%8C%E6%89%8B%E6%95%99%E7%A8%8B) | [**ๅฏพ็…งๅฎŸ้จ“่จ˜้Œฒ**](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/wiki/%E5%AF%B9%E7%85%A7%E5%AE%9E%E9%AA%8C%C2%B7%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95) | [**ใ‚ชใƒณใƒฉใ‚คใƒณใƒ‡ใƒข(ไธญๅ›ฝ่ชžใฎใฟ)**](https://modelscope.cn/studios/FlowerCry/RVCv2demo)
18
+
19
+ [**English**](../en/README.en.md) | [**ไธญๆ–‡็ฎ€ไฝ“**](../../README.md) | [**ๆ—ฅๆœฌ่ชž**](../jp/README.ja.md) | [**ํ•œ๊ตญ์–ด**](../kr/README.ko.md) ([**้Ÿ“ๅœ‹่ชž**](../kr/README.ko.han.md)) | [**Franรงais**](../fr/README.fr.md) | [**Tรผrkรงe**](../tr/README.tr.md) | [**Portuguรชs**](../pt/README.pt.md)
20
+
21
+ </div>
22
+
23
+ > ่‘—ไฝœๆจฉไพตๅฎณใ‚’ๅฟƒ้…ใ™ใ‚‹ใ“ใจใชใไฝฟ็”จใงใใ‚‹ใ‚ˆใ†ใ€็ด„ 50 ๆ™‚้–“ใฎ้ซ˜ๅ“่ณชใชใ‚ชใƒผใƒ—ใƒณใ‚ฝใƒผใ‚นใƒ‡ใƒผใ‚ฟใ‚ปใƒƒใƒˆใ‚’ไฝฟ็”จใ—ใ€ๅŸบๅบ•ใƒขใƒ‡ใƒซใ‚’ๅญฆ็ฟ’ใ—ๅ‡บใ—ใพใ—ใŸใ€‚
24
+
25
+ > RVCv3 ใฎๅŸบๅบ•ใƒขใƒ‡ใƒซใ‚’ใ”ๆœŸๅพ…ใใ ใ•ใ„ใ€‚ใ‚ˆใ‚Šๅคงใใชใƒ‘ใƒฉใƒกใƒผใ‚ฟใ€ใ‚ˆใ‚Šๅคงใใชใƒ‡ใƒผใ‚ฟใ€ใ‚ˆใ‚Š่‰ฏใ„ๅŠนๆžœใ‚’ๆไพ›ใ—ใ€ๅŸบๆœฌ็š„ใซๅŒๆง˜ใฎๆŽจ่ซ–้€Ÿๅบฆใ‚’็ถญๆŒใ—ใชใŒใ‚‰ๅญฆ็ฟ’ใซๅฟ…่ฆใชใƒ‡ใƒผใ‚ฟ้‡ใฏใ‚ˆใ‚Šๅฐ‘ใชใใชใ‚Šใพใ™ใ€‚
26
+
27
+ > ใƒขใƒ‡ใƒซใ‚„็ตฑๅˆใƒ‘ใƒƒใ‚ฑใƒผใ‚ธใ‚’ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใ‚„ใ™ใ„[RVC-Models-Downloader](https://github.com/fumiama/RVC-Models-Downloader)ใฎใ”ๅˆฉ็”จใŒใŠๅ‹งใ‚ใงใ™ใ€‚
28
+
29
+ | ๅญฆ็ฟ’ใƒปๆŽจ่ซ– |
30
+ | :--------: |
31
+ | ![web](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/assets/41315874/17e48404-2627-4fad-a0ec-65f9065aeade) |
32
+
33
+ | ๅณๆ™‚้Ÿณๅฃฐๅค‰ๆ› |
34
+ | :---------: |
35
+ | ![realtime-gui](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/assets/41315874/95b36866-b92d-40c7-b5db-6a35ca5caeac) |
36
+
37
+ ## ใฏใ˜ใ‚ใซ
38
+
39
+ ๆœฌใƒชใƒใ‚ธใƒˆใƒชใซใฏไธ‹่จ˜ใฎ็‰นๅพดใŒใ‚ใ‚Šใพใ™ใ€‚
40
+
41
+ - Top1 ๆคœ็ดขใ‚’็”จใ„ใ‚‹ใ“ใจใงใ€็”Ÿใฎ็‰นๅพด้‡ใ‚’ๅญฆ็ฟ’็”จใƒ‡ใƒผใ‚ฟใ‚ปใƒƒใƒˆ็‰นๅพด้‡ใซๅค‰ๆ›ใ—ใ€ใƒˆใƒผใƒณใƒชใƒผใ‚ฑใƒผใ‚ธใ‚’ๅ‰Šๆธ›ใ—ใพใ™ใ€‚
42
+ - ๆฏ”่ผƒ็š„่ฒงๅผฑใช GPU ใงใ‚‚ใ€้ซ˜้€Ÿใ‹ใค็ฐกๅ˜ใซๅญฆ็ฟ’ใงใใพใ™ใ€‚
43
+ - ๅฐ‘้‡ใฎใƒ‡ใƒผใ‚ฟใ‚ปใƒƒใƒˆใ‹ใ‚‰ใงใ‚‚ใ€ๆฏ”่ผƒ็š„่‰ฏใ„็ตๆžœใ‚’ๅพ—ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚๏ผˆ10 ๅˆ†ไปฅไธŠใฎใƒŽใ‚คใ‚บใฎๅฐ‘ใชใ„้Ÿณๅฃฐใ‚’ๆŽจๅฅจใ—ใพใ™ใ€‚๏ผ‰
44
+ - ใƒขใƒ‡ใƒซใ‚’่žๅˆใ™ใ‚‹ใ“ใจใงใ€้Ÿณๅฃฐใ‚’ๆททใœใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚๏ผˆckpt processing ใ‚ฟใƒ–ใฎใ€ckpt merge ใ‚’ไฝฟ็”จใ—ใพใ™ใ€‚๏ผ‰
45
+ - ไฝฟใ„ใ‚„ใ™ใ„ WebUIใ€‚
46
+ - UVR5 Model ใ‚‚ๅซใ‚“ใงใ„ใ‚‹ใŸใ‚ใ€ไบบใฎๅฃฐใจ BGM ใ‚’็ด ๆ—ฉใๅˆ†้›ขใงใใพใ™ใ€‚
47
+ - ๆœ€ๅ…ˆ็ซฏใฎ[ไบบ้–“ใฎๅฃฐใฎใƒ”ใƒƒใƒๆŠฝๅ‡บใ‚ขใƒซใ‚ดใƒชใ‚บใƒ  InterSpeech2023-RMVPE](#ๅ‚็…งใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆ)ใ‚’ไฝฟ็”จใ—ใฆ็„กๅฃฐ้Ÿณๅ•้กŒใ‚’่งฃๆฑบใ—ใพใ™ใ€‚ๅŠนๆžœใฏๆœ€้ซ˜๏ผˆ่‘—ใ—ใ๏ผ‰ใงใ€crepe_full ใ‚ˆใ‚Šใ‚‚้€Ÿใใ€ใƒชใ‚ฝใƒผใ‚นไฝฟ็”จใŒๅฐ‘ใชใ„ใงใ™ใ€‚
48
+ - AMD GPU ใจ Intel GPU ใฎๅŠ ้€Ÿใ‚ตใƒใƒผใƒˆ
49
+
50
+ ใƒ‡ใƒขๅ‹•็”ปใฏ[ใ“ใกใ‚‰](https://www.bilibili.com/video/BV1pm4y1z7Gm/)ใงใ”่ฆงใใ ใ•ใ„ใ€‚
51
+
52
+ ## ็’ฐๅขƒๆง‹็ฏ‰
53
+ ### Python ใƒใƒผใ‚ธใƒงใƒณๅˆถ้™
54
+ > conda ใง Python ็’ฐๅขƒใ‚’็ฎก็†ใ™ใ‚‹ใ“ใจใŒใŠๅ‹งใ‚ใงใ™
55
+
56
+ > ใƒใƒผใ‚ธใƒงใƒณๅˆถ้™ใฎๅŽŸๅ› ใฏใ“ใฎ [bug](https://github.com/facebookresearch/fairseq/issues/5012) ใ‚’ๅ‚็…งใ—ใฆใใ ใ•ใ„ใ€‚
57
+
58
+ ```bash
59
+ python --version # 3.8 <= Python < 3.11
60
+ ```
61
+
62
+ ### Linux/MacOS ใƒฏใƒณใ‚ฏใƒชใƒƒใ‚ฏไพๅญ˜้–ขไฟ‚ใ‚คใƒณใ‚นใƒˆใƒผใƒซใƒป่ตทๅ‹•ใ™ใ‚‹ใ‚นใ‚ฏใƒชใƒ—ใƒˆ
63
+ ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฎใƒซใƒผใƒˆใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชใง`run.sh`ใ‚’ๅฎŸ่กŒใ™ใ‚‹ใ ใ‘ใงใ€`venv`ไปฎๆƒณ็’ฐๅขƒใ‚’ไธ€ๆ‹ฌ่จญๅฎšใ—ใ€ๅฟ…่ฆใชไพๅญ˜้–ขไฟ‚ใ‚’่‡ชๅ‹•็š„ใซใ‚คใƒณใ‚นใƒˆใƒผใƒซใ—ใ€ใƒกใ‚คใƒณใƒ—ใƒญใ‚ฐใƒฉใƒ ใ‚’่ตทๅ‹•ใงใใพใ™ใ€‚
64
+ ```bash
65
+ sh ./run.sh
66
+ ```
67
+
68
+ ### ไพๅญ˜้–ขไฟ‚ใฎใƒžใƒ‹ใƒฅใ‚ขใƒซใ‚คใƒณใ‚นใƒˆใƒฌใƒผใ‚ทใƒงใƒณ
69
+ 1. `pytorch`ใจใใฎใ‚ณใ‚ขไพๅญ˜้–ขไฟ‚ใ‚’ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ—ใพใ™ใ€‚ใ™ใงใซใ‚คใƒณใ‚นใƒˆใƒผใƒซใ•ใ‚Œใฆใ„ใ‚‹ๅ ดๅˆใฏ่ฆ‹้€ใ‚Šใงใใพใ™ใ€‚ๅ‚่€ƒ: https://pytorch.org/get-started/locally/
70
+ ```bash
71
+ pip install torch torchvision torchaudio
72
+ ```
73
+ 2. ใ‚‚ใ—ใ€Windows + Nvidia Ampere (RTX30xx)ใฎๅ ดๅˆใ€#21 ใฎ็ตŒ้จ“ใซๅŸบใฅใใ€pytorchใฎๅฏพๅฟœใ™ใ‚‹ CUDA ใƒใƒผใ‚ธใƒงใƒณใ‚’ๆŒ‡ๅฎšใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚
74
+ ```bash
75
+ pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117
76
+ ```
77
+ 3. ่‡ชๅˆ†ใฎ GPU ใซๅฏพๅฟœใ™ใ‚‹ไพๅญ˜้–ขไฟ‚ใ‚’ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ—ใพใ™ใ€‚
78
+ - Nvidia GPU
79
+ ```bash
80
+ pip install -r requirements/main.txt
81
+ ```
82
+ - AMD/Intel GPU
83
+ ```bash
84
+ pip install -r requirements/dml.txt
85
+ ```
86
+ - AMD ROCM (Linux)
87
+ ```bash
88
+ pip install -r requirements/amd.txt
89
+ ```
90
+ - Intel IPEX (Linux)
91
+ ```bash
92
+ pip install -r requirements/ipex.txt
93
+ ```
94
+
95
+ ## ใใฎไป–ใฎใƒ‡ใƒผใ‚ฟใ‚’ๆบ–ๅ‚™
96
+
97
+ ### 1. ใ‚ขใ‚ปใƒƒใƒˆ
98
+ > RVCใฏใ€`assets`ใƒ•ใ‚ฉใƒซใƒ€ใซใ‚ใ‚‹ๅนพใคใ‹ใฎใƒขใƒ‡ใƒซใƒชใ‚ฝใƒผใ‚นใงๆŽจ่ซ–ใƒปๅญฆ็ฟ’ใ™ใ‚‹ใ“ใจใŒๅฟ…่ฆใงใ™ใ€‚
99
+ #### ใƒชใ‚ฝใƒผใ‚นใฎ่‡ชๅ‹•ใƒใ‚งใƒƒใ‚ฏ/ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ๏ผ‰
100
+ > ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใงใฏใ€RVC ใฏไธปใƒ—ใƒญใ‚ฐใƒฉใƒ ใฎ่ตทๅ‹•ๆ™‚ใซๅฟ…่ฆใชใƒชใ‚ฝใƒผใ‚นใฎๅฎŒๅ…จๆ€งใ‚’่‡ชๅ‹•็š„ใซใƒใ‚งใƒƒใ‚ฏใ—ใงใใพใ™ใ€‚
101
+
102
+ > ใƒชใ‚ฝใƒผใ‚นใŒไธๅฎŒๅ…จใงใ‚‚ใ€ใƒ—ใƒญใ‚ฐใƒฉใƒ ใฏ่ตทๅ‹•ใ—็ถšใ‘ใพใ™ใ€‚
103
+
104
+ - ใ™ในใฆใฎใƒชใ‚ฝใƒผใ‚นใ‚’ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใŸใ„ๅ ดๅˆใฏใ€`--update`ใƒ‘ใƒฉใƒกใƒผใ‚ฟใ‚’่ฟฝๅŠ ใ—ใฆใใ ใ•ใ„ใ€‚
105
+ - ่ตทๅ‹•ๆ™‚ใฎใƒชใ‚ฝใƒผใ‚นๅฎŒๅ…จๆ€งใƒใ‚งใƒƒใ‚ฏใ‚’ไธ่ฆใฎๅ ดๅˆใฏใ€`--nocheck`ใƒ‘ใƒฉใƒกใƒผใ‚ฟใ‚’่ฟฝๅŠ ใ—ใฆใใ ใ•ใ„ใ€‚
106
+
107
+ #### ใƒชใ‚ฝใƒผใ‚นใฎใƒžใƒ‹ใƒฅใ‚ขใƒซใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰
108
+ > ใ™ในใฆใฎใƒชใ‚ฝใƒผใ‚นใƒ•ใ‚กใ‚คใƒซใฏ[Hugging Face space](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/)ใซใ‚ใ‚Šใพใ™ใ€‚
109
+
110
+ > `tools`ใƒ•ใ‚ฉใƒซใƒ€ใงใใ‚Œใ‚‰ใ‚’ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ™ใ‚‹ใ‚นใ‚ฏใƒชใƒ—ใƒˆใ‚’่ฆ‹ใคใ‘ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚
111
+
112
+ > ใƒขใƒ‡ใƒซ/็ตฑๅˆใƒ‘ใƒƒใ‚ฑใƒผใ‚ธ/ใƒ„ใƒผใƒซใฎไธ€ๆ‹ฌใƒ€ใ‚ฆใƒณใƒญใƒผใƒ€ใƒผใ€[RVC-Models-Downloader](https://github.com/fumiama/RVC-Models-Downloader)ใ‚‚ไฝฟ็”จใงใใพใ™ใ€‚
113
+
114
+ ไปฅไธ‹ใฏใ€RVCใŒๅฟ…่ฆใจใ™ใ‚‹ใ™ในใฆใฎไบ‹ๅ‰ใƒขใƒ‡ใƒซใƒ‡ใƒผใ‚ฟใ‚„ใใฎไป–ใฎใƒ•ใ‚กใ‚คใƒซใฎๅๅ‰ใ‚’ๅซใ‚€ใƒชใ‚นใƒˆใงใ™ใ€‚
115
+
116
+ - ./assets/hubert/hubert_base.pt
117
+ ```bash
118
+ rvcmd assets/hubert # RVC-Models-Downloader command
119
+ ```
120
+ - ./assets/pretrained
121
+ ```bash
122
+ rvcmd assets/v1 # RVC-Models-Downloader command
123
+ ```
124
+ - ./assets/uvr5_weights
125
+ ```bash
126
+ rvcmd assets/uvr5 # RVC-Models-Downloader command
127
+ ```
128
+ v2ใƒใƒผใ‚ธใƒงใƒณใฎใƒขใƒ‡ใƒซใ‚’ไฝฟ็”จใ—ใŸใ„ๅ ดๅˆใฏใ€่ฟฝๅŠ ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใŒๅฟ…่ฆใงใ™ใ€‚
129
+
130
+ - ./assets/pretrained_v2
131
+ ```bash
132
+ rvcmd assets/v2 # RVC-Models-Downloader command
133
+ ```
134
+
135
+ ### 2. RMVPEไบบๅฃฐ้Ÿณ้ซ˜ๆŠฝๅ‡บใ‚ขใƒซใ‚ดใƒชใ‚บใƒ ใซๅฟ…่ฆใชใƒ•ใ‚กใ‚คใƒซใฎใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰
136
+
137
+ ๆœ€ๆ–ฐใฎRMVPEไบบๅฃฐ้Ÿณ้ซ˜ๆŠฝๅ‡บใ‚ขใƒซใ‚ดใƒชใ‚บใƒ ใ‚’ไฝฟ็”จใ—ใŸใ„ๅ ดๅˆใฏใ€้Ÿณ้ซ˜ๆŠฝๅ‡บใƒขใƒ‡ใƒซใ‚’ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใ€`assets/rmvpe`ใซ้…็ฝฎใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚
138
+
139
+ - [rmvpe.pt](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.pt)
140
+ ```bash
141
+ rvcmd assets/rmvpe # RVC-Models-Downloader command
142
+ ```
143
+
144
+ #### RMVPE(dml็’ฐๅขƒ)ใฎใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰๏ผˆใ‚ชใƒ—ใ‚ทใƒงใƒณใ€AMD/Intel GPU ใƒฆใƒผใ‚ถใƒผ๏ผ‰
145
+
146
+ - [rmvpe.onnx](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.onnx)
147
+ ```bash
148
+ rvcmd assets/rmvpe # RVC-Models-Downloader command
149
+ ```
150
+
151
+ ### 3. AMD ROCM๏ผˆใ‚ชใƒ—ใ‚ทใƒงใƒณใ€Linuxใฎใฟ๏ผ‰
152
+
153
+ AMDใฎRocmๆŠ€่ก“ใ‚’ๅŸบใซLinuxใ‚ทใ‚นใƒ†ใƒ ใงRVCใ‚’ๅฎŸ่กŒใ—ใŸใ„ๅ ดๅˆใฏใ€ใพใš[ใ“ใ“](https://rocm.docs.amd.com/en/latest/deploy/linux/os-native/install.html)ใงๅฟ…่ฆใชใƒ‰ใƒฉใ‚คใƒใ‚’ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ—ใฆใใ ใ•ใ„ใ€‚
154
+
155
+ Arch Linuxใ‚’ไฝฟ็”จใ—ใฆใ„ใ‚‹ๅ ดๅˆใฏใ€pacmanใ‚’ไฝฟ็”จใ—ใฆๅฟ…่ฆใชใƒ‰ใƒฉใ‚คใƒใ‚’ใ‚คใƒณใ‚นใƒˆใƒผใƒซใงใใพใ™ใ€‚
156
+ ````
157
+ pacman -S rocm-hip-sdk rocm-opencl-sdk
158
+ ````
159
+ ไธ€้ƒจใฎใ‚ฐใƒฉใƒ•ใ‚ฃใƒƒใ‚ฏใ‚ซใƒผใƒ‰ใƒขใƒ‡ใƒซใงใฏใ€ไปฅไธ‹ใฎใ‚ˆใ†ใช็’ฐๅขƒๅค‰ๆ•ฐใ‚’่ฟฝๅŠ ใง่จญๅฎšใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚‹ใ‹ใ‚‚ใ—ใ‚Œใพใ›ใ‚“๏ผˆไพ‹๏ผšRX6700XT๏ผ‰ใ€‚
160
+ ````
161
+ export ROCM_PATH=/opt/rocm
162
+ export HSA_OVERRIDE_GFX_VERSION=10.3.0
163
+ ````
164
+ ใพใŸใ€็พๅœจใฎใƒฆใƒผใ‚ถใƒผใŒ`render`ใŠใ‚ˆใณ`video`ใƒฆใƒผใ‚ถใƒผใ‚ฐใƒซใƒผใƒ—ใซๆ‰€ๅฑžใ—ใฆใ„ใ‚‹ใ“ใจใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚
165
+ ````
166
+ sudo usermod -aG render $USERNAME
167
+ sudo usermod -aG video $USERNAME
168
+ ````
169
+
170
+ ## ๅˆฉ็”จ้–‹ๅง‹
171
+ ### ็›ดๆŽฅ่ตทๅ‹•
172
+ ไปฅไธ‹ใฎใ‚ณใƒžใƒณใƒ‰ใง WebUI ใ‚’่ตทๅ‹•ใ—ใพใ™
173
+ ```bash
174
+ python web.py
175
+ ```
176
+ ### Linux/MacOS
177
+ ```bash
178
+ ./run.sh
179
+ ```
180
+ ### IPEX ๆŠ€่ก“ใŒๅฟ…่ฆใช Intel GPU ใƒฆใƒผใ‚ถใƒผๅ‘ใ‘(Linux ใฎใฟ)
181
+ ```bash
182
+ source /opt/intel/oneapi/setvars.sh
183
+ ./run.sh
184
+ ```
185
+ ### ็ตฑๅˆใƒ‘ใƒƒใ‚ฑใƒผใ‚ธใฎไฝฟ็”จ (Windowsใฎใฟ)
186
+ `RVC-beta.7z`ใ‚’ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใฆ่งฃๅ‡ใ—ใ€`go-web.bat`ใ‚’ใƒ€ใƒ–ใƒซใ‚ฏใƒชใƒƒใ‚ฏใ€‚
187
+ ```bash
188
+ rvcmd packs/general/latest # RVC-Models-Downloader command
189
+ ```
190
+
191
+ ## ๅ‚่€ƒใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆ
192
+ - [ContentVec](https://github.com/auspicious3000/contentvec/)
193
+ - [VITS](https://github.com/jaywalnut310/vits)
194
+ - [HIFIGAN](https://github.com/jik876/hifi-gan)
195
+ - [Gradio](https://github.com/gradio-app/gradio)
196
+ - [Ultimate Vocal Remover](https://github.com/Anjok07/ultimatevocalremovergui)
197
+ - [audio-slicer](https://github.com/openvpi/audio-slicer)
198
+ - [Vocal pitch extraction:RMVPE](https://github.com/Dream-High/RMVPE)
199
+ - ไบ‹ๅ‰ๅญฆ็ฟ’ใ•ใ‚ŒใŸใƒขใƒ‡ใƒซใฏ[yxlllc](https://github.com/yxlllc/RMVPE)ใจ[RVC-Boss](https://github.com/RVC-Boss)ใซใ‚ˆใฃใฆๅญฆ็ฟ’ใ•ใ‚Œใ€ใƒ†ใ‚นใƒˆใ•ใ‚Œใพใ—ใŸใ€‚
200
+
201
+ ## ใ™ในใฆใฎ่ฒข็Œฎ่€…ใฎๅŠชๅŠ›ใซๆ„Ÿ่ฌใ—ใพใ™
202
+
203
+ [![contributors](https://contrib.rocks/image?repo=fumiama/Retrieval-based-Voice-Conversion-WebUI)](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/graphs/contributors)
docs/jp/faiss_tips_ja.md ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ faiss tuning TIPS
2
+ ==================
3
+ # about faiss
4
+ faissใฏfacebook researchใฎ้–‹็™บใ™ใ‚‹ใ€ๅฏ†ใชใƒ™ใ‚ฏใƒˆใƒซใซๅฏพใ™ใ‚‹่ฟ‘ๅ‚ๆŽข็ดขใ‚’ใพใจใ‚ใŸใƒฉใ‚คใƒ–ใƒฉใƒชใงใ€ๅคšใใฎ่ฟ‘ไผผ่ฟ‘ๅ‚ๆŽข็ดขใฎๆ‰‹ๆณ•ใ‚’ๅŠน็Ž‡็š„ใซๅฎŸ่ฃ…ใ—ใฆใ„ใพใ™ใ€‚
5
+ ่ฟ‘ไผผ่ฟ‘ๅ‚ๆŽข็ดขใฏใ‚ใ‚‹็จ‹ๅบฆ็ฒพๅบฆใ‚’็Š ็‰ฒใซใ—ใชใŒใ‚‰้ซ˜้€Ÿใซ้กžไผผใ™ใ‚‹ใƒ™ใ‚ฏใƒˆใƒซใ‚’ๆŽขใ—ใพใ™ใ€‚
6
+
7
+ ## faiss in RVC
8
+ RVCใงใฏHuBERTใงๅค‰ๆ›ใ—ใŸ็‰นๅพด้‡ใฎEmbeddingใซๅฏพใ—ใ€ๅญฆ็ฟ’ใƒ‡ใƒผใ‚ฟใ‹ใ‚‰็”Ÿๆˆใ•ใ‚ŒใŸEmbeddingใจ้กžไผผใ™ใ‚‹ใ‚‚ใฎใ‚’ๆคœ็ดขใ—ใ€ๆททใœใ‚‹ใ“ใจใงใ‚ˆใ‚Šๅ…ƒใฎ้Ÿณๅฃฐใซ่ฟ‘ใ„ๅค‰ๆ›ใ‚’ๅฎŸ็พใ—ใฆใ„ใพใ™ใ€‚ใŸใ ใ€ใ“ใฎๆคœ็ดขใฏๆ„š็›ดใซ่กŒใ†ใจๆ™‚้–“ใŒใ‹ใ‹ใ‚‹ใŸใ‚ใ€่ฟ‘ไผผ่ฟ‘ๅ‚ๆŽข็ดขใ‚’็”จใ„ใ‚‹ใ“ใจใง้ซ˜้€Ÿใชๅค‰ๆ›ใ‚’ๅฎŸ็พใ—ใฆใ„ใพใ™ใ€‚
9
+
10
+ # ๅฎŸ่ฃ…ใฎoverview
11
+ ใƒขใƒ‡ใƒซใŒ้…็ฝฎใ•ใ‚Œใฆใ„ใ‚‹ '/logs/your-experiment/3_feature256'ใซใฏๅ„้Ÿณๅฃฐใƒ‡ใƒผใ‚ฟใ‹ใ‚‰HuBERTใงๆŠฝๅ‡บใ•ใ‚ŒใŸ็‰นๅพด้‡ใŒ้…็ฝฎใ•ใ‚Œใฆใ„ใพใ™ใ€‚
12
+ ใ“ใ“ใ‹ใ‚‰npyใƒ•ใ‚กใ‚คใƒซใ‚’ใƒ•ใ‚กใ‚คใƒซๅใงใ‚ฝใƒผใƒˆใ—ใŸ้ †็•ชใง่ชญใฟ่พผใฟใ€ใƒ™ใ‚ฏใƒˆใƒซใ‚’้€ฃ็ตใ—ใฆbig_npyใ‚’ไฝœๆˆใ—faissใ‚’ๅญฆ็ฟ’ใ•ใ›ใพใ™ใ€‚(ใ“ใฎใƒ™ใ‚ฏใƒˆใƒซใฎshapeใฏ[N, 256]ใงใ™ใ€‚)
13
+
14
+ ๆœฌTipsใงใฏใพใšใ“ใ‚Œใ‚‰ใฎใƒ‘ใƒฉใƒกใƒผใ‚ฟใฎๆ„ๅ‘ณใ‚’่งฃ่ชฌใ—ใพใ™ใ€‚
15
+
16
+ # ๆ‰‹ๆณ•ใฎ่งฃ่ชฌ
17
+ ## index factory
18
+ index factoryใฏ่ค‡ๆ•ฐใฎ่ฟ‘ไผผ่ฟ‘ๅ‚ๆŽข็ดขใฎๆ‰‹ๆณ•ใ‚’็น‹ใ’ใ‚‹ใƒ‘ใ‚คใƒ—ใƒฉใ‚คใƒณใ‚’stringใง่กจ่จ˜ใ™ใ‚‹faiss็‹ฌ่‡ชใฎ่จ˜ๆณ•ใงใ™ใ€‚
19
+ ใ“ใ‚Œใซใ‚ˆใ‚Šใ€index factoryใฎๆ–‡ๅญ—ๅˆ—ใ‚’ๅค‰ๆ›ดใ™ใ‚‹ใ ใ‘ใงๆง˜ใ€…ใช่ฟ‘ไผผ่ฟ‘ๅ‚ๆŽข็ดขใฎๆ‰‹ๆณ•ใ‚’่ฉฆใ›ใพใ™ใ€‚
20
+ RVCใงใฏไปฅไธ‹ใฎใ‚ˆใ†ใซไฝฟใ‚ใ‚Œใฆใ„ใพใ™ใ€‚
21
+
22
+ ```python
23
+ index = faiss.index_factory(256, "IVF%s,Flat" % n_ivf)
24
+ ```
25
+ index_factoryใฎๅผ•ๆ•ฐใฎใ†ใกใ€1ใค็›ฎใฏใƒ™ใ‚ฏใƒˆใƒซใฎๆฌกๅ…ƒๆ•ฐใ€2ใค็›ฎใฏindex factoryใฎๆ–‡ๅญ—ๅˆ—ใงใ€3ใค็›ฎใซใฏ็”จใ„ใ‚‹่ท้›ขใ‚’ๆŒ‡ๅฎšใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚
26
+
27
+ ใ‚ˆใ‚Š่ฉณ็ดฐใช่จ˜ๆณ•ใซใคใ„ใฆใฏ
28
+ https://github.com/facebookresearch/faiss/wiki/The-index-factory
29
+
30
+ ## ่ท้›ขๆŒ‡ๆจ™
31
+ embeddingใฎ้กžไผผๅบฆใจใ—ใฆ็”จใ„ใ‚‰ใ‚Œใ‚‹ไปฃ่กจ็š„ใชๆŒ‡ๆจ™ใจใ—ใฆไปฅไธ‹ใฎไบŒใคใŒใ‚ใ‚Šใพใ™ใ€‚
32
+
33
+ - ใƒฆใƒผใ‚ฏใƒชใƒƒใƒ‰่ท้›ข(METRIC_L2)
34
+ - ๅ†…็ฉ(METRIC_INNER_PRODUCT)
35
+
36
+ ใƒฆใƒผใ‚ฏใƒชใƒƒใƒ‰่ท้›ขใงใฏๅ„ๆฌกๅ…ƒใซใŠใ„ใฆไบŒไน—ใฎๅทฎใ‚’ใจใ‚Šใ€ๅ…จๆฌกๅ…ƒใฎๅทฎใ‚’่ถณใ—ใฆใ‹ใ‚‰ๅนณๆ–นๆ นใ‚’ใจใ‚Šใพใ™ใ€‚ใ“ใ‚Œใฏๆ—ฅๅธธ็š„ใซ็”จใ„ใ‚‹2ๆฌกๅ…ƒใ€3ๆฌกๅ…ƒใงใฎ่ท้›ขใจๅŒใ˜ใงใ™ใ€‚
37
+ ๅ†…็ฉใฏใ“ใฎใพใพใงใฏ้กžไผผๅบฆใฎๆŒ‡ๆจ™ใจใ—ใฆ็”จใ„ใšใ€ไธ€่ˆฌ็š„ใซใฏL2ใƒŽใƒซใƒ ใงๆญฃ่ฆๅŒ–ใ—ใฆใ‹ใ‚‰ๅ†…็ฉใ‚’ใจใ‚‹ใ‚ณใ‚ตใ‚คใƒณ้กžไผผๅบฆใ‚’็”จใ„ใพใ™ใ€‚
38
+
39
+ ใฉใกใ‚‰ใŒใ‚ˆใ„ใ‹ใฏๅ ดๅˆใซใ‚ˆใ‚Šใพใ™ใŒใ€word2vec็ญ‰ใงๅพ—ใ‚‰ใ‚Œใ‚‹embeddingใ‚„ArcFace็ญ‰ใงๅญฆ็ฟ’ใ—ใŸ้กžไผผ็”ปๅƒๆคœ็ดขใฎใƒขใƒ‡ใƒซใงใฏใ‚ณใ‚ตใ‚คใƒณ้กžไผผๅบฆใŒ็”จใ„ใ‚‰ใ‚Œใ‚‹ใ“ใจใŒๅคšใ„ใงใ™ใ€‚ใƒ™ใ‚ฏใƒˆใƒซXใซๅฏพใ—ใฆl2ๆญฃ่ฆๅŒ–ใ‚’numpyใง่กŒใ†ๅ ดๅˆใฏใ€0 divisionใ‚’้ฟใ‘ใ‚‹ใŸใ‚ใซๅๅˆ†ใซๅฐใ•ใชๅ€คใ‚’epsใจใ—ใฆไปฅไธ‹ใฎใ‚ณใƒผใƒ‰ใงๅฏ่ƒฝใงใ™ใ€‚
40
+
41
+ ```python
42
+ X_normed = X / np.maximum(eps, np.linalg.norm(X, ord=2, axis=-1, keepdims=True))
43
+ ```
44
+
45
+ ใพใŸใ€index factoryใซใฏ็ฌฌ3ๅผ•ๆ•ฐใซๆธกใ™ๅ€คใ‚’้ธใถใ“ใจใง่จˆ็ฎ—ใซ็”จใ„ใ‚‹่ท้›ขๆŒ‡ๆจ™ใ‚’ๅค‰ๆ›ดใงใใพใ™ใ€‚
46
+
47
+ ```python
48
+ index = faiss.index_factory(dimention, text, faiss.METRIC_INNER_PRODUCT)
49
+ ```
50
+
51
+ ## IVF
52
+ IVF(Inverted file indexes)ใฏๅ…จๆ–‡ๆคœ็ดขใซใŠใ‘ใ‚‹่ปข็ฝฎใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นใจไผผใŸใ‚ˆใ†ใชใ‚ขใƒซใ‚ดใƒชใ‚บใƒ ใงใ™ใ€‚
53
+ ๅญฆ็ฟ’ๆ™‚ใซใฏๆคœ็ดขๅฏพ่ฑกใซๅฏพใ—ใฆkmeansใงใ‚ฏใƒฉใ‚นใ‚ฟใƒชใƒณใ‚ฐใ‚’่กŒใ„ใ€ใ‚ฏใƒฉใ‚นใ‚ฟไธญๅฟƒใ‚’็”จใ„ใฆใƒœใƒญใƒŽใ‚คๅˆ†ๅ‰ฒใ‚’่กŒใ„ใพใ™ใ€‚ๅ„ใƒ‡ใƒผใ‚ฟ็‚นใซใฏไธ€ใคใšใคใ‚ฏใƒฉใ‚นใ‚ฟใŒๅ‰ฒใ‚Šๅฝ“ใฆใ‚‰ใ‚Œใ‚‹ใฎใงใ€ใ‚ฏใƒฉใ‚นใ‚ฟใ‹ใ‚‰ใƒ‡ใƒผใ‚ฟ็‚นใ‚’้€†ๅผ•ใใ™ใ‚‹่พžๆ›ธใ‚’ไฝœๆˆใ—ใพใ™ใ€‚
54
+
55
+ ไพ‹ใˆใฐไปฅไธ‹ใฎใ‚ˆใ†ใซใ‚ฏใƒฉใ‚นใ‚ฟใŒๅ‰ฒใ‚Šๅฝ“ใฆใ‚‰ใ‚ŒใŸๅ ดๅˆ
56
+ |index|ใ‚ฏใƒฉใ‚นใ‚ฟ|
57
+ |-----|-------|
58
+ |1|A|
59
+ |2|B|
60
+ |3|A|
61
+ |4|C|
62
+ |5|B|
63
+
64
+ ไฝœๆˆใ•ใ‚Œใ‚‹่ปข็ฝฎใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นใฏไปฅไธ‹ใฎใ‚ˆใ†ใซใชใ‚Šใพใ™ใ€‚
65
+
66
+ |ใ‚ฏใƒฉใ‚นใ‚ฟ|index|
67
+ |-------|-----|
68
+ |A|1, 3|
69
+ |B|2, 5|
70
+ |C|4|
71
+
72
+ ๆคœ็ดขๆ™‚ใซใฏใพใšใ‚ฏใƒฉใ‚นใ‚ฟใ‹ใ‚‰n_probeๅ€‹ใฎใ‚ฏใƒฉใ‚นใ‚ฟใ‚’ๆคœ็ดขใ—ใ€ๆฌกใซใใ‚Œใžใ‚Œใฎใ‚ฏใƒฉใ‚นใ‚ฟใซๅฑžใ™ใ‚‹ใƒ‡ใƒผใ‚ฟ็‚นใซใคใ„ใฆ่ท้›ขใ‚’่จˆ็ฎ—ใ—ใพใ™ใ€‚
73
+
74
+ # ๆŽจๅฅจใ•ใ‚Œใ‚‹ใƒ‘ใƒฉใƒกใƒผใ‚ฟ
75
+ indexใฎ้ธใณๆ–นใซใคใ„ใฆใฏๅ…ฌๅผใซใ‚ฌใ‚คใƒ‰ใƒฉใ‚คใƒณใŒใ‚ใ‚‹ใฎใงใ€ใใ‚Œใซๆบ–ใ˜ใฆ่ชฌๆ˜Žใ—ใพใ™ใ€‚
76
+ https://github.com/facebookresearch/faiss/wiki/Guidelines-to-choose-an-index
77
+
78
+ 1Mไปฅไธ‹ใฎใƒ‡ใƒผใ‚ฟใ‚ปใƒƒใƒˆใซใŠใ„ใฆใฏ4bit-PQใŒ2023ๅนด4ๆœˆๆ™‚็‚นใงใฏfaissใงๅˆฉ็”จใงใใ‚‹ๆœ€ใ‚‚ๅŠน็Ž‡็š„ใชๆ‰‹ๆณ•ใงใ™ใ€‚
79
+ ใ“ใ‚Œใ‚’IVFใจ็ต„ใฟๅˆใ‚ใ›ใ€4bit-PQใงๅ€™่ฃœใ‚’็ตžใ‚Šใ€ๆœ€ๅพŒใซๆญฃ็ขบใชๆŒ‡ๆจ™ใง่ท้›ขใ‚’ๅ†่จˆ็ฎ—ใ™ใ‚‹ใซใฏไปฅไธ‹ใฎindex factoryใ‚’็”จใ„ใ‚‹ใ“ใจใง่จ˜่ผ‰ใงใใพใ™ใ€‚
80
+
81
+ ```python
82
+ index = faiss.index_factory(256, "IVF1024,PQ128x4fs,RFlat")
83
+ ```
84
+
85
+ ## IVFใฎๆŽจๅฅจใƒ‘ใƒฉใƒกใƒผใ‚ฟ
86
+ IVFใฎๆ•ฐใŒๅคšใ™ใŽใ‚‹ๅ ดๅˆใ€ใŸใจใˆใฐใƒ‡ใƒผใ‚ฟๆ•ฐใฎๆ•ฐใ ใ‘IVFใซใ‚ˆใ‚‹็ฒ—้‡ๅญๅŒ–ใ‚’่กŒใ†ใจใ€ใ“ใ‚Œใฏๆ„š็›ดใชๅ…จๆŽข็ดขใจๅŒใ˜ใซใชใ‚ŠๅŠน็Ž‡ใŒๆ‚ชใ„ใงใ™ใ€‚
87
+ 1Mไปฅไธ‹ใฎๅ ดๅˆใงใฏIVFใฎๅ€คใฏใƒ‡ใƒผใ‚ฟ็‚นใฎๆ•ฐNใซๅฏพใ—ใฆ4*sqrt(N) ~ 16*sqrt(N)ใซๆŽจๅฅจใ—ใฆใ„ใพใ™ใ€‚
88
+
89
+ n_probeใฏn_probeใฎๆ•ฐใซๆฏ”ไพ‹ใ—ใฆ่จˆ็ฎ—ๆ™‚้–“ใŒๅข—ใˆใ‚‹ใฎใงใ€็ฒพๅบฆใจ็›ธ่ซ‡ใ—ใฆ้ฉๅˆ‡ใซ้ธใ‚“ใงใใ ใ•ใ„ใ€‚ๅ€‹ไบบ็š„ใซใฏRVCใซใŠใ„ใฆใใ“ใพใง็ฒพๅบฆใฏๅฟ…่ฆใชใ„ใจๆ€ใ†ใฎใงn_probe = 1ใง่‰ฏใ„ใจๆ€ใ„ใพใ™ใ€‚
90
+
91
+ ## FastScan
92
+ FastScanใฏ็›ด็ฉ้‡ๅญๅŒ–ใงๅคงใพใ‹ใซ่ท้›ขใ‚’่ฟ‘ไผผใ™ใ‚‹ใฎใ‚’ใ€ใƒฌใ‚ธใ‚นใ‚ฟๅ†…ใง่กŒใ†ใ“ใจใซใ‚ˆใ‚Š้ซ˜้€Ÿใซ่กŒใ†ใ‚ˆใ†ใซใ—ใŸๆ‰‹ๆณ•ใงใ™ใ€‚
93
+ ็›ด็ฉ้‡ๅญๅŒ–ใฏๅญฆ็ฟ’ๆ™‚ใซdๆฌกๅ…ƒใ”ใจ(้€šๅธธใฏd=2)ใซ็‹ฌ็ซ‹ใ—ใฆใ‚ฏใƒฉใ‚นใ‚ฟใƒชใƒณใ‚ฐใ‚’่กŒใ„ใ€ใ‚ฏใƒฉใ‚นใ‚ฟๅŒๅฃซใฎ่ท้›ขใ‚’ไบ‹ๅ‰่จˆ็ฎ—ใ—ใฆlookup tableใ‚’ไฝœๆˆใ—ใพใ™ใ€‚ไบˆๆธฌๆ™‚ใฏlookup tableใ‚’่ฆ‹ใ‚‹ใ“ใจใงๅ„ๆฌกๅ…ƒใฎ่ท้›ขใ‚’O(1)ใง่จˆ็ฎ—ใงใใพใ™ใ€‚
94
+ ใใฎใŸใ‚ใ€PQใฎๆฌกใซๆŒ‡ๅฎšใ™ใ‚‹ๆ•ฐๅญ—ใฏ้€šๅธธใƒ™ใ‚ฏใƒˆใƒซใฎๅŠๅˆ†ใฎๆฌกๅ…ƒใ‚’ๆŒ‡ๅฎšใ—ใพใ™ใ€‚
95
+
96
+ FastScanใซ้–ขใ™ใ‚‹ใ‚ˆใ‚Š่ฉณ็ดฐใช่ชฌๆ˜Žใฏๅ…ฌๅผใฎใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚’ๅ‚็…งใ—ใฆใใ ใ•ใ„ใ€‚
97
+ https://github.com/facebookresearch/faiss/wiki/Fast-accumulation-of-PQ-and-AQ-codes-(FastScan)
98
+
99
+ ## RFlat
100
+ RFlatใฏFastScanใง่จˆ็ฎ—ใ—ใŸๅคงใพใ‹ใช่ท้›ขใ‚’ใ€index factoryใฎ็ฌฌไธ‰ๅผ•ๆ•ฐใงๆŒ‡ๅฎšใ—ใŸๆญฃ็ขบใช่ท้›ขใงๅ†่จˆ็ฎ—ใ™ใ‚‹ๆŒ‡็คบใงใ™ใ€‚
101
+ kๅ€‹ใฎ่ฟ‘ๅ‚ใ‚’ๅ–ๅพ—ใ™ใ‚‹้š›ใฏใ€k*k_factorๅ€‹ใฎ็‚นใซใคใ„ใฆๅ†่จˆ็ฎ—ใŒ่กŒใ‚ใ‚Œใพใ™ใ€‚
docs/jp/faq_ja.md ADDED
@@ -0,0 +1,117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Q1: ใƒฏใƒณใ‚ฏใƒชใƒƒใ‚ฏใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใŒ็ต‚ใ‚ใฃใฆใ‚‚ใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นใŒใชใ„
2
+
3
+ "Training is done. The program is closed."ใจ่กจ็คบใ•ใ‚ŒใŸๅ ดๅˆใ€ใƒขใƒ‡ใƒซใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใฏๆˆๅŠŸใ—ใฆใ„ใพใ™ใ€‚ใใฎ็›ดๅพŒใฎใ‚จใƒฉใƒผใฏ่ชคใ‚Šใงใ™ใ€‚<br>
4
+
5
+ ใƒฏใƒณใ‚ฏใƒชใƒƒใ‚ฏใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใŒ็ต‚ไบ†ใ—ใฆใ‚‚ added ใงๅง‹ใพใ‚‹ใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นใƒ•ใ‚กใ‚คใƒซใŒใชใ„ๅ ดๅˆใ€ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚ปใƒƒใƒˆใŒๅคงใใ™ใŽใฆใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚น่ฟฝๅŠ ใฎใ‚นใƒ†ใƒƒใƒ—ใŒๅœๆญขใ—ใฆใ„ใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚ใƒใƒƒใƒๅ‡ฆ็† add ใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นใงใƒกใƒขใƒชใฎ่ฆๆฑ‚ใŒ้ซ˜ใ™ใŽใ‚‹ๅ•้กŒใ‚’่งฃๆฑบใ—ใพใ—ใŸใ€‚ไธ€ๆ™‚็š„ใซใ€Œใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นใ€ใƒœใ‚ฟใƒณใ‚’ใ‚‚ใ†ไธ€ๅบฆใ‚ฏใƒชใƒƒใ‚ฏใ—ใฆใฟใฆใใ ใ•ใ„ใ€‚<br>
6
+
7
+ ## Q2: ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใŒ็ต‚ไบ†ใ—ใฆใ‚‚ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚ปใƒƒใƒˆใฎ้Ÿณ่‰ฒใŒ่ฆ‹ใˆใชใ„
8
+
9
+ ้Ÿณ่‰ฒใ‚’ใƒชใƒ•ใƒฌใƒƒใ‚ทใƒฅใ—ใฆใ‚‚ใ†ไธ€ๅบฆ็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚ใใ‚Œใงใ‚‚่ฆ‹ใˆใชใ„ๅ ดๅˆใฏใ€ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใซใ‚จใƒฉใƒผใŒใชใ‹ใฃใŸใ‹ใ€ใ‚ณใƒณใ‚ฝใƒผใƒซใจ WebUI ใฎใ‚นใ‚ฏใƒชใƒผใƒณใ‚ทใƒงใƒƒใƒˆใ€logs/ๅฎŸ้จ“ๅใฎไธ‹ใฎใƒญใ‚ฐใ‚’้–‹็™บ่€…ใซ้€ใฃใฆ็ขบ่ชใ—ใฆใฟใฆใใ ใ•ใ„ใ€‚<br>
10
+
11
+ ## Q3: ใƒขใƒ‡ใƒซใ‚’ใฉใฎใ‚ˆใ†ใซๅ…ฑๆœ‰ใ™ใ‚‹ใ‹
12
+
13
+ rvc_root/logs/ๅฎŸ้จ“ๅใฎไธ‹ใซไฟๅญ˜ใ•ใ‚Œใฆใ„ใ‚‹ pth ใฏใ€ๆŽจ่ซ–ใซไฝฟ็”จใ™ใ‚‹ใŸใ‚ใซๅ…ฑๆœ‰ใ™ใ‚‹ใŸใ‚ใฎใ‚‚ใฎใงใฏใชใใ€ๅฎŸ้จ“ใฎ็Šถๆ…‹ใ‚’ไฟๅญ˜ใ—ใฆๅ†็พใŠใ‚ˆใณใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚’็ถšใ‘ใ‚‹ใŸใ‚ใฎใ‚‚ใฎใงใ™ใ€‚ๅ…ฑๆœ‰ใ™ใ‚‹ใŸใ‚ใฎใƒขใƒ‡ใƒซใฏใ€weights ใƒ•ใ‚ฉใƒซใƒ€ใฎไธ‹ใซใ‚ใ‚‹ 60MB ไปฅไธŠใฎ pth ใƒ•ใ‚กใ‚คใƒซใงใ™ใ€‚<br>
14
+ โ€ƒโ€ƒ ไปŠๅพŒใ€weights/exp_name.pth ใจ logs/exp_name/added_xxx.index ใ‚’็ต„ใฟๅˆใ‚ใ›ใฆ weights/exp_name.zip ใซใƒ‘ใƒƒใ‚ฑใƒผใ‚ธๅŒ–ใ—ใ€ใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นใฎ่จ˜ๅ…ฅใ‚นใƒ†ใƒƒใƒ—ใ‚’็œ็•ฅใ—ใพใ™ใ€‚ใใฎๅ ดๅˆใ€zip ใƒ•ใ‚กใ‚คใƒซใ‚’ๅ…ฑๆœ‰ใ—ใ€pth ใƒ•ใ‚กใ‚คใƒซใฏๅ…ฑๆœ‰ใ—ใชใ„ใงใใ ใ•ใ„ใ€‚ๅˆฅใฎใƒžใ‚ทใƒณใงใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚’็ถšใ‘ใ‚‹ๅ ดๅˆใ‚’้™คใใพใ™ใ€‚<br>
15
+ โ€ƒโ€ƒlogs ใƒ•ใ‚ฉใƒซใƒ€ใฎๆ•ฐ็™พ MB ใฎ pth ใƒ•ใ‚กใ‚คใƒซใ‚’ weights ใƒ•ใ‚ฉใƒซใƒ€ใซใ‚ณใƒ”ใƒผ/ๅ…ฑๆœ‰ใ—ใฆๆŽจ่ซ–ใซๅผทๅˆถ็š„ใซไฝฟ็”จใ™ใ‚‹ใจใ€f0ใ€tgt_sr ใชใฉใฎใ•ใพใ–ใพใชใ‚ญใƒผใŒๅญ˜ๅœจใ—ใชใ„ใจใ„ใ†ใ‚จใƒฉใƒผใŒ็™บ็”Ÿใ™ใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚ckpt ใ‚ฟใƒ–ใฎไธ€็•ชไธ‹ใงใ€้Ÿณ้ซ˜ใ€็›ฎๆจ™ใ‚ชใƒผใƒ‡ใ‚ฃใ‚ชใ‚ตใƒณใƒ—ใƒชใƒณใ‚ฐใƒฌใƒผใƒˆใ‚’ๆ‰‹ๅ‹•ใพใŸใฏ่‡ชๅ‹•๏ผˆใƒญใƒผใ‚ซใƒซใฎ logs ใซ้–ข้€ฃๆƒ…ๅ ฑใŒ่ฆ‹ใคใ‹ใ‚‹ๅ ดๅˆใฏ่‡ชๅ‹•็š„ใซ๏ผ‰ใง้ธๆŠžใ—ใฆใ‹ใ‚‰ใ€ckpt ใฎๅฐๅž‹ใƒขใƒ‡ใƒซใ‚’ๆŠฝๅ‡บใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™๏ผˆๅ…ฅๅŠ›ใƒ‘ใ‚นใซ G ใงๅง‹ใพใ‚‹ใ‚‚ใฎใ‚’่จ˜ๅ…ฅ๏ผ‰ใ€‚ๆŠฝๅ‡บใŒๅฎŒไบ†ใ™ใ‚‹ใจใ€weights ใƒ•ใ‚ฉใƒซใƒ€ใซ 60MB ไปฅไธŠใฎ pth ใƒ•ใ‚กใ‚คใƒซใŒ่กจ็คบใ•ใ‚Œใ€้Ÿณ่‰ฒใ‚’ใƒชใƒ•ใƒฌใƒƒใ‚ทใƒฅใ—ใŸๅพŒใซไฝฟ็”จใงใใพใ™ใ€‚<br>
16
+
17
+ ## Q4: Connection Error
18
+
19
+ ใ‚ณใƒณใ‚ฝใƒผใƒซ๏ผˆ้ป’ใ„ใ‚ฆใ‚ฃใƒณใƒ‰ใ‚ฆ๏ผ‰ใ‚’้–‰ใ˜ใŸๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚<br>
20
+
21
+ ## Q5: WebUI ใŒ Expecting value: line 1 column 1 (char 0)ใจ่กจ็คบใ™ใ‚‹
22
+
23
+ ใ‚ทใ‚นใƒ†ใƒ ใฎใƒญใƒผใ‚ซใƒซใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใƒ—ใƒญใ‚ญใ‚ท/ใ‚ฐใƒญใƒผใƒใƒซใƒ—ใƒญใ‚ญใ‚ทใ‚’้–‰ใ˜ใฆใใ ใ•ใ„ใ€‚<br>
24
+
25
+ ใ“ใ‚Œใฏใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใฎใƒ—ใƒญใ‚ญใ‚ทใ ใ‘ใงใชใใ€ใ‚ตใƒผใƒใƒผๅดใฎใƒ—ใƒญใ‚ญใ‚ทใ‚‚ๅซใพใ‚Œใพใ™๏ผˆไพ‹ใˆใฐ autodl ใง http_proxy ใจ https_proxy ใ‚’่จญๅฎšใ—ใฆๅญฆ่ก“็š„ใชๅŠ ้€Ÿใ‚’่กŒใฃใฆใ„ใ‚‹ๅ ดๅˆใ€ไฝฟ็”จใ™ใ‚‹้š›ใซใฏ unset ใงใ‚ชใƒ•ใซใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™๏ผ‰ใ€‚<br>
26
+
27
+ ## Q6: WebUI ใ‚’ไฝฟใ‚ใšใซใ‚ณใƒžใƒณใƒ‰ใงใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚„ๆŽจ่ซ–ใ‚’่กŒใ†ใซใฏ
28
+
29
+ ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚นใ‚ฏใƒชใƒ—ใƒˆ๏ผš<br>
30
+ ใพใš WebUI ใ‚’ๅฎŸ่กŒใ—ใ€ใƒกใƒƒใ‚ปใƒผใ‚ธใ‚ฆใ‚ฃใƒณใƒ‰ใ‚ฆใซใƒ‡ใƒผใ‚ฟใ‚ปใƒƒใƒˆๅ‡ฆ็†ใจใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐ็”จใฎใ‚ณใƒžใƒณใƒ‰ใƒฉใ‚คใƒณใŒ่กจ็คบใ•ใ‚Œใพใ™ใ€‚<br>
31
+
32
+ ๆŽจ่ซ–ใ‚นใ‚ฏใƒชใƒ—ใƒˆ๏ผš<br>
33
+ https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/myinfer.py<br>
34
+
35
+ ไพ‹๏ผš<br>
36
+
37
+ runtime\python.exe myinfer.py 0 "E:\codes\py39\RVC-beta\todo-songs\1111.wav" "E:\codes\py39\logs\mi-test\added_IVF677_Flat_nprobe_7.index" harvest "test.wav" "weights/mi-test.pth" 0.6 cuda:0 True<br>
38
+
39
+ f0up_key=sys.argv[1]<br>
40
+ input_path=sys.argv[2]<br>
41
+ index_path=sys.argv[3]<br>
42
+ f0method=sys.argv[4]#harvest or pm<br>
43
+ opt_path=sys.argv[5]<br>
44
+ model_path=sys.argv[6]<br>
45
+ index_rate=float(sys.argv[7])<br>
46
+ device=sys.argv[8]<br>
47
+ is_half=bool(sys.argv[9])<br>
48
+
49
+ ## Q7: Cuda error/Cuda out of memory
50
+
51
+ ใพใ‚Œใซ cuda ใฎ่จญๅฎšๅ•้กŒใ‚„ใƒ‡ใƒใ‚คใ‚นใŒใ‚ตใƒใƒผใƒˆใ•ใ‚Œใฆใ„ใชใ„ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใŒใ€ๅคงๅŠใฏใƒกใƒขใƒชไธ่ถณ๏ผˆout of memory๏ผ‰ใŒๅŽŸๅ› ใงใ™ใ€‚<br>
52
+
53
+ ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใฎๅ ดๅˆใฏ batch size ใ‚’ๅฐใ•ใใ—ใพใ™๏ผˆ1 ใซใ—ใฆใ‚‚่ถณใ‚Šใชใ„ๅ ดๅˆใฏใ‚ฐใƒฉใƒ•ใ‚ฃใƒƒใ‚ฏใ‚ซใƒผใƒ‰ใ‚’ๅค‰ๆ›ดใ™ใ‚‹ใ—ใ‹ใ‚ใ‚Šใพใ›ใ‚“๏ผ‰ใ€‚ๆŽจ่ซ–ใฎๅ ดๅˆใฏใ€config.py ใฎๆœซๅฐพใซใ‚ใ‚‹ x_padใ€x_queryใ€x_centerใ€x_max ใ‚’้ฉๅฎœๅฐใ•ใใ—ใพใ™ใ€‚4GB ไปฅไธ‹ใฎใƒกใƒขใƒช๏ผˆไพ‹ใˆใฐ 1060๏ผˆ3G๏ผ‰ใ‚„ๅ„็จฎ 2GB ใฎใ‚ฐใƒฉใƒ•ใ‚ฃใƒƒใ‚ฏใ‚ซใƒผใƒ‰๏ผ‰ใฏ่ซฆใ‚ใ‚‹ใ“ใจใ‚’ใŠๅ‹งใ‚ใ—ใพใ™ใŒใ€4GB ใฎใƒกใƒขใƒชใฎใ‚ฐใƒฉใƒ•ใ‚ฃใƒƒใ‚ฏใ‚ซใƒผใƒ‰ใฏใพใ ๆ•‘ใ„ใŒใ‚ใ‚Šใพใ™ใ€‚<br>
54
+
55
+ ## Q8: total_epoch ใฏใฉใฎใใ‚‰ใ„ใซ่จญๅฎšใ™ใ‚‹ใฎใŒ่‰ฏใ„ใงใ™ใ‹
56
+
57
+ ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚ปใƒƒใƒˆใฎ้Ÿณ่ณชใŒๆ‚ชใใ€ใƒŽใ‚คใ‚บใŒๅคšใ„ๅ ดๅˆใฏใ€20ใ€œ30 ใงๅๅˆ†๏ฟฝ๏ฟฝใ™ใ€‚้ซ˜ใ™ใŽใ‚‹ใจใ€ใƒ™ใƒผใ‚นใƒขใƒ‡ใƒซใฎ้Ÿณ่ณชใŒไฝŽ้Ÿณ่ณชใฎใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚ปใƒƒใƒˆใ‚’้ซ˜ใ‚ใ‚‹ใ“ใจใŒใงใใพใ›ใ‚“ใ€‚<br>
58
+ ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚ปใƒƒใƒˆใฎ้Ÿณ่ณชใŒ้ซ˜ใใ€ใƒŽใ‚คใ‚บใŒๅฐ‘ใชใใ€้•ทใ„ๅ ดๅˆใฏใ€้ซ˜ใ่จญๅฎšใงใใพใ™ใ€‚200 ใฏๅ•้กŒใ‚ใ‚Šใพใ›ใ‚“๏ผˆใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐ้€ŸๅบฆใŒ้€Ÿใ„ใฎใงใ€้ซ˜้Ÿณ่ณชใฎใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚ปใƒƒใƒˆใ‚’ๆบ–ๅ‚™ใงใใ‚‹ๆกไปถใŒใ‚ใ‚‹ๅ ดๅˆใ€ใ‚ฐใƒฉใƒ•ใ‚ฃใƒƒใ‚ฏใ‚ซใƒผใƒ‰ใ‚‚ๆกไปถใŒ่‰ฏใ„ใฏใšใชใฎใงใ€ๅฐ‘ใ—ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐๆ™‚้–“ใŒ้•ทใใชใ‚‹ใ“ใจใ‚’ๆฐ—ใซใ™ใ‚‹ใ“ใจใฏใ‚ใ‚Šใพใ›ใ‚“๏ผ‰ใ€‚<br>
59
+
60
+ ## Q9: ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚ปใƒƒใƒˆใฏใฉใ‚Œใใ‚‰ใ„ใฎ้•ทใ•ใŒๅฟ…่ฆใงใ™ใ‹
61
+
62
+ 10 ๅˆ†ใ‹ใ‚‰ 50 ๅˆ†ใ‚’ๆŽจๅฅจใ—ใพใ™ใ€‚
63
+ โ€ƒโ€ƒ ้Ÿณ่ณชใŒ่‰ฏใใ€ใƒใƒƒใ‚ฏใ‚ฐใƒฉใ‚ฆใƒณใƒ‰ใƒŽใ‚คใ‚บใŒไฝŽใ„ๅ ดๅˆใ€ๅ€‹ไบบ็š„ใช็‰นๅพดใฎใ‚ใ‚‹้Ÿณ่‰ฒใงใ‚ใ‚Œใฐใ€ๅคšใ‘ใ‚Œใฐๅคšใ„ใปใฉ่‰ฏใ„ใงใ™ใ€‚
64
+ โ€ƒโ€ƒ ้ซ˜ๅ“่ณชใฎใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚ปใƒƒใƒˆ๏ผˆ็ฒพๅทงใซๆบ–ๅ‚™ใ•ใ‚ŒใŸ + ็‰นๅพด็š„ใช้Ÿณ่‰ฒ๏ผ‰ใงใ‚ใ‚Œใฐใ€5 ๅˆ†ใ‹ใ‚‰ 10 ๅˆ†ใงใ‚‚ๅคงไธˆๅคซใงใ™ใ€‚ใƒชใƒใ‚ธใƒˆใƒชใฎไฝœ่€…ใ‚‚ใ‚ˆใใ“ใฎๆ–นๆณ•ใง้Šใณใพใ™ใ€‚
65
+ โ€ƒโ€ƒ1 ๅˆ†ใ‹ใ‚‰ 2 ๅˆ†ใฎใƒ‡ใƒผใ‚ฟใงใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใซๆˆๅŠŸใ—ใŸไบบใ‚‚ใ„ใพใ™ใŒใ€ใใฎๆˆๅŠŸไฝ“้จ“ใฏไป–ไบบใซใฏๅ†็พใงใใชใ„ใŸใ‚ใ€ใ‚ใพใ‚Šๅ‚่€ƒใซใชใ‚Šใพใ›ใ‚“ใ€‚ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚ปใƒƒใƒˆใฎ้Ÿณ่‰ฒใŒ้žๅธธใซ็‰นๅพด็š„ใงใ‚ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™๏ผˆไพ‹๏ผš้ซ˜ใ„ๅ‘จๆณขๆ•ฐใฎ้€ๆ˜Žใชๅฃฐใ‚„ๅฐ‘ๅฅณใฎๅฃฐใชใฉ๏ผ‰ใ€ใใ—ใฆ้Ÿณ่ณชใŒ่‰ฏใ„ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚
66
+ โ€ƒโ€ƒ1 ๅˆ†ๆœชๆบ€ใฎใƒ‡ใƒผใ‚ฟใงใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚’่ฉฆใฟใŸ๏ผˆๆˆๅŠŸใ—ใŸ๏ผ‰ใ‚ฑใƒผใ‚นใฏใพใ ่ฆ‹ใŸใ“ใจใŒใ‚ใ‚Šใพใ›ใ‚“ใ€‚ใ“ใฎใ‚ˆใ†ใช่ฉฆใฟใฏใŠๅ‹งใ‚ใ—ใพใ›ใ‚“ใ€‚
67
+
68
+ ## Q10: index rate ใฏไฝ•ใซไฝฟใ†ใ‚‚ใฎใงใ€ใฉใฎใ‚ˆใ†ใซ่ชฟๆ•ดใ™ใ‚‹ใฎใ‹๏ผˆๅ•“่’™๏ผ‰
69
+
70
+ ใ‚‚ใ—ใƒ™ใƒผใ‚นใƒขใƒ‡ใƒซใ‚„ๆŽจ่ซ–ใ‚ฝใƒผใ‚นใฎ้Ÿณ่ณชใŒใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚ปใƒƒใƒˆใ‚ˆใ‚Šใ‚‚้ซ˜ใ„ๅ ดๅˆใ€ๆŽจ่ซ–็ตๆžœใฎ้Ÿณ่ณชใ‚’ๅ‘ไธŠใ•ใ›ใ‚‹ใ“ใจใŒใงใใพใ™ใŒใ€้Ÿณ่‰ฒใŒใƒ™ใƒผใ‚นใƒขใƒ‡ใƒซ/ๆŽจ่ซ–ใ‚ฝใƒผใ‚นใฎ้Ÿณ่‰ฒใซ่ฟ‘ใฅใใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚ใ“ใ‚Œใ‚’ใ€Œ้Ÿณ่‰ฒๆผใ‚Œใ€ใจ่จ€ใ„ใพใ™ใ€‚
71
+ โ€ƒโ€ƒindex rate ใฏ้Ÿณ่‰ฒๆผใ‚Œใฎๅ•้กŒใ‚’ๆธ›ๅฐ‘ใ•ใ›ใŸใ‚Š่งฃๆฑบใ™ใ‚‹ใŸใ‚ใซไฝฟ็”จใ•ใ‚Œใพใ™ใ€‚1 ใซ่จญๅฎšใ™ใ‚‹ใจใ€็†่ซ–็š„ใซใฏๆŽจ่ซ–ใ‚ฝใƒผใ‚นใฎ้Ÿณ่‰ฒๆผใ‚Œใฎๅ•้กŒใฏๅญ˜ๅœจใ—ใพใ›ใ‚“ใŒใ€้Ÿณ่ณชใฏใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚ปใƒƒใƒˆใซ่ฟ‘ใฅใใพใ™ใ€‚ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚ปใƒƒใƒˆใฎ้Ÿณ่ณชใŒๆŽจ่ซ–ใ‚ฝใƒผใ‚นใ‚ˆใ‚Šใ‚‚ไฝŽใ„ๅ ดๅˆใ€index rate ใ‚’้ซ˜ใใ™ใ‚‹ใจ้Ÿณ่ณชใŒไฝŽไธ‹ใ™ใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚0 ใซ่จญๅฎšใ™ใ‚‹ใจใ€ๆคœ็ดขใƒŸใƒƒใ‚ฏใ‚นใ‚’ๅˆฉ็”จใ—ใฆใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚ปใƒƒใƒˆใฎ้Ÿณ่‰ฒใ‚’ไฟ่ญทใ™ใ‚‹ๅŠนๆžœใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚
72
+ โ€ƒโ€ƒ ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚ปใƒƒใƒˆใŒ้ซ˜ๅ“่ณชใง้•ทใ„ๅ ดๅˆใ€total_epoch ใ‚’้ซ˜ใ่จญๅฎšใ™ใ‚‹ใ“ใจใŒใงใใ€ใ“ใฎๅ ดๅˆใ€ใƒขใƒ‡ใƒซ่‡ชไฝ“ใฏๆŽจ่ซ–ใ‚ฝใƒผใ‚นใ‚„ใƒ™ใƒผใ‚นใƒขใƒ‡ใƒซใฎ้Ÿณ่‰ฒใ‚’ใ‚ใพใ‚Šๅ‚็…งใ—ใชใ„ใŸใ‚ใ€ใ€Œ้Ÿณ่‰ฒๆผใ‚Œใ€ใฎๅ•้กŒใฏใปใจใ‚“ใฉ็™บ็”Ÿใ—ใพใ›ใ‚“ใ€‚ใ“ใฎๆ™‚ใ€index rate ใฏ้‡่ฆใงใฏใชใใ€ใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นใƒ•ใ‚กใ‚คใƒซใ‚’ไฝœๆˆใ—ใŸใ‚Šๅ…ฑๆœ‰ใ—ใŸใ‚Šใ™ใ‚‹ๅฟ…่ฆใ‚‚ใ‚ใ‚Šใพใ›ใ‚“ใ€‚
73
+
74
+ ## Q11: ๆŽจ่ซ–ๆ™‚ใซ GPU ใ‚’ใฉใฎใ‚ˆใ†ใซ้ธๆŠžใ™ใ‚‹ใ‹
75
+
76
+ config.py ใƒ•ใ‚กใ‚คใƒซใฎ device cuda:ใฎๅพŒใซใ‚ซใƒผใƒ‰็•ชๅทใ‚’้ธๆŠžใ—ใพใ™ใ€‚
77
+ ใ‚ซใƒผใƒ‰็•ชๅทใจใ‚ฐใƒฉใƒ•ใ‚ฃใƒƒใ‚ฏใ‚ซใƒผใƒ‰ใฎใƒžใƒƒใƒ”ใƒณใ‚ฐ้–ขไฟ‚ใฏใ€ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚ฟใƒ–ใฎใ‚ฐใƒฉใƒ•ใ‚ฃใƒƒใ‚ฏใ‚ซใƒผใƒ‰ๆƒ…ๅ ฑๆฌ„ใง็ขบ่ชใงใใพใ™ใ€‚
78
+
79
+ ## Q12: ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐไธญใซไฟๅญ˜ใ•ใ‚ŒใŸ pth ใƒ•ใ‚กใ‚คใƒซใ‚’ใฉใฎใ‚ˆใ†ใซๆŽจ่ซ–ใ™ใ‚‹ใ‹
80
+
81
+ ckpt ใ‚ฟใƒ–ใฎไธ€็•ชไธ‹ใงๅฐๅž‹ใƒขใƒ‡ใƒซใ‚’ๆŠฝๅ‡บใ—ใพใ™ใ€‚
82
+
83
+ ## Q13: ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚’ใฉใฎใ‚ˆใ†ใซไธญๆ–ญใ—ใ€็ถš่กŒใ™ใ‚‹ใ‹
84
+
85
+ ็พๅœจใฎๆฎต้šŽใงใฏใ€WebUI ใ‚ณใƒณใ‚ฝใƒผใƒซใ‚’้–‰ใ˜ใฆ go-web.bat ใ‚’ใƒ€ใƒ–ใƒซใ‚ฏใƒชใƒƒใ‚ฏใ—ใฆใƒ—ใƒญใ‚ฐใƒฉใƒ ใ‚’ๅ†่ตทๅ‹•ใ™ใ‚‹ใ—ใ‹ใ‚ใ‚Šใพใ›ใ‚“ใ€‚ใ‚ฆใ‚งใƒ–ใƒšใƒผใ‚ธใฎใƒ‘ใƒฉใƒกใƒผใ‚ฟใ‚‚ใƒชใƒ•ใƒฌใƒƒใ‚ทใƒฅใ—ใฆๅ†ๅบฆๅ…ฅๅŠ›ใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚
86
+ ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚’็ถšใ‘ใ‚‹ใซใฏ๏ผšๅŒใ˜ใ‚ฆใ‚งใƒ–ใƒšใƒผใ‚ธใฎใƒ‘ใƒฉใƒกใƒผใ‚ฟใงใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใƒขใƒ‡ใƒซใ‚’ใ‚ฏใƒชใƒƒใ‚ฏใ™ใ‚‹ใจใ€ๅ‰ๅ›žใฎใƒใ‚งใƒƒใ‚ฏใƒใ‚คใƒณใƒˆใ‹ใ‚‰ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚’็ถšใ‘ใพใ™ใ€‚
87
+
88
+ ## Q14: ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐไธญใซใƒ•ใ‚กใ‚คใƒซใƒšใƒผใ‚ธ/ใƒกใƒขใƒชใ‚จใƒฉใƒผใŒ็™บ็”Ÿใ—ใŸๅ ดๅˆใฎๅฏพๅ‡ฆๆณ•
89
+
90
+ ใƒ—ใƒญใ‚ปใ‚นใŒๅคšใ™ใŽใฆใƒกใƒขใƒชใŒใ‚ชใƒผใƒใƒผใƒ•ใƒญใƒผใ—ใพใ—ใŸใ€‚ไปฅไธ‹ใฎๆ–นๆณ•ใง่งฃๆฑบใงใใ‚‹ใ‹ใ‚‚ใ—ใ‚Œใพใ›ใ‚“ใ€‚
91
+
92
+ 1. ใ€Œ้Ÿณ้ซ˜ๆŠฝๅ‡บใจใƒ‡ใƒผใ‚ฟๅ‡ฆ็†ใซไฝฟ็”จใ™ใ‚‹ CPU ใƒ—ใƒญใ‚ปใ‚นๆ•ฐใ€ใ‚’้ฉๅฎœไธ‹ใ’ใพใ™ใ€‚
93
+ 2. ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚ปใƒƒใƒˆใฎใ‚ชใƒผใƒ‡ใ‚ฃใ‚ชใ‚’ๆ‰‹ๅ‹•ใงใ‚ซใƒƒใƒˆใ—ใฆใ€ใ‚ใพใ‚Š้•ทใใชใ‚‰ใชใ„ใ‚ˆใ†ใซใ—ใพใ™ใ€‚
94
+
95
+ ## Q15: ้€”ไธญใงใƒ‡ใƒผใ‚ฟใ‚’่ฟฝๅŠ ใ—ใฆใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ™ใ‚‹ๆ–นๆณ•
96
+
97
+ 1. ๅ…จใƒ‡ใƒผใ‚ฟใซๆ–ฐใ—ใ„ๅฎŸ้จ“ๅใ‚’ไฝœๆˆใ—ใพใ™ใ€‚
98
+ 2. ๅ‰ๅ›žใฎๆœ€ๆ–ฐใฎ G ใจ D ใƒ•ใ‚กใ‚คใƒซ๏ผˆใ‚ใ‚‹ใ„ใฏใฉใฎไธญ้–“ ckpt ใ‚’ๅŸบใซใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ—ใŸใ„ๅ ดๅˆใฏใ€ใใฎไธญ้–“ใฎใ‚‚ใฎใ‚’ใ‚ณใƒ”ใƒผใ™ใ‚‹ใ“ใจใ‚‚ใงใใพใ™๏ผ‰ใ‚’ๆ–ฐใ—ใ„ๅฎŸ้จ“ๅใซใ‚ณใƒ”ใƒผใ—ใพใ™ใ€‚
99
+ 3. ๆ–ฐใ—ใ„ๅฎŸ้จ“ๅใงใƒฏใƒณใ‚ฏใƒชใƒƒใ‚ฏใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚’้–‹ๅง‹ใ™ใ‚‹ใจใ€ๅ‰ๅ›žใฎๆœ€ๆ–ฐใฎ้€ฒๆ—ใ‹ใ‚‰ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚’็ถšใ‘ใพใ™ใ€‚
100
+
101
+ ## Q16: llvmlite.dll ใซ้–ขใ™ใ‚‹ใ‚จใƒฉใƒผ
102
+
103
+ ```bash
104
+ OSError: Could not load shared object file: llvmlite.dll
105
+
106
+ FileNotFoundError: Could not find module lib\site-packages\llvmlite\binding\llvmlite.dll (or one of its dependencies). Try using the full path with constructor syntax.
107
+ ```
108
+
109
+ Windows ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใงใฏใ“ใฎใ‚จใƒฉใƒผใŒ็™บ็”Ÿใ—ใพใ™ใŒใ€https://aka.ms/vs/17/release/vc_redist.x64.exeใ‚’ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ—ใฆWebUIใ‚’ๅ†่ตทๅ‹•ใ™ใ‚Œใฐ่งฃๆฑบใ—ใพใ™ใ€‚
110
+
111
+ ## Q17: RuntimeError: ใƒ†ใƒณใ‚ฝใƒซใฎๆ‹กๅผตใ‚ตใ‚คใ‚บ๏ผˆ17280๏ผ‰ใฏใ€้žใ‚ทใƒณใ‚ฐใƒซใƒˆใƒณๆฌกๅ…ƒ 1 ใงใฎๆ—ขๅญ˜ใ‚ตใ‚คใ‚บ๏ผˆ0๏ผ‰ใจไธ€่‡ดใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚ ใ‚ฟใƒผใ‚ฒใƒƒใƒˆใ‚ตใ‚คใ‚บ๏ผš[1, 17280]ใ€‚ ใƒ†ใƒณใ‚ฝใƒซใ‚ตใ‚คใ‚บ๏ผš[0]
112
+
113
+ wavs16k ใƒ•ใ‚ฉใƒซใƒ€ใƒผใฎไธ‹ใงใ€ไป–ใฎใƒ•ใ‚กใ‚คใƒซใ‚ˆใ‚Šใ‚‚ๆ˜Žใ‚‰ใ‹ใซๅฐใ•ใ„ใ„ใใคใ‹ใฎใ‚ชใƒผใƒ‡ใ‚ฃใ‚ชใƒ•ใ‚กใ‚คใƒซใ‚’่ฆ‹ใคใ‘ใฆๅ‰Š้™คใ—ใ€ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใƒขใƒ‡ใƒซใ‚’ใ‚ฏใƒชใƒƒใ‚ฏใ™ใ‚Œใฐใ‚จใƒฉใƒผใฏ็™บ็”Ÿใ—ใพใ›ใ‚“ใŒใ€ใƒฏใƒณใ‚ฏใƒชใƒƒใ‚ฏใƒ—ใƒญใ‚ปใ‚นใŒไธญๆ–ญใ•ใ‚ŒใŸใŸใ‚ใ€ใƒขใƒ‡ใƒซใฎใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใŒๅฎŒไบ†ใ—ใŸใ‚‰ใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นใฎใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚’ใ‚ฏใƒชใƒƒใ‚ฏใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚
114
+
115
+ ## Q18: RuntimeError: ใƒ†ใƒณใ‚ฝใƒซ a ใฎใ‚ตใ‚คใ‚บ๏ผˆ24๏ผ‰ใฏใ€้žใ‚ทใƒณใ‚ฐใƒซใƒˆใƒณๆฌกๅ…ƒ 2 ใงใƒ†ใƒณใ‚ฝใƒซ b๏ผˆ16๏ผ‰ใฎใ‚ตใ‚คใ‚บใจไธ€่‡ดใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™
116
+
117
+ ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐไธญใซใ‚ตใƒณใƒ—ใƒชใƒณใ‚ฐใƒฌใƒผใƒˆใ‚’ๅค‰ๆ›ดใ—ใฆใฏใ„ใ‘ใพใ›ใ‚“ใ€‚ๅค‰ๆ›ดใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚‹ๅ ดๅˆใฏใ€ๅฎŸ้จ“ๅใ‚’ๅค‰ๆ›ดใ—ใฆๆœ€ๅˆใ‹ใ‚‰ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚ใ‚‚ใกใ‚ใ‚“ใ€ๅ‰ๅ›žๆŠฝๅ‡บใ—ใŸ้Ÿณ้ซ˜ใจ็‰นๅพด๏ผˆ0/1/2/2b ใƒ•ใ‚ฉใƒซใƒ€๏ผ‰ใ‚’ใ‚ณใƒ”ใƒผใ—ใฆใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใƒ—ใƒญใ‚ปใ‚นใ‚’ๅŠ ้€Ÿใ™ใ‚‹ใ“ใจใ‚‚ใงใใพใ™ใ€‚
docs/jp/training_tips_ja.md ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ RVCใฎ่จ“็ทดใซใŠใ‘ใ‚‹่ชฌๆ˜Žใ€ใŠใ‚ˆใณTIPS
2
+ ===============================
3
+ ๆœฌTIPSใงใฏใฉใฎใ‚ˆใ†ใซใƒ‡ใƒผใ‚ฟใฎ่จ“็ทดใŒ่กŒใ‚ใ‚Œใฆใ„ใ‚‹ใ‹ใ‚’่ชฌๆ˜Žใ—ใพใ™ใ€‚
4
+
5
+ # ่จ“็ทดใฎๆตใ‚Œ
6
+ GUIใฎ่จ“็ทดใ‚ฟใƒ–ใฎstepใซๆฒฟใฃใฆ่ชฌๆ˜Žใ—ใพใ™ใ€‚
7
+
8
+ ## step1
9
+ ๅฎŸ้จ“ๅใฎ่จญๅฎšใ‚’่กŒใ„ใพใ™ใ€‚
10
+
11
+ ใพใŸใ€ใƒขใƒ‡ใƒซใซ้Ÿณ้ซ˜ใ‚ฌใ‚คใƒ‰(ใƒ”ใƒƒใƒ)ใ‚’่€ƒๆ…ฎใ•ใ›ใ‚‹ใ‹ใ‚‚ใ“ใ“ใง่จญๅฎšใงใใพใ™ใ€‚่€ƒๆ…ฎใ•ใ›ใชใ„ๅ ดๅˆใฏใƒขใƒ‡ใƒซใฏ่ปฝ้‡ใซใชใ‚Šใพใ™ใŒใ€ๆญŒๅ”ฑใซใฏๅ‘ใ‹ใชใใชใ‚Šใพใ™ใ€‚
12
+
13
+ ๅ„ๅฎŸ้จ“ใฎใƒ‡ใƒผใ‚ฟใฏ`/logs/ๅฎŸ้จ“ๅ/`ใซ้…็ฝฎใ•ใ‚Œใพใ™ใ€‚
14
+
15
+ ## step2a
16
+ ้Ÿณๅฃฐใฎ่ชญใฟ่พผใฟใจๅ‰ๅ‡ฆ็†ใ‚’่กŒใ„ใพใ™ใ€‚
17
+
18
+ ### load audio
19
+ ้Ÿณๅฃฐใฎใ‚ใ‚‹ใƒ•ใ‚ฉใƒซใƒ€ใ‚’ๆŒ‡ๅฎšใ™ใ‚‹ใจใ€ใใฎใƒ•ใ‚ฉใƒซใƒ€ๅ†…ใซใ‚ใ‚‹้Ÿณๅฃฐใƒ•ใ‚กใ‚คใƒซใ‚’่‡ชๅ‹•ใง่ชญใฟ่พผใฟใพใ™ใ€‚
20
+ ไพ‹ใˆใฐ`C:Users\hoge\voices`ใ‚’ๆŒ‡ๅฎšใ—ใŸๅ ดๅˆใ€`C:Users\hoge\voices\voice.mp3`ใฏ่ชญใฟ่พผใพใ‚Œใพใ™ใŒใ€`C:Users\hoge\voices\dir\voice.mp3`ใฏ่ชญใฟ่พผใพใ‚Œใพใ›ใ‚“ใ€‚
21
+
22
+ ้Ÿณๅฃฐใฎ่ชญใฟ่พผใฟใซใฏๅ†…้ƒจใงffmpegใ‚’ๅˆฉ็”จใ—ใฆใ„ใ‚‹ใฎใงใ€ffmpegใงๅฏพๅฟœใ—ใฆใ„ใ‚‹ๆ‹กๅผตๅญใงใ‚ใ‚Œใฐ่‡ชๅ‹•็š„ใซ่ชญใฟ่พผใพใ‚Œใพใ™ใ€‚
23
+ ffmpegใงint16ใซๅค‰ๆ›ใ—ใŸๅพŒใ€float32ใซๅค‰ๆ›ใ—ใ€-1 ~ 1ใฎ้–“ใซๆญฃ่ฆๅŒ–ใ•ใ‚Œใพใ™ใ€‚
24
+
25
+ ### denoising
26
+ ้Ÿณๅฃฐใซใคใ„ใฆscipyใฎfiltfiltใซใ‚ˆใ‚‹ๅนณๆป‘ๅŒ–ใ‚’่กŒใ„ใพใ™ใ€‚
27
+
28
+ ### ้Ÿณๅฃฐใฎๅˆ†ๅ‰ฒ
29
+ ๅ…ฅๅŠ›ใ—ใŸ้Ÿณๅฃฐใฏใพใšใ€ไธ€ๅฎšๆœŸ้–“(max_sil_kept=5็ง’?)ใ‚ˆใ‚Š้•ทใ็„ก้ŸณใŒ็ถšใ้ƒจๅˆ†ใ‚’ๆคœ็Ÿฅใ—ใฆ้Ÿณๅฃฐใ‚’ๅˆ†ๅ‰ฒใ—ใพใ™ใ€‚็„ก้Ÿณใง้Ÿณๅฃฐใ‚’ๅˆ†ๅ‰ฒใ—ใŸๅพŒใฏใ€0.3็ง’ใฎoverlapใ‚’ๅซใ‚€4็ง’ใ”ใจใซ้Ÿณๅฃฐใ‚’ๅˆ†ๅ‰ฒใ—ใพใ™ใ€‚4็ง’ไปฅๅ†…ใซๅŒบๅˆ‡ใ‚‰ใ‚ŒใŸ้Ÿณๅฃฐใฏใ€้Ÿณ้‡ใฎๆญฃ่ฆๅŒ–ใ‚’่กŒใฃใŸๅพŒwavใƒ•ใ‚กใ‚คใƒซใ‚’`/logs/ๅฎŸ้จ“ๅ/0_gt_wavs`ใซใ€ใใ“ใ‹ใ‚‰16kใฎใ‚ตใƒณใƒ—ใƒชใƒณใ‚ฐใƒฌใƒผใƒˆใซๅค‰ๆ›ใ—ใฆ`/logs/ๅฎŸ้จ“ๅ/1_16k_wavs`ใซwavใƒ•ใ‚กใ‚คใƒซใงไฟๅญ˜ใ—ใพใ™ใ€‚
30
+
31
+ ## step2b
32
+ ### ใƒ”ใƒƒใƒใฎๆŠฝๅ‡บ
33
+ wavใƒ•ใ‚กใ‚คใƒซใ‹ใ‚‰ใƒ”ใƒƒใƒ(้Ÿณใฎ้ซ˜ไฝŽ)ใฎๆƒ…ๅ ฑใ‚’ๆŠฝๅ‡บใ—ใพใ™ใ€‚parselmouthใ‚„pyworldใซๅ†…่”ตใ•ใ‚Œใฆใ„ใ‚‹ๆ‰‹ๆณ•ใงใƒ”ใƒƒใƒๆƒ…ๅ ฑ(=f0)ใ‚’ๆŠฝๅ‡บใ—ใ€`/logs/ๅฎŸ้จ“ๅ/2a_f0`ใซไฟๅญ˜ใ—ใพใ™ใ€‚ใใฎๅพŒใ€ใƒ”ใƒƒใƒๆƒ…ๅ ฑใ‚’ๅฏพๆ•ฐใงๅค‰ๆ›ใ—ใฆ1~255ใฎๆ•ดๆ•ฐใซๅค‰ๆ›ใ—ใ€`/logs/ๅฎŸ้จ“ๅ/2b-f0nsf`ใซไฟๅญ˜ใ—ใพใ™ใ€‚
34
+
35
+ ### feature_printใฎๆŠฝๅ‡บ
36
+ HuBERTใ‚’็”จใ„ใฆwavใƒ•ใ‚กใ‚คใƒซใ‚’ไบ‹ๅ‰ใซembeddingใซๅค‰ๆ›ใ—ใพใ™ใ€‚`/logs/ๅฎŸ้จ“ๅ/1_16k_wavs`ใซไฟๅญ˜ใ—ใŸwavใƒ•ใ‚กใ‚คใƒซใ‚’่ชญใฟ่พผใฟใ€HuBERTใงwavใƒ•ใ‚กใ‚คใƒซใ‚’256ๆฌกๅ…ƒใฎ็‰นๅพด้‡ใซๅค‰ๆ›ใ—ใ€npyๅฝขๅผใง`/logs/ๅฎŸ้จ“ๅ/3_feature256`ใซไฟๅญ˜ใ—ใพใ™ใ€‚
37
+
38
+ ## step3
39
+ ใƒขใƒ‡ใƒซใฎใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚’่กŒใ„ใพใ™ใ€‚
40
+ ### ๅˆๅฟƒ่€…ๅ‘ใ‘็”จ่ชž่งฃ่ชฌ
41
+ ๆทฑๅฑคๅญฆ็ฟ’ใงใฏใƒ‡ใƒผใ‚ฟใ‚ปใƒƒใƒˆใ‚’ๅˆ†ๅ‰ฒใ—ใ€ๅฐ‘ใ—ใšใคๅญฆ็ฟ’ใ‚’้€ฒใ‚ใฆใ„ใใพใ™ใ€‚ไธ€ๅ›žใฎใƒขใƒ‡ใƒซใฎๆ›ดๆ–ฐ(step)ใงใฏใ€batch_sizeๅ€‹ใฎใƒ‡ใƒผใ‚ฟใ‚’ๅ–ใ‚Šๅ‡บใ—ไบˆๆธฌใจ่ชคๅทฎใฎไฟฎๆญฃใ‚’่กŒใ„ใพใ™ใ€‚ใ“ใ‚Œใ‚’ใƒ‡ใƒผใ‚ฟใ‚ปใƒƒใƒˆใซๅฏพใ—ใฆไธ€้€šใ‚Š่กŒใ†ใจไธ€epochใจๆ•ฐใˆใพใ™ใ€‚
42
+
43
+ ใใฎใŸใ‚ใ€ๅญฆ็ฟ’ๆ™‚้–“ใฏ 1stepๅฝ“ใŸใ‚Šใฎๅญฆ็ฟ’ๆ™‚้–“ x (ใƒ‡ใƒผใ‚ฟใ‚ปใƒƒใƒˆๅ†…ใฎใƒ‡ใƒผใ‚ฟๆ•ฐ รท ใƒใƒƒใƒใ‚ตใ‚คใ‚บ) x epochๆ•ฐ ใ‹ใ‹ใ‚Šใพใ™ใ€‚ไธ€่ˆฌใซใƒใƒƒใƒใ‚ตใ‚คใ‚บใ‚’ๅคงใใใ™ใ‚‹ใปใฉๅญฆ็ฟ’ใฏๅฎ‰ๅฎšใ—ใ€(1stepๅฝ“ใŸใ‚Šใฎๅญฆ็ฟ’ๆ™‚้–“รทใƒใƒƒใƒใ‚ตใ‚คใ‚บ)ใฏๅฐใ•ใใชใ‚Šใพใ™ใŒใ€ใใฎๅˆ†GPUใฎใƒกใƒขใƒชใ‚’ๅคšใไฝฟ็”จใ—ใพใ™ใ€‚GPUใฎRAMใฏnvidia-smiใ‚ณใƒžใƒณใƒ‰็ญ‰ใง็ขบ่ชใงใใพใ™ใ€‚ๅฎŸ่กŒ็’ฐๅขƒใฎใƒžใ‚ทใƒณใซๅˆใ‚ใ›ใฆใƒใƒƒใƒใ‚ตใ‚คใ‚บใ‚’ใงใใ‚‹ใ ใ‘ๅคงใใใ™ใ‚‹ใจใ‚ˆใ‚Š็Ÿญๆ™‚้–“ใงๅญฆ็ฟ’ใŒๅฏ่ƒฝใงใ™ใ€‚
44
+
45
+ ### pretrained modelใฎๆŒ‡ๅฎš
46
+ RVCใงใฏใƒขใƒ‡ใƒซใฎ่จ“็ทดใ‚’0ใ‹ใ‚‰ใงใฏใชใใ€ไบ‹ๅ‰ๅญฆ็ฟ’ๆธˆใฟใฎ้‡ใฟใ‹ใ‚‰้–‹ๅง‹ใ™ใ‚‹ใŸใ‚ใ€ๅฐ‘ใชใ„ใƒ‡ใƒผใ‚ฟใ‚ปใƒƒใƒˆใงๅญฆ็ฟ’ใ‚’่กŒใˆใพใ™ใ€‚
47
+
48
+ ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใงใฏ
49
+
50
+ - ้Ÿณ้ซ˜ใ‚ฌใ‚คใƒ‰ใ‚’่€ƒๆ…ฎใ™ใ‚‹ๅ ดๅˆใ€`RVCใฎใ‚ใ‚‹ๅ ดๆ‰€/pretrained/f0G40k.pth`ใจ`RVCใฎใ‚ใ‚‹ๅ ดๆ‰€/pretrained/f0D40k.pth`ใ‚’่ชญใฟ่พผใฟใพใ™ใ€‚
51
+ - ้Ÿณ้ซ˜ใ‚ฌใ‚คใƒ‰ใ‚’่€ƒๆ…ฎใ—ใชใ„ๅ ดๅˆใ€`RVCใฎใ‚ใ‚‹ๅ ดๆ‰€/pretrained/G40k.pth`ใจ`RVCใฎใ‚ใ‚‹ๅ ดๆ‰€/pretrained/D40k.pth`ใ‚’่ชญใฟ่พผใฟใพใ™ใ€‚
52
+
53
+ ๅญฆ็ฟ’ๆ™‚ใฏsave_every_epochใ”ใจใซใƒขใƒ‡ใƒซใฎใƒ‘ใƒฉใƒกใƒผใ‚ฟใŒ`logs/ๅฎŸ้จ“ๅ/G_{}.pth`ใจ`logs/ๅฎŸ้จ“ๅ/D_{}.pth`ใซไฟๅญ˜ใ•ใ‚Œใพใ™ใŒใ€ใ“ใฎใƒ‘ใ‚นใ‚’ๆŒ‡ๅฎšใ™ใ‚‹ใ“ใจใงๅญฆ็ฟ’ใ‚’ๅ†้–‹ใ—ใŸใ‚Šใ€ใ‚‚ใ—ใใฏ้•ใ†ๅฎŸ้จ“ใงๅญฆ็ฟ’ใ—ใŸใƒขใƒ‡ใƒซใฎ้‡ใฟใ‹ใ‚‰ๅญฆ็ฟ’ใ‚’้–‹ๅง‹ใงใใพใ™ใ€‚
54
+
55
+ ### indexใฎๅญฆ็ฟ’
56
+ RVCใงใฏๅญฆ็ฟ’ๆ™‚ใซไฝฟใ‚ใ‚ŒใŸHuBERTใฎ็‰นๅพด้‡ใ‚’ไฟๅญ˜ใ—ใ€ๆŽจ่ซ–ๆ™‚ใฏๅญฆ็ฟ’ๆ™‚ใฎ็‰นๅพด้‡ใ‹ใ‚‰่ฟ‘ใ„็‰นๅพด้‡ใ‚’ๆŽขใ—ใฆใใฆๆŽจ่ซ–ใ‚’่กŒใ„ใพใ™ใ€‚ใ“ใฎๆคœ็ดขใ‚’้ซ˜้€Ÿใซ่กŒใ†ใŸใ‚ใซไบ‹ๅ‰ใซindexใฎๅญฆ็ฟ’ใ‚’่กŒใ„ใพใ™ใ€‚
57
+ indexใฎๅญฆ็ฟ’ใซใฏ่ฟ‘ไผผ่ฟ‘ๅ‚ๆŽข็ดขใƒฉใ‚คใƒ–ใƒฉใƒชใฎfaissใ‚’็”จใ„ใพใ™ใ€‚`/logs/ๅฎŸ้จ“ๅ/3_feature256`ใฎ็‰นๅพด้‡ใ‚’่ชญใฟ่พผใฟใ€ใใ‚Œใ‚’็”จใ„ใฆๅญฆ็ฟ’ใ—ใŸindexใ‚’`/logs/ๅฎŸ้จ“ๅ/add_XXX.index`ใจใ—ใฆไฟๅญ˜ใ—ใพใ™ใ€‚
58
+ (20230428updateใ‚ˆใ‚Štotal_fea.npyใฏindexใ‹ใ‚‰่ชญใฟ่พผใ‚€ใฎใงไธ่ฆใซใชใ‚Šใพใ—ใŸใ€‚)
59
+
60
+ ### ใƒœใ‚ฟใƒณใฎ่ชฌๆ˜Ž
61
+ - ใƒขใƒ‡ใƒซใฎใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐ: step2bใพใงใ‚’ๅฎŸ่กŒใ—ใŸๅพŒใ€ใ“ใฎใƒœใ‚ฟใƒณใ‚’ๆŠผใ™ใจใƒขใƒ‡ใƒซใฎๅญฆ็ฟ’ใ‚’่กŒใ„ใพใ™ใ€‚
62
+ - ็‰นๅพดใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นใฎใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐ: ใƒขใƒ‡ใƒซใฎใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐๅพŒใ€indexใฎๅญฆ็ฟ’ใ‚’่กŒใ„ใพใ™ใ€‚
63
+ - ใƒฏใƒณใ‚ฏใƒชใƒƒใ‚ฏใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐ: step2bใพใงใจใƒขใƒ‡ใƒซใฎใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ€็‰นๅพดใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นใฎใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚’ไธ€ๆ‹ฌใง่กŒใ„ใพใ™ใ€‚
64
+
docs/kr/README.ko.han.md ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div align="center">
2
+
3
+ # Retrieval-based-Voice-Conversion-WebUI
4
+ VITSๅŸบ็›ค์˜ ็ฐกๅ–ฎํ•˜๊ณ ไฝฟ็”จํ•˜๊ธฐ ์‰ฌ์šด้Ÿณ่ฒ่ฎŠๆ›ํ‹€
5
+
6
+
7
+
8
+ [![madewithlove](https://img.shields.io/badge/made_with-%E2%9D%A4-red?style=for-the-badge&labelColor=orange
9
+ )](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI)
10
+
11
+ ![moe](https://counter.seku.su/cmoe?name=rvc&theme=r34)
12
+
13
+ [![Licence](https://img.shields.io/github/license/fumiama/Retrieval-based-Voice-Conversion-WebUI?style=for-the-badge)](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/blob/main/LICENSE)
14
+ [![Huggingface](https://img.shields.io/badge/๐Ÿค—%20-Spaces-yellow.svg?style=for-the-badge)](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/)
15
+
16
+ [![Discord](https://img.shields.io/badge/RVC%20Developers-Discord-7289DA?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/HcsmBBGyVk)
17
+
18
+ </div>
19
+
20
+ ------
21
+
22
+ [**English**](../en/README.en.md) | [**ไธญๆ–‡็ฎ€ไฝ“**](../../README.md) | [**ๆ—ฅๆœฌ่ชž**](../jp/README.ja.md) | [**ํ•œ๊ตญ์–ด**](../kr/README.ko.md) ([**้Ÿ“ๅœ‹่ชž**](../kr/README.ko.han.md)) | [**Franรงais**](../fr/README.fr.md) | [**Tรผrkรงe**](../tr/README.tr.md) | [**Portuguรชs**](../pt/README.pt.md)
23
+
24
+ > [็คบ็ฏ„ๆ˜ ๅƒ](https://www.bilibili.com/video/BV1pm4y1z7Gm/)์„ ็ขบ่ชํ•ด ๋ณด์„ธ์š”!
25
+
26
+ > RVC๋ฅผๆดป็”จํ•œๅฏฆๆ™‚้–“้Ÿณ่ฒ่ฎŠๆ›: [w-okada/voice-changer](https://github.com/w-okada/voice-changer)
27
+
28
+ > ๅŸบๆœฌ๋ชจ๋ธ์€ 50ๆ™‚้–“ๅ‡้‡์˜ ้ซ˜ๅ“่ณช ์˜คํ”ˆ ์†Œ์Šค VCTK ๋ฐ์ดํ„ฐ์…‹์„ ไฝฟ็”จํ•˜์˜€์œผ๋ฏ€๋กœ, ่‘—ไฝœๆฌŠไธŠ์˜ ๅฟตๆ…ฎ๊ฐ€ ์—†์œผ๋‹ˆ ๅฎ‰ๅฟƒํ•˜๊ณ  ไฝฟ็”จํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.
29
+
30
+ > ่‘—ไฝœๆฌŠๅ•้กŒ๊ฐ€ ์—†๋Š” ้ซ˜ๅ“่ณช์˜ ๋…ธ๋ž˜๋ฅผ ไปฅๅพŒ์—๋„ ็นผ็บŒํ•ด์„œ ่จ“็ทดํ•  ่ฑซๅฎš์ž…๋‹ˆ๋‹ค.
31
+
32
+ ## ็ดนไป‹
33
+ ๆœฌRepo๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ็‰นๅพต์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:
34
+ + top1ๆชข็ดข์„ๅˆฉ็”จํ•˜์—ฌ ๅ…ฅๅŠ›้Ÿณ่‰ฒ็‰นๅพต์„ ่จ“็ทด์„ธํŠธ้Ÿณ่‰ฒ็‰นๅพต์œผ๋กœ ไปฃๆ›ฟํ•˜์—ฌ ้Ÿณ่‰ฒ์˜ๆผๅ‡บ์„ ้˜ฒๆญข;
35
+ + ็›ธๅฐ็š„์œผ๋กœ ๋‚ฎ์€ๆ€ง่ƒฝ์˜ GPU์—์„œ๋„ ๋น ๋ฅธ่จ“็ทดๅฏ่ƒฝ;
36
+ + ์ ์€้‡์˜ ๋ฐ์ดํ„ฐ๋กœ ่จ“็ทดํ•ด๋„ ์ข‹์€ ็ตๆžœ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ (ๆœ€ๅฐ10ๅˆ†ไปฅไธŠ์˜ ไฝŽ้›œ์Œ้Ÿณ่ฒ๋ฐ์ดํ„ฐ๋ฅผ ไฝฟ็”จํ•˜๋Š” ๊ฒƒ์„ ๅ‹ธ็Ž);
37
+ + ๋ชจ๋ธ่žๅˆ์„้€šํ•œ ้Ÿณ่‰ฒ์˜ ่ฎŠ่ชฟๅฏ่ƒฝ (ckpt่™•็†ํƒญ->ckptๆททๅˆ้ธๆ“‡);
38
+ + ไฝฟ็”จํ•˜๊ธฐ ์‰ฌ์šด WebUI (์›น ไฝฟ็”จ่€…์ธํ„ฐํŽ˜์ด์Šค);
39
+ + UVR5 ๋ชจ๋ธ์„ ๅˆฉ็”จํ•˜์—ฌ ๋ชฉ์†Œ๋ฆฌ์™€ ่ƒŒๆ™ฏ้Ÿณๆจ‚์˜ ๋น ๋ฅธ ๅˆ†้›ข;
40
+
41
+ ## ็’ฐๅขƒ์˜ๆบ–ๅ‚™
42
+ poetry๋ฅผ้€šํ•ด ไพๅญ˜๋ฅผ่จญ็ฝฎํ•˜๋Š” ๊ฒƒ์„ ๅ‹ธ็Žํ•ฉ๋‹ˆ๋‹ค.
43
+
44
+ ๋‹ค์Œๅ‘ฝไปค์€ Python ๋ฒ„์ „3.8ไปฅไธŠ์˜็’ฐๅขƒ์—์„œ ๅฏฆ่กŒ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
45
+ ```bash
46
+ # PyTorch ้—œ่ฏไธป่ฆไพๅญ˜่จญ็ฝฎ, ์ด๋ฏธ่จญ็ฝฎ๋˜์–ด ์žˆ๋Š” ๅขƒ้‡ ๊ฑด๋„ˆ๋›ฐ๊ธฐ ๅฏ่ƒฝ
47
+ # ๅƒ็…ง: https://pytorch.org/get-started/locally/
48
+ pip install torch torchvision torchaudio
49
+
50
+ # Windows + Nvidia Ampere Architecture(RTX30xx)๋ฅผ ไฝฟ็”จํ•˜๊ณ  ์žˆ๋‹ค้ข, #21 ์—์„œ ๋ช…์‹œ๋œ ๊ฒƒ๊ณผ ๊ฐ™์ด PyTorch์— ๋งž๋Š” CUDA ๋ฒ„์ „์„ ๆŒ‡ๅฎšํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
51
+ #pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117
52
+
53
+ # Poetry ่จญ็ฝฎ, ์ด๋ฏธ่จญ็ฝฎ๋˜์–ด ์žˆ๋Š” ๅขƒ้‡ ๊ฑด๋„ˆ๋›ฐ๊ธฐ ๅฏ่ƒฝ
54
+ # Reference: https://python-poetry.org/docs/#installation
55
+ curl -sSL https://install.python-poetry.org | python3 -
56
+
57
+ # ไพๅญ˜่จญ็ฝฎ
58
+ poetry install
59
+ ```
60
+ pip๋ฅผ ๆดป็”จํ•˜์—ฌไพๅญ˜๋ฅผ ่จญ็ฝฎํ•˜์—ฌ๋„ ็„กๅฆจํ•ฉ๋‹ˆ๋‹ค.
61
+
62
+ ```bash
63
+ pip install -r requirements/main.txt
64
+ ```
65
+
66
+ ## ๅ…ถไป–้ ๅ‚™๋ชจ๋ธๆบ–ๅ‚™
67
+ RVC ๋ชจ๋ธ์€ ๆŽจ่ซ–๊ณผ่จ“็ทด์„ ไพํ•˜์—ฌ ๋‹ค๋ฅธ ้ ๅ‚™๋ชจ๋ธ์ด ๅฟ…่ฆํ•ฉ๋‹ˆ๋‹ค.
68
+
69
+ [Huggingface space](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/)๋ฅผ ้€šํ•ด์„œ ๋‹ค์šด๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
70
+
71
+ ๋‹ค์Œ์€ RVC์— ๅฟ…่ฆํ•œ ้ ๅ‚™๋ชจ๋ธ ๋ฐ ๅ…ถไป– ํŒŒ์ผ ็›ฎ้Œ„์ž…๋‹ˆ๋‹ค:
72
+ ```bash
73
+ ./assets/hubert/hubert_base.pt
74
+
75
+ ./assets/pretrained
76
+
77
+ ./assets/uvr5_weights
78
+
79
+ V2 ๋ฒ„์ „ ๋ชจ๋ธ์„ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด ์ถ”๊ฐ€ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
80
+
81
+ ./assets/pretrained_v2
82
+
83
+ ```
84
+ ๊ทธๅพŒ ไปฅไธ‹์˜ ๅ‘ฝไปค์„ ไฝฟ็”จํ•˜์—ฌ WebUI๋ฅผ ๅง‹ไฝœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
85
+ ```bash
86
+ python web.py
87
+ ```
88
+ Windows๋ฅผ ไฝฟ็”จํ•˜๋Š”ๅขƒ้‡ `RVC-beta.7z`๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ ๅฃ“็ธฎ่งฃ้™คํ•˜์—ฌ RVC๋ฅผ ็›ดๆŽฅไฝฟ็”จํ•˜๊ฑฐ๋‚˜ `go-web.bat`์„ ไฝฟ็”จํ•˜์—ฌ WebUi๋ฅผ ็›ดๆŽฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
89
+
90
+ ## ๅƒ่€ƒ
91
+ + [ContentVec](https://github.com/auspicious3000/contentvec/)
92
+ + [VITS](https://github.com/jaywalnut310/vits)
93
+ + [HIFIGAN](https://github.com/jik876/hifi-gan)
94
+ + [Gradio](https://github.com/gradio-app/gradio)
95
+ + [Ultimate Vocal Remover](https://github.com/Anjok07/ultimatevocalremovergui)
96
+ + [audio-slicer](https://github.com/openvpi/audio-slicer)
97
+ ## ๋ชจ๋“ ๅฏ„่ˆ‡่€…๋ถ„๋“ค์˜ๅ‹žๅŠ›์—ๆ„Ÿ่ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค
98
+
99
+ [![contributors](https://contrib.rocks/image?repo=fumiama/Retrieval-based-Voice-Conversion-WebUI)](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/graphs/contributors)
100
+
docs/kr/README.ko.md ADDED
@@ -0,0 +1,359 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div align="center">
2
+
3
+ # Retrieval-based-Voice-Conversion-WebUI
4
+ VITS ๊ธฐ๋ฐ˜์˜ ๊ฐ„๋‹จํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด ์Œ์„ฑ ๋ณ€ํ™˜ ํ”„๋ ˆ์ž„์›Œํฌ.
5
+
6
+ [![madewithlove](https://img.shields.io/badge/made_with-%E2%9D%A4-red?style=for-the-badge&labelColor=orange)](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI)
7
+
8
+ ![moe](https://counter.seku.su/cmoe?name=rvc&theme=r34)
9
+
10
+ [![Licence](https://img.shields.io/github/license/fumiama/Retrieval-based-Voice-Conversion-WebUI?style=for-the-badge)](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/blob/main/LICENSE)
11
+ [![Huggingface](https://img.shields.io/badge/๐Ÿค—%20-Spaces-yellow.svg?style=for-the-badge)](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/)
12
+
13
+ [![Discord](https://img.shields.io/badge/RVC%20Developers-Discord-7289DA?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/HcsmBBGyVk)
14
+
15
+ [**์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ**](./faq_ko.md) | [**AutoDLยท5์›์œผ๋กœ AI ๊ฐ€์ˆ˜ ํ›ˆ๋ จ**](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/wiki/Autodl%E8%AE%AD%E7%BB%83RVC%C2%B7AI%E6%AD%8C%E6%89%8B%E6%95%99%E7%A8%8B) | [**๋Œ€์กฐ ์‹คํ—˜ ๊ธฐ๋ก**](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/wiki/%E5%AF%B9%E7%85%A7%E5%AE%9E%E9%AA%8C%C2%B7%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95) | [**์˜จ๋ผ์ธ ๋ฐ๋ชจ**](https://modelscope.cn/studios/FlowerCry/RVCv2demo)
16
+
17
+ [**English**](../en/README.en.md) | [**ไธญๆ–‡็ฎ€ไฝ“**](../../README.md) | [**ๆ—ฅๆœฌ่ชž**](../jp/README.ja.md) | [**ํ•œ๊ตญ์–ด**](../kr/README.ko.md) ([**้Ÿ“ๅœ‹่ชž**](../kr/README.ko.han.md)) | [**Franรงais**](../fr/README.fr.md) | [**Tรผrkรงe**](../tr/README.tr.md) | [**Portuguรชs**](../pt/README.pt.md)
18
+
19
+ </div>
20
+
21
+ > ๊ธฐ๋ณธ ๋ชจ๋ธ์€ 50์‹œ๊ฐ„ ๊ฐ€๋Ÿ‰์˜ ๊ณ ํ€„๋ฆฌํ‹ฐ ์˜คํ”ˆ ์†Œ์Šค VCTK ๋ฐ์ดํ„ฐ์…‹์„ ์‚ฌ์šฉํ•˜์˜€์œผ๋ฏ€๋กœ, ์ €์ž‘๊ถŒ์ƒ์˜ ์—ผ๋ ค๊ฐ€ ์—†์œผ๋‹ˆ ์•ˆ์‹ฌํ•˜๊ณ  ์‚ฌ์šฉํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.
22
+
23
+ > ๋” ํฐ ๋งค๊ฐœ๋ณ€์ˆ˜, ๋” ํฐ ๋ฐ์ดํ„ฐ, ๋” ๋‚˜์€ ํšจ๊ณผ, ๊ธฐ๋ณธ์ ์œผ๋กœ ๋™์ผํ•œ ์ถ”๋ก  ์†๋„, ๋” ์ ์€ ์–‘์˜ ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•œ RVCv3์˜ ๊ธฐ๋ณธ ๋ชจ๋ธ์„ ๊ธฐ๋Œ€ํ•ด ์ฃผ์‹ญ์‹œ์˜ค.
24
+
25
+ > ํŠน์ • ์ง€์—ญ์—์„œ Hugging Face์— ์ง์ ‘ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋ฉฐ, ์„ฑ๊ณต์ ์œผ๋กœ ์—ฐ๊ฒฐํ•ด๋„ ์†๋„๊ฐ€ ๋งค์šฐ ๋Š๋ฆด ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋ชจ๋ธ/ํ†ตํ•ฉ ํŒจํ‚ค์ง€/๋„๊ตฌ์˜ ์ผ๊ด„ ๋‹ค์šด๋กœ๋”๋ฅผ ํŠน๋ณ„ํžˆ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. [RVC-Models-Downloader](https://github.com/fumiama/RVC-Models-Downloader)
26
+
27
+ | ํ›ˆ๋ จ ๋ฐ ์ถ”๋ก  ์ธํ„ฐํŽ˜์ด์Šค |
28
+ | :--------: |
29
+ | ![web](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/assets/41315874/17e48404-2627-4fad-a0ec-65f9065aeade) |
30
+
31
+ | ์‹ค์‹œ๊ฐ„ ์Œ์„ฑ ๋ณ€ํ™˜ ์ธํ„ฐํŽ˜์ด์Šค |
32
+ | :---------: |
33
+ | ![realtime-gui](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/assets/41315874/95b36866-b92d-40c7-b5db-6a35ca5caeac) |
34
+
35
+ ## ์†Œ๊ฐœ
36
+
37
+ ๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:
38
+
39
+ - top1 ๊ฒ€์ƒ‰์„ ์ด์šฉํ•˜์—ฌ ์ž…๋ ฅ ์Œ์ƒ‰ ํŠน์ง•์„ ํ›ˆ๋ จ ์„ธํŠธ ์Œ์ƒ‰ ํŠน์ง•์œผ๋กœ ๋Œ€์ฒดํ•˜์—ฌ ์Œ์ƒ‰์˜ ๋ˆ„์ถœ์„ ๋ฐฉ์ง€
40
+ - ์ƒ๋Œ€์ ์œผ๋กœ ๋‚ฎ์€ ์„ฑ๋Šฅ์˜ GPU์—์„œ๋„ ๋น ๋ฅธ ํ›ˆ๋ จ ๊ฐ€๋Šฅ
41
+ - ์ ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋กœ ํ›ˆ๋ จํ•ด๋„ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ (์ตœ์†Œ 10๋ถ„ ์ด์ƒ์˜ ์ €์žก์Œ ์Œ์„ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ)
42
+ - ๋ชจ๋ธ ์œตํ•ฉ์„ ํ†ตํ•œ ์Œ์ƒ‰์˜ ๋ณ€์กฐ ๊ฐ€๋Šฅ (ckpt ์ฒ˜๋ฆฌ ํƒญ->ckpt ๋ณ‘ํ•ฉ ์„ ํƒ)
43
+ - ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด WebUI (์›น ์ธํ„ฐํŽ˜์ด์Šค)
44
+ - UVR5 ๋ชจ๋ธ์„ ์ด์šฉํ•˜์—ฌ ๋ชฉ์†Œ๋ฆฌ์™€ ๋ฐฐ๊ฒฝ์Œ์•…์˜ ๋น ๋ฅธ ๋ถ„๋ฆฌ;
45
+ - ์ตœ์ฒจ๋‹จ [์Œ์„ฑ ํ”ผ์น˜ ์ถ”์ถœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ InterSpeech2023-RMVPE](#ๅ‚่€ƒ้กน็›ฎ)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌด์„ฑ์Œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ํšจ๊ณผ๋Š” ์ตœ๊ณ (์••๋„์ )์ด๋ฉฐ crepe_full๋ณด๋‹ค ๋” ๋น ๋ฅด๊ณ  ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ์ด ์ ์Œ
46
+ - A์นด๋“œ์™€ I์นด๋“œ ๊ฐ€์†์„ ์ง€์›
47
+
48
+ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์˜ [๋ฐ๋ชจ ๋น„๋””์˜ค](https://www.bilibili.com/video/BV1pm4y1z7Gm/)๋ฅผ ํ™•์ธํ•ด๋ณด์„ธ์š”!
49
+
50
+ ## ํ™˜๊ฒฝ ์„ค์ •
51
+
52
+ ๋‹ค์Œ ๋ช…๋ น์€ Python ๋ฒ„์ „์ด 3.8 ์ด์ƒ์ธ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
53
+
54
+ ### Windows/Linux/MacOS ๋“ฑ ํ”Œ๋žซํผ ๊ณตํ†ต ๋ฐฉ๋ฒ•
55
+
56
+ ์•„๋ž˜ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์„ธ์š”.
57
+
58
+ #### 1. pip๋ฅผ ํ†ตํ•œ ์˜์กด์„ฑ ์„ค์น˜
59
+
60
+ 1. Pytorch ๋ฐ ์˜์กด์„ฑ ๋ชจ๋“ˆ ์„ค์น˜, ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉด ์ƒ๋žต. ์ฐธ์กฐ: https://pytorch.org/get-started/locally/
61
+
62
+ ```bash
63
+ pip install torch torchvision torchaudio
64
+ ```
65
+
66
+ 2. win ์‹œ์Šคํ…œ + Nvidia Ampere ์•„ํ‚คํ…์ฒ˜(RTX30xx) ์‚ฌ์šฉ ์‹œ, #21์˜ ์‚ฌ๋ก€์— ๋”ฐ๋ผ pytorch์— ํ•ด๋‹นํ•˜๋Š” cuda ๋ฒ„์ „์„ ์ง€์ •
67
+
68
+ ```bash
69
+ pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117
70
+ ```
71
+
72
+ 3. ์ž์‹ ์˜ ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ์— ๋งž๋Š” ์˜์กด์„ฑ ์„ค์น˜
73
+
74
+ - N์นด๋“œ
75
+
76
+ ```bash
77
+ pip install -r requirements/main.txt
78
+ ```
79
+
80
+ - A์นด๋“œ/I์นด๋“œ
81
+
82
+ ```bash
83
+ pip install -r requirements/dml.txt
84
+ ```
85
+
86
+ - A์นด๋“œROCM(Linux)
87
+
88
+ ```bash
89
+ pip install -r requirements/amd.txt
90
+ ```
91
+
92
+ - I์นด๋“œIPEX(Linux)
93
+
94
+ ```bash
95
+ pip install -r requirements/ipex.txt
96
+ ```
97
+
98
+ #### 2. poetry๋ฅผ ํ†ตํ•œ ์˜์กด์„ฑ ์„ค์น˜
99
+
100
+ Poetry ์˜์กด์„ฑ ๊ด€๋ฆฌ ๋„๊ตฌ ์„ค์น˜, ์ด๋ฏธ ์„ค์น˜๋œ ๊ฒฝ์šฐ ์ƒ๋žต. ์ฐธ์กฐ: https://python-poetry.org/docs/#installation
101
+
102
+ ```bash
103
+ curl -sSL https://install.python-poetry.org | python3 -
104
+ ```
105
+
106
+ poetry๋ฅผ ํ†ตํ•œ ์˜์กด์„ฑ ์„ค์น˜
107
+
108
+ ```bash
109
+ poetry install
110
+ ```
111
+
112
+ ### MacOS
113
+
114
+ `run.sh`๋ฅผ ํ†ตํ•ด ์˜์กด์„ฑ ์„ค์น˜ ๊ฐ€๋Šฅ
115
+
116
+ ```bash
117
+ sh ./run.sh
118
+ ```
119
+
120
+ <!--
121
+
122
+ ## ๅ…ถไป–่ต„ๆบๅ‡†ๅค‡
123
+ ### 1. assets
124
+ > RVC้œ€่ฆไฝไบŽ`assets`ๆ–‡ไปถๅคนไธ‹็š„ไธ€ไบ›ๆจกๅž‹่ต„ๆบ่ฟ›่กŒๆŽจ็†ๅ’Œ่ฎญ็ปƒใ€‚
125
+ #### ่‡ชๅŠจๆฃ€ๆŸฅ/ไธ‹่ฝฝ่ต„ๆบ(้ป˜่ฎค)
126
+ > ้ป˜่ฎคๆƒ…ๅ†ตไธ‹๏ผŒRVCๅฏๅœจไธป็จ‹ๅบๅฏๅŠจๆ—ถ่‡ชๅŠจๆฃ€ๆŸฅๆ‰€้œ€่ต„ๆบ็š„ๅฎŒๆ•ดๆ€งใ€‚
127
+
128
+ > ๅณไฝฟ่ต„ๆบไธๅฎŒๆ•ด๏ผŒ็จ‹ๅบไนŸๅฐ†็ปง็ปญๅฏๅŠจใ€‚
129
+
130
+ - ๅฆ‚ๆžœๆ‚จๅธŒๆœ›ไธ‹่ฝฝๆ‰€ๆœ‰่ต„ๆบ๏ผŒ่ฏทๆทปๅŠ `--update`ๅ‚ๆ•ฐ
131
+ - ๅฆ‚ๆžœๆ‚จๅธŒๆœ›่ทณ่ฟ‡ๅฏๅŠจๆ—ถ็š„่ต„ๆบๅฎŒๆ•ดๆ€งๆฃ€ๆŸฅ๏ผŒ่ฏทๆทปๅŠ `--nocheck`ๅ‚ๆ•ฐ
132
+
133
+ #### ๆ‰‹ๅŠจไธ‹่ฝฝ่ต„ๆบ
134
+ > ๆ‰€ๆœ‰่ต„ๆบๆ–‡ไปถๅ‡ไฝไบŽ[Hugging Face space](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/)
135
+
136
+ > ไฝ ๅฏไปฅๅœจ`tools`ๆ–‡ไปถๅคนๆ‰พๅˆฐไธ‹่ฝฝๅฎƒไปฌ็š„่„šๆœฌ
137
+
138
+ > ไฝ ไนŸๅฏไปฅไฝฟ็”จๆจกๅž‹/ๆ•ดๅˆๅŒ…/ๅทฅๅ…ท็š„ไธ€้”ฎไธ‹่ฝฝๅ™จ๏ผš[RVC-Models-Downloader](https://github.com/fumiama/RVC-Models-Downloader)
139
+
140
+ ไปฅไธ‹ๆ˜ฏไธ€ไปฝๆธ…ๅ•๏ผŒๅŒ…ๆ‹ฌไบ†ๆ‰€ๆœ‰RVCๆ‰€้œ€็š„้ข„ๆจกๅž‹ๅ’Œๅ…ถไป–ๆ–‡ไปถ็š„ๅ็งฐใ€‚
141
+
142
+ - ./assets/hubert/hubert_base.pt
143
+ ```bash
144
+ rvcmd assets/hubert # RVC-Models-Downloader command
145
+ ```
146
+ - ./assets/pretrained
147
+ ```bash
148
+ rvcmd assets/v1 # RVC-Models-Downloader command
149
+ ```
150
+ - ./assets/uvr5_weights
151
+ ```bash
152
+ rvcmd assets/uvr5 # RVC-Models-Downloader command
153
+ ```
154
+ ๆƒณไฝฟ็”จv2็‰ˆๆœฌๆจกๅž‹็š„่ฏ๏ผŒ้œ€่ฆ้ขๅค–ไธ‹่ฝฝ
155
+
156
+ - ./assets/pretrained_v2
157
+ ```bash
158
+ rvcmd assets/v2 # RVC-Models-Downloader command
159
+ ```
160
+
161
+ ### 3. ไธ‹่ฝฝ rmvpe ไบบๅฃฐ้Ÿณ้ซ˜ๆๅ–็ฎ—ๆณ•ๆ‰€้œ€ๆ–‡ไปถ
162
+
163
+ ๅฆ‚ๆžœไฝ ๆƒณไฝฟ็”จๆœ€ๆ–ฐ็š„RMVPEไบบๅฃฐ้Ÿณ้ซ˜ๆๅ–็ฎ—ๆณ•๏ผŒๅˆ™ไฝ ้œ€่ฆไธ‹่ฝฝ้Ÿณ้ซ˜ๆๅ–ๆจกๅž‹ๅ‚ๆ•ฐๅนถๆ”พ็ฝฎไบŽ`assets/rmvpe`ใ€‚
164
+
165
+ - ไธ‹่ฝฝ[rmvpe.pt](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.pt)
166
+ ```bash
167
+ rvcmd assets/rmvpe # RVC-Models-Downloader command
168
+ ```
169
+
170
+ #### ไธ‹่ฝฝ rmvpe ็š„ dml ็Žฏๅขƒ(ๅฏ้€‰, Aๅก/Iๅก็”จๆˆท)
171
+
172
+ - ไธ‹่ฝฝ[rmvpe.onnx](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.onnx)
173
+ ```bash
174
+ rvcmd assets/rmvpe # RVC-Models-Downloader command
175
+ ```
176
+
177
+ ### 4. AMDๆ˜พๅกRocm(ๅฏ้€‰, ไป…Linux)
178
+
179
+ ๅฆ‚ๆžœไฝ ๆƒณๅŸบไบŽAMD็š„RocmๆŠ€ๆœฏๅœจLinux็ณป็ปŸไธŠ่ฟ่กŒRVC๏ผŒ่ฏทๅ…ˆๅœจ[่ฟ™้‡Œ](https://rocm.docs.amd.com/en/latest/deploy/linux/os-native/install.html)ๅฎ‰่ฃ…ๆ‰€้œ€็š„้ฉฑๅŠจใ€‚
180
+
181
+ ่‹ฅไฝ ไฝฟ็”จ็š„ๆ˜ฏArch Linux๏ผŒๅฏไปฅไฝฟ็”จpacmanๆฅๅฎ‰่ฃ…ๆ‰€้œ€้ฉฑๅŠจ๏ผš
182
+ ````
183
+ pacman -S rocm-hip-sdk rocm-opencl-sdk
184
+ ````
185
+ ๅฏนไบŽๆŸไบ›ๅž‹ๅท็š„ๆ˜พๅก๏ผŒไฝ ๅฏ่ƒฝ้œ€่ฆ้ขๅค–้…็ฝฎๅฆ‚ไธ‹็š„็Žฏๅขƒๅ˜้‡๏ผˆๅฆ‚๏ผšRX6700XT๏ผ‰๏ผš
186
+ ````
187
+ export ROCM_PATH=/opt/rocm
188
+ export HSA_OVERRIDE_GFX_VERSION=10.3.0
189
+ ````
190
+ ๅŒๆ—ถ็กฎไฟไฝ ็š„ๅฝ“ๅ‰็”จๆˆทๅค„ไบŽ`render`ไธŽ`video`็”จๆˆท็ป„ๅ†…๏ผš
191
+ ````
192
+ sudo usermod -aG render $USERNAME
193
+ sudo usermod -aG video $USERNAME
194
+ ````
195
+
196
+ ## ๅผ€ๅง‹ไฝฟ็”จ
197
+ ### ็›ดๆŽฅๅฏๅŠจ
198
+ ไฝฟ็”จไปฅไธ‹ๆŒ‡ไปคๆฅๅฏๅŠจ WebUI
199
+ ```bash
200
+ python web.py
201
+ ```
202
+ ### Linux/MacOS ็”จๆˆท
203
+ ```bash
204
+ ./run.sh
205
+ ```
206
+ ### ๅฏนไบŽ้œ€่ฆไฝฟ็”จIPEXๆŠ€ๆœฏ็š„Iๅก็”จๆˆท(ไป…Linux)
207
+ ```bash
208
+ source /opt/intel/oneapi/setvars.sh
209
+ ./run.sh
210
+ ```
211
+ ### ไฝฟ็”จๆ•ดๅˆๅŒ… (Windows ็”จๆˆท)
212
+ ไธ‹่ฝฝๅนถ่งฃๅŽ‹`RVC-beta.7z`๏ผŒ่งฃๅŽ‹ๅŽๅŒๅ‡ป`go-web.bat`ๅณๅฏไธ€้”ฎๅฏๅŠจใ€‚
213
+ ```bash
214
+ rvcmd packs/general/latest # RVC-Models-Downloader command
215
+ ```
216
+
217
+ ## ๅ‚่€ƒ้กน็›ฎ
218
+ + [ContentVec](https://github.com/auspicious3000/contentvec/)
219
+ + [VITS](https://github.com/jaywalnut310/vits)
220
+ + [HIFIGAN](https://github.com/jik876/hifi-gan)
221
+ + [Gradio](https://github.com/gradio-app/gradio)
222
+ + [Ultimate Vocal Remover](https://github.com/Anjok07/ultimatevocalremovergui)
223
+ + [audio-slicer](https://github.com/openvpi/audio-slicer)
224
+ + [Vocal pitch extraction:RMVPE](https://github.com/Dream-High/RMVPE)
225
+ + The pretrained model is trained and tested by [yxlllc](https://github.com/yxlllc/RMVPE) and [RVC-Boss](https://github.com/RVC-Boss).
226
+
227
+ ## ๆ„Ÿ่ฐขๆ‰€ๆœ‰่ดก็Œฎ่€…ไฝœๅ‡บ็š„ๅŠชๅŠ›
228
+ [![contributors](https://contrib.rocks/image?repo=fumiama/Retrieval-based-Voice-Conversion-WebUI)](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/graphs/contributors)
229
+
230
+ translate to Korean
231
+ -->
232
+
233
+ ## ๊ธฐํƒ€ ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ๋ชจ๋ธ ์ค€๋น„
234
+
235
+ ### assets
236
+
237
+ > RVC๋Š” ์ถ”๋ก ๊ณผ ํ›ˆ๋ จ์„ ์œ„ํ•ด assets ํด๋” ํ•˜์œ„์— ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ๋ชจ๋ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
238
+
239
+ #### ์ž๋™ ๊ฒ€์‚ฌ/๋‹ค์šด๋กœ๋“œ ๋ฆฌ์†Œ์Šค(๊ธฐ๋ณธ๊ฐ’)
240
+
241
+ > ๊ธฐ๋ณธ์ ์œผ๋กœ RVC๋Š” ์‹œ์ž‘ํ•  ๋•Œ ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค์˜ ๋ฌด๊ฒฐ์„ฑ์„ ์ž๋™์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
242
+
243
+ > ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ถˆ์™„์ „ํ•˜๋”๋ผ๋„ ํ”„๋กœ๊ทธ๋žจ์€ ๊ณ„์† ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
244
+
245
+ - ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๋ ค๋ฉด `--update` ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”
246
+ - ์‹œ์ž‘ ์‹œ ๋ฆฌ์†Œ์Šค ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ๊ฑด๋„ˆ๋›ฐ๋ ค๋ฉด `--nocheck` ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”
247
+
248
+ #### ๋ฆฌ์†Œ์Šค ์ˆ˜๋™ ๋‹ค์šด๋กœ๋“œ
249
+
250
+ > ๋ชจ๋“  ๋ฆฌ์†Œ์Šค ํŒŒ์ผ์€ [Hugging Face space](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/)์— ์žˆ์Šต๋‹ˆ๋‹ค.
251
+
252
+ > ์ด๋“ค์„ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋Š” `tools` ํด๋”์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
253
+
254
+ > ๋ชจ๋ธ/ํ†ตํ•ฉ ํŒจํ‚ค์ง€/๋„๊ตฌ์˜ ์ผ๊ด„ ๋‹ค์šด๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค: [RVC-Models-Downloader](https://github.com/fumiama/RVC-Models-Downloader)
255
+
256
+ ๋‹ค์Œ์€ RVC์— ํ•„์š”ํ•œ ๋ชจ๋“  ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ๋ชจ๋ธ๊ณผ ๊ธฐํƒ€ ํŒŒ์ผ์˜ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.
257
+
258
+ - ./assets/hubert/hubert_base.pt
259
+
260
+ ```bash
261
+ rvcmd assets/hubert # RVC-Models-Downloader command
262
+ ```
263
+
264
+ - ./assets/pretrained
265
+
266
+ ```bash
267
+ rvcmd assets/v1 # RVC-Models-Downloader command
268
+ ```
269
+
270
+ - ./assets/uvr5_weights
271
+ ```bash
272
+ rvcmd assets/uvr5 # RVC-Models-Downloader command
273
+ ```
274
+
275
+ v2 ๋ฒ„์ „ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ถ”๊ฐ€๋กœ ๋‹ค์Œ์„ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
276
+
277
+ - ./assets/pretrained_v2
278
+ ```bash
279
+ rvcmd assets/v2 # RVC-Models-Downloader command
280
+ ```
281
+
282
+ ### 2. RMVPE ์ธ๊ฐ„ ์Œ์„ฑ ํ”ผ์น˜ ์ถ”์ถœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ํ•„์š”ํ•œ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ
283
+
284
+ ์ตœ์‹  RMVPE ์ธ๊ฐ„ ์Œ์„ฑ ํ”ผ์น˜ ์ถ”์ถœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์Œํ”ผ์น˜ ์ถ”์ถœ ๋ชจ๋ธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  RVC ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— ๋ฐฐ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
285
+
286
+ - [rmvpe.pt ๋‹ค์šด๋กœ๋“œ](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.pt)
287
+
288
+ #### dml ํ™˜๊ฒฝ์˜ RMVPE ๋‹ค์šด๋กœ๋“œ(์„ ํƒ์‚ฌํ•ญ, A์นด๋“œ/I์นด๋“œ ์‚ฌ์šฉ์ž)
289
+
290
+ - [rmvpe.onnx ๋‹ค์šด๋กœ๋“œ](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.onnx)
291
+
292
+ ### 3. AMD ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ Rocm(์„ ํƒ์‚ฌํ•ญ, Linux๋งŒ ํ•ด๋‹น)
293
+
294
+ Linux ์‹œ์Šคํ…œ์—์„œ AMD์˜ Rocm ๊ธฐ์ˆ ์„ ๊ธฐ๋ฐ˜์œผ๋กœ RVC๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด [์—ฌ๊ธฐ](https://rocm.docs.amd.com/en/latest/deploy/linux/os-native/install.html)์—์„œ ํ•„์š”ํ•œ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋จผ์ € ์„ค์น˜ํ•˜์„ธ์š”.
295
+
296
+ Arch Linux๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ pacman์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•„์š”ํ•œ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
297
+
298
+ ```
299
+ pacman -S rocm-hip-sdk rocm-opencl-sdk
300
+ ```
301
+
302
+ ์ผ๋ถ€ ๋ชจ๋ธ์˜ ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ(์˜ˆ: RX6700XT)์˜ ๊ฒฝ์šฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€๋กœ ์„ค์ •ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
303
+
304
+ ```
305
+ export ROCM_PATH=/opt/rocm
306
+ export HSA_OVERRIDE_GFX_VERSION=10.3.0
307
+ ```
308
+
309
+ ๋™์‹œ์— ํ˜„์žฌ ์‚ฌ์šฉ์ž๊ฐ€ `render` ๋ฐ `video` ์‚ฌ์šฉ์ž ๊ทธ๋ฃน์— ์†ํ•ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.
310
+
311
+ ```
312
+ sudo usermod -aG render $USERNAME
313
+ sudo usermod -aG video $USERNAME
314
+ ```
315
+
316
+ ## ์‹œ์ž‘ํ•˜๊ธฐ
317
+
318
+ ### ์ง์ ‘ ์‹œ์ž‘
319
+
320
+ ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ WebUI๋ฅผ ์‹œ์ž‘ํ•˜์„ธ์š”
321
+
322
+ ```bash
323
+ python web.py
324
+ ```
325
+
326
+ ### ํ†ตํ•ฉ ํŒจํ‚ค์ง€ ์‚ฌ์šฉ
327
+
328
+ `RVC-beta.7z`๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์••์ถ• ํ•ด์ œ
329
+
330
+ #### Windows ์‚ฌ์šฉ์ž
331
+
332
+ `go-web.bat` ๋”๋ธ” ํด๋ฆญ
333
+
334
+ #### MacOS ์‚ฌ์šฉ์ž
335
+
336
+ ```bash
337
+ sh ./run.sh
338
+ ```
339
+
340
+ ### IPEX ๊ธฐ์ˆ ์ด ํ•„์š”ํ•œ I์นด๋“œ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ์ง€์นจ(Linux๋งŒ ํ•ด๋‹น)
341
+
342
+ ```bash
343
+ source /opt/intel/oneapi/setvars.sh
344
+ ```
345
+
346
+ ## ์ฐธ์กฐ ํ”„๋กœ์ ํŠธ
347
+
348
+ - [ContentVec](https://github.com/auspicious3000/contentvec/)
349
+ - [VITS](https://github.com/jaywalnut310/vits)
350
+ - [HIFIGAN](https://github.com/jik876/hifi-gan)
351
+ - [Gradio](https://github.com/gradio-app/gradio)
352
+ - [Ultimate Vocal Remover](https://github.com/Anjok07/ultimatevocalremovergui)
353
+ - [audio-slicer](https://github.com/openvpi/audio-slicer)
354
+ - [Vocal pitch extraction:RMVPE](https://github.com/Dream-High/RMVPE)
355
+ - ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ๋ชจ๋ธ์€ [yxlllc](https://github.com/yxlllc/RMVPE)์™€ [RVC-Boss](https://github.com/RVC-Boss)์— ์˜ํ•ด ํ›ˆ๋ จ๋˜๊ณ  ํ…Œ์ŠคํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
356
+
357
+ ## ๋ชจ๋“  ๊ธฐ์—ฌ์ž๋“ค์˜ ๋…ธ๋ ฅ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค
358
+
359
+ [![contributors](https://contrib.rocks/image?repo=fumiama/Retrieval-based-Voice-Conversion-WebUI)](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/graphs/contributors)