diff --git a/.github/build_windows_packages.ps1 b/.github/build_windows_packages.ps1 index 2e4acb2a..75918d35 100644 --- a/.github/build_windows_packages.ps1 +++ b/.github/build_windows_packages.ps1 @@ -162,7 +162,7 @@ Copy-Item -Path $curr -Destination $pkgName -Recurse $7zPath = "$pkgName.7z" $start = Get-Date Write-Host "Compress Starting at $start" -& "C:\Program Files\7-Zip\7z.exe" a -t7z "$7zPath" "$pkgName" -m0=lzma2 -mx=9 -md=1g -ms=1g -mmc=500 -mfb=273 -mlc=0 -mlp=4 -mpb=4 -mc=8g -mmt=on -bsp1 +& "C:\Program Files\7-Zip\7z.exe" a -t7z "$7zPath" "$pkgName" -m0=lzma2 -mx=9 -mmt=on -bsp1 $end = Get-Date Write-Host "Elapsed time: $($end - $start)" Get-ChildItem . diff --git a/GPT_SoVITS/inference_webui.py b/GPT_SoVITS/inference_webui.py index 53f46101..01fbabbb 100644 --- a/GPT_SoVITS/inference_webui.py +++ b/GPT_SoVITS/inference_webui.py @@ -1333,5 +1333,6 @@ if __name__ == "__main__": inbrowser=True, share=is_share, server_port=infer_ttswebui, + show_api=False, # quiet=True, ) diff --git a/GPT_SoVITS/inference_webui_fast.py b/GPT_SoVITS/inference_webui_fast.py index 9227acd5..e9addc87 100644 --- a/GPT_SoVITS/inference_webui_fast.py +++ b/GPT_SoVITS/inference_webui_fast.py @@ -499,5 +499,6 @@ if __name__ == "__main__": inbrowser=True, share=is_share, server_port=infer_ttswebui, + show_api=False, # quiet=True, ) diff --git a/GPT_SoVITS/text/g2pw/onnx_api.py b/GPT_SoVITS/text/g2pw/onnx_api.py index a8268107..9d153745 100644 --- a/GPT_SoVITS/text/g2pw/onnx_api.py +++ b/GPT_SoVITS/text/g2pw/onnx_api.py @@ -23,8 +23,9 @@ from .utils import load_config onnxruntime.set_default_logger_severity(3) try: onnxruntime.preload_dlls() -except:pass - #traceback.print_exc() +except: + pass + # traceback.print_exc() warnings.filterwarnings("ignore") model_version = "1.1" diff --git a/README.md b/README.md index d03514f0..7c845800 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +# +

GPT-SoVITS-WebUI

@@ -7,12 +9,17 @@ A Powerful Few-shot Voice Conversion and Text-to-Speech WebUI.

RVC-Boss%2FGPT-SoVITS | Trendshift - +[![Train In Colab](https://img.shields.io/badge/Colab-Training-F9AB00?style=for-the-badge&logo=googlecolab)](https://colab.research.google.com/github/RVC-Boss/GPT-SoVITS/blob/main/Colab-WebUI.ipynb) +[![Infer In Colab](https://img.shields.io/badge/Colab-Inference-F9AB00?style=for-the-badge&logo=googlecolab)](https://colab.research.google.com/github/RVC-Boss/GPT-SoVITS/blob/main/Colab-Inference.ipynb) +[![Huggingface](https://img.shields.io/badge/HuggingFace-online%20demo-blue.svg?style=for-the-badge&logo=huggingface)](https://huggingface.co/spaces/lj1995/GPT-SoVITS-v2) -[![Open In Colab](https://img.shields.io/badge/Colab-F9AB00?style=for-the-badge&logo=googlecolab&color=525252)](https://colab.research.google.com/github/RVC-Boss/GPT-SoVITS/blob/main/colab_webui.ipynb) -[![License](https://img.shields.io/badge/LICENSE-MIT-green.svg?style=for-the-badge)](https://github.com/RVC-Boss/GPT-SoVITS/blob/main/LICENSE) -[![Huggingface](https://img.shields.io/badge/🤗%20-online%20demo-yellow.svg?style=for-the-badge)](https://huggingface.co/spaces/lj1995/GPT-SoVITS-v2) -[![Discord](https://img.shields.io/discord/1198701940511617164?color=%23738ADB&label=Discord&style=for-the-badge)](https://discord.gg/dnrgs5GHfG) +[![GitHub release](https://img.shields.io/github/v/release/RVC-Boss/gpt-sovits?style=for-the-badge&logo=github)](https://github.com/RVC-Boss/gpt-sovits/releases) +[![Image Size](https://img.shields.io/docker/image-size/xxxxrt666/gpt-sovits/latest?style=for-the-badge&logo=docker)](https://hub.docker.com/r/xxxxrt666/gpt-sovits) +[![License](https://img.shields.io/badge/LICENSE-MIT-green.svg?style=for-the-badge&logo=opensourceinitiative)](https://github.com/RVC-Boss/GPT-SoVITS/blob/main/LICENSE) + +[![简体中文](https://img.shields.io/badge/简体中文-阅读文档-blue?style=for-the-badge&logo=googledocs&logoColor=white)](https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e) +[![English](https://img.shields.io/badge/English-Read%20Docs-blue?style=for-the-badge&logo=googledocs&logoColor=white)](https://rentry.co/GPT-SoVITS-guide#/) +[![Change Log](https://img.shields.io/badge/Change%20Log-View%20Updates-blue?style=for-the-badge&logo=googledocs&logoColor=white)](https://github.com/RVC-Boss/GPT-SoVITS/blob/main/docs/en/Changelog_EN.md) **English** | [**中文简体**](./docs/cn/README.md) | [**日本語**](./docs/ja/README.md) | [**한국어**](./docs/ko/README.md) | [**Türkçe**](./docs/tr/README.md) @@ -20,7 +27,7 @@ A Powerful Few-shot Voice Conversion and Text-to-Speech WebUI.

--- -## Features: +## Features 1. **Zero-shot TTS:** Input a 5-second vocal sample and experience instant text-to-speech conversion. @@ -34,13 +41,13 @@ A Powerful Few-shot Voice Conversion and Text-to-Speech WebUI.

Unseen speakers few-shot fine-tuning demo: -https://github.com/RVC-Boss/GPT-SoVITS/assets/129054828/05bee1fa-bdd8-4d85-9350-80c060ab47fb + -**User guide: [简体中文](https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e) | [English](https://rentry.co/GPT-SoVITS-guide#/)** + ## Installation -For users in China, you can [click here](https://www.codewithgpu.com/i/RVC-Boss/GPT-SoVITS/GPT-SoVITS-Official) to use AutoDL Cloud Docker to experience the full functionality online. +For users in China, you can use [AutoDL Cloud Docker](https://www.codewithgpu.com/i/RVC-Boss/GPT-SoVITS/GPT-SoVITS-Official) to experience the full functionality online. ### Tested Environments @@ -171,7 +178,7 @@ docker exec -it ``` -if you want to switch to V1,then - -```bash -python webui.py v1 -``` - -Or maunally switch version in WebUI - ### Finetune #### Path Auto-filling is now supported @@ -253,7 +247,7 @@ Or maunally switch version in WebUI #### Integrated Package Users -Double-click `go-webui-v2.bat` or use `go-webui-v2.ps1` ,then open the inference webui at `1-GPT-SoVITS-TTS/1C-inference` +Double-click `go-webui.bat` or use `go-webui.ps1` , then open the inference webui at `1-GPT-SoVITS-TTS/1C-inference` #### Others @@ -333,7 +327,7 @@ Use v4 from v1/v2/v3 environment: New Features: 1. Slightly higher VRAM usage than v2, surpassing v4's performance, with v2's hardware cost and speed. - [more details](https://github.com/RVC-Boss/GPT-SoVITS/wiki/GPT%E2%80%90SoVITS%E2%80%90features-(%E5%90%84%E7%89%88%E6%9C%AC%E7%89%B9%E6%80%A7)) + [more details]() 2.v1/v2 and the v2Pro series share the same characteristics, while v3/v4 have similar features. For training sets with average audio quality, v1/v2/v2Pro can deliver decent results, but v3/v4 cannot. Additionally, the synthesized tone and timebre of v3/v4 lean more toward the reference audio rather than the overall training set. @@ -373,11 +367,6 @@ Use the command line to open the WebUI for UVR5 python tools/uvr5/webui.py "" ``` - - This is how the audio segmentation of the dataset is done using the command line ```bash @@ -453,5 +442,5 @@ Thankful to @Naozumi520 for providing the Cantonese training set and for the gui ## Thanks to all contributors for their efforts - + Contributors diff --git a/docker_build.ps1 b/docker_build.ps1 new file mode 100644 index 00000000..c0508fa6 --- /dev/null +++ b/docker_build.ps1 @@ -0,0 +1,73 @@ +$ErrorActionPreference = "Stop" + +$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Definition +Set-Location $ScriptDir + +if (-not (Get-Command "docker" -ErrorAction SilentlyContinue)) { + Write-Host "Docker Not Found" + exit 1 +} + +$Lite = $false +$CudaVersion = "12.6" + +function Write-Help { + Write-Host @" +Usage: powershell -File docker_build.ps1 [OPTIONS] + +Options: + --cuda 12.6|12.8 Specify the CUDA VERSION (REQUIRED) + --lite Build a Lite Image + -h, --help Show this help message and exit + +Examples: + powershell -File docker_build.ps1 --cuda 12.6 --lite +"@ +} + +if ($args.Count -eq 0) { + Write-Help + exit 0 +} + +for ($i = 0; $i -lt $args.Count; $i++) { + switch ($args[$i]) { + '--cuda' { + $i++ + $val = $args[$i] + if ($val -ne "12.6" -and $val -ne "12.8") { + Write-Host "Error: Invalid CUDA_VERSION: $val" + Write-Host "Choose From: [12.6, 12.8]" + exit 1 + } + $CudaVersion = $val + } + '--lite' { + $Lite = $true + } + '-h' { Write-Help; exit 0 } + '--help' { Write-Help; exit 0 } + default { + Write-Host "Unknown Argument: $($args[$i])" + Write-Host "Use -h or --help to see available options." + exit 1 + } + } +} + +$arch = (Get-CimInstance Win32_Processor).Architecture +$TargetPlatform = if ($arch -eq 9) { "linux/amd64" } else { "linux/arm64" } + +if ($Lite) { + $TorchBase = "lite" +} else { + $TorchBase = "full" +} + +docker build ` + --build-arg CUDA_VERSION=$CudaVersion ` + --build-arg LITE=$Lite ` + --build-arg TARGETPLATFORM=$TargetPlatform ` + --build-arg TORCH_BASE=$TorchBase ` + -t "$env:USERNAME/gpt-sovits:local" ` + . \ No newline at end of file diff --git a/docker_build.sh b/docker_build.sh index 354599d2..b6a803fb 100644 --- a/docker_build.sh +++ b/docker_build.sh @@ -25,7 +25,7 @@ print_help() { echo " -h, --help Show this help message and exit" echo "" echo "Examples:" - echo " bash docker_build.sh --cuda 12.6 --funasr --faster-whisper" + echo " bash docker_build.sh --cuda 12.6" } # Show help if no arguments provided diff --git a/docs/cn/Changelog_CN.md b/docs/cn/Changelog_CN.md index d2b0a6a2..2bae40d9 100644 --- a/docs/cn/Changelog_CN.md +++ b/docs/cn/Changelog_CN.md @@ -157,7 +157,7 @@ - 类型: 修复 - 提交: StaryLan - 2024.02.07 [Commit#14a28510](https://github.com/RVC-Boss/GPT-SoVITS/commit/14a285109a521679f8846589c22da8f656a46ad8) - - 内容: 修复 UVR5 `inf everywhere` 报错的问题 (`is_half` 传参未转换布尔类型导致恒定半精度推理, 16系显卡会 `inf`). + - 内容: 修复 UVR5 `inf everywhere` 报错的问题 (`is_half` 传参未转换布尔类型导致恒定半精度推理, 16 系显卡会 `inf`). - 类型: 修复 - 提交: RVC-Boss - 2024.02.07 [Commit#d74f888e](https://github.com/RVC-Boss/GPT-SoVITS/commit/d74f888e7ac86063bfeacef95d0e6ddafe42b3b2) @@ -230,6 +230,7 @@ ## 202403 - 2024.03.06 [PR#675](https://github.com/RVC-Boss/GPT-SoVITS/pull/675) + - 内容: Faster Whisper 在没有 CUDA 可用时自动使用 CPU 推理. - 类型: 优化 - 提交: ShiroDoMain @@ -347,7 +348,7 @@ - 2024.07.23 [Commit#9588a3c5](https://github.com/RVC-Boss/GPT-SoVITS/commit/9588a3c52d9ebdb20b3c5d74f647d12e7c1171c2), [PR#1340](https://github.com/RVC-Boss/GPT-SoVITS/pull/1340) - 内容: 支持合成语速调节, 支持冻结随机性只调节语速, 并将其更新到`api.py` 上. - 类型: 新功能 - - 提交: RVC-Boss, 红血球AE3803 + - 提交: RVC-Boss, 红血球 AE3803 - 2024.07.27 [PR#1306](https://github.com/RVC-Boss/GPT-SoVITS/pull/1306), [PR#1356](https://github.com/RVC-Boss/GPT-SoVITS/pull/1356) - 内容: 增加 BS-Roformer 人声伴奏分离模型支持. - 类型: 新功能 @@ -409,7 +410,7 @@ - 2025.02.11 [Commit#ed207c4b](https://github.com/RVC-Boss/GPT-SoVITS/commit/ed207c4b879d5296e9be3ae5f7b876729a2c43b8)~[Commit#6e2b4918](https://github.com/RVC-Boss/GPT-SoVITS/commit/6e2b49186c5b961f0de41ea485d398dffa9787b4) - 内容: **新增 GPT-SoVITS V3 模型, 需要 14G 显存进行微调.** - - 类型: 新功能 (特性参阅 [Wiki](https://github.com/RVC-Boss/GPT-SoVITS/wiki/GPT%E2%80%90SoVITS%E2%80%90v3%E2%80%90features-(%E6%96%B0%E7%89%B9%E6%80%A7))) + - 类型: 新功能 (特性参阅 [Wiki]()) - 提交: RVC-Boss - 2025.02.12 [PR#2032](https://github.com/RVC-Boss/GPT-SoVITS/pull/2032) - 内容: 更新项目多语言文档. @@ -453,7 +454,7 @@ - 类型: 文档 - 提交: StaryLan - 2025.02.28 [PR#2122](https://github.com/RVC-Boss/GPT-SoVITS/pull/2122) - - 内容: 对于模型无法判断的CJK短字符采用规则判断. + - 内容: 对于模型无法判断的 CJK 短字符采用规则判断. - 类型: 修复 - 提交: KamioRinn - 关联: [Issue#2116](https://github.com/RVC-Boss/GPT-SoVITS/issues/2116) @@ -475,6 +476,7 @@ - Pydantic: [Issue#2230](https://github.com/RVC-Boss/GPT-SoVITS/issues/2230), [Issue#2239](https://github.com/RVC-Boss/GPT-SoVITS/issues/2239). - PyTorch-Lightning: [Issue#2174](https://github.com/RVC-Boss/GPT-SoVITS/issues/2174). - 2025.03.31 [PR#2241](https://github.com/RVC-Boss/GPT-SoVITS/pull/2241) + - 内容: **为 SoVITS v3 适配并行推理**. - 类型: 新功能 - 提交: ChasonJiang diff --git a/docs/cn/README.md b/docs/cn/README.md index e674d9cf..21ee3567 100644 --- a/docs/cn/README.md +++ b/docs/cn/README.md @@ -1,18 +1,25 @@ +# +

GPT-SoVITS-WebUI

-强大的少样本语音转换与语音合成Web用户界面.

+强大的少样本语音转换与语音合成Web用户界面.

[![madewithlove](https://img.shields.io/badge/made_with-%E2%9D%A4-red?style=for-the-badge&labelColor=orange)](https://github.com/RVC-Boss/GPT-SoVITS) RVC-Boss%2FGPT-SoVITS | Trendshift - +[![Train In Colab](https://img.shields.io/badge/Colab-训练-F9AB00?style=for-the-badge&logo=googlecolab)](https://colab.research.google.com/github/RVC-Boss/GPT-SoVITS/blob/main/Colab-WebUI.ipynb) +[![Infer In Colab](https://img.shields.io/badge/Colab-推理-F9AB00?style=for-the-badge&logo=googlecolab)](https://colab.research.google.com/github/RVC-Boss/GPT-SoVITS/blob/main/Colab-Inference.ipynb) +[![Huggingface](https://img.shields.io/badge/HuggingFace-online%20demo-blue.svg?style=for-the-badge&logo=huggingface)](https://huggingface.co/spaces/lj1995/GPT-SoVITS-v2) -[![Open In Colab](https://img.shields.io/badge/Colab-F9AB00?style=for-the-badge&logo=googlecolab&color=525252)](https://colab.research.google.com/github/RVC-Boss/GPT-SoVITS/blob/main/colab_webui.ipynb) -[![License](https://img.shields.io/badge/LICENSE-MIT-green.svg?style=for-the-badge)](https://github.com/RVC-Boss/GPT-SoVITS/blob/main/LICENSE) -[![Huggingface](https://img.shields.io/badge/🤗%20-online%20demo-yellow.svg?style=for-the-badge)](https://huggingface.co/spaces/lj1995/GPT-SoVITS-v2) -[![Discord](https://img.shields.io/discord/1198701940511617164?color=%23738ADB&label=Discord&style=for-the-badge)](https://discord.gg/dnrgs5GHfG) +[![GitHub release](https://img.shields.io/github/v/release/RVC-Boss/gpt-sovits?style=for-the-badge&logo=github)](https://github.com/RVC-Boss/gpt-sovits/releases) +[![Image Size](https://img.shields.io/docker/image-size/xxxxrt666/gpt-sovits/latest?style=for-the-badge&logo=docker)](https://hub.docker.com/r/xxxxrt666/gpt-sovits) +[![License](https://img.shields.io/badge/LICENSE-MIT-green.svg?style=for-the-badge&logo=opensourceinitiative)](https://github.com/RVC-Boss/GPT-SoVITS/blob/main/LICENSE) + +[![简体中文](https://img.shields.io/badge/简体中文-阅读文档-blue?style=for-the-badge&logo=googledocs&logoColor=white)](https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e) +[![English](https://img.shields.io/badge/English-Read%20Docs-blue?style=for-the-badge&logo=googledocs&logoColor=white)](https://rentry.co/GPT-SoVITS-guide#/) +[![Change Log](https://img.shields.io/badge/更新日志-查看更新-blue?style=for-the-badge&logo=googledocs&logoColor=white)](https://github.com/RVC-Boss/GPT-SoVITS/blob/main/docs/cn/Changelog_CN.md) [**English**](../../README.md) | **中文简体** | [**日本語**](../ja/README.md) | [**한국어**](../ko/README.md) | [**Türkçe**](../tr/README.md) @@ -36,7 +43,7 @@ -**用户手册: [简体中文](https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e) | [English](https://rentry.co/GPT-SoVITS-guide#/)** + ## 安装 @@ -171,7 +178,7 @@ docker exec -it ``` -若想使用 V1,则 - -```bash -python webui.py v1 -``` - -或者在 webUI 内动态切换 - ### 微调 #### 现已支持自动填充路径 @@ -243,13 +241,13 @@ python webui.py v1 3. 进行降噪(可选) 4. 进行 ASR 5. 校对标注 -6. 前往下一个窗口,点击训练 +6. 前往下一个窗口, 点击训练 ### 打开推理 WebUI #### 整合包用户 -双击 `go-webui.bat` 或者使用 `go-webui.ps1` ,然后在 `1-GPT-SoVITS-TTS/1C-推理` 中打开推理 webUI +双击 `go-webui.bat` 或者使用 `go-webui.ps1` , 然后在 `1-GPT-SoVITS-TTS/1C-推理` 中打开推理 webUI #### 其他 @@ -287,7 +285,7 @@ python webui.py 3. 需要从[huggingface](https://huggingface.co/lj1995/GPT-SoVITS/tree/main/gsv-v2final-pretrained) 下载预训练模型文件放到 GPT_SoVITS/pretrained_models/gsv-v2final-pretrained 下 - 中文额外需要下载[G2PWModel.zip(HF)](https://huggingface.co/XXXXRT/GPT-SoVITS-Pretrained/resolve/main/G2PWModel.zip)| [G2PWModel.zip(ModelScope)](https://www.modelscope.cn/models/XXXXRT/GPT-SoVITS-Pretrained/resolve/master/G2PWModel.zip) (下载 G2PW 模型,解压并重命名为`G2PWModel`,将其放到`GPT_SoVITS/text`目录下) + 中文额外需要下载[G2PWModel.zip(HF)](https://huggingface.co/XXXXRT/GPT-SoVITS-Pretrained/resolve/main/G2PWModel.zip)| [G2PWModel.zip(ModelScope)](https://www.modelscope.cn/models/XXXXRT/GPT-SoVITS-Pretrained/resolve/master/G2PWModel.zip) (下载 G2PW 模型, 解压并重命名为`G2PWModel`, 将其放到`GPT_SoVITS/text`目录下) ## V3 更新说明 @@ -449,5 +447,5 @@ python ./tools/asr/fasterwhisper_asr.py -i -o -l -p ## 感谢所有贡献者的努力 - + Contributors diff --git a/docs/en/Changelog_EN.md b/docs/en/Changelog_EN.md index bde48f2b..d5dddfc7 100644 --- a/docs/en/Changelog_EN.md +++ b/docs/en/Changelog_EN.md @@ -285,7 +285,7 @@ - 2024.06.06 [Commit#](https://github.com/RVC-Boss/GPT-SoVITS/commit/99f09c8bdc155c1f4272b511940717705509582a) - Content: Fixed the issue of WebUI's GPT fine-tuning not reading BERT feature of Chinese input texts, causing inconsistency with inference and potential quality degradation. - **Caution: If you have previously fine-tuned with a large amount of data, it is recommended to retune the model to improve quality.** + **Caution: If you have previously fine-tuned with a large amount of data, it is recommended to retune the model to improve quality.** - Type: Fix - Contributor: RVC-Boss - 2024.06.07 [PR#1159](https://github.com/RVC-Boss/GPT-SoVITS/pull/1159) @@ -347,7 +347,7 @@ - 2024.07.23 [Commit#9588a3c5](https://github.com/RVC-Boss/GPT-SoVITS/commit/9588a3c52d9ebdb20b3c5d74f647d12e7c1171c2), [PR#1340](https://github.com/RVC-Boss/GPT-SoVITS/pull/1340) - Content: Support adjusting speech speed during synthesis, including an option to freeze randomness and only control speed. This feature has been updated to `api.py`. - Type: Feature - - Contributor: RVC-Boss, 红血球AE3803 + - Contributor: RVC-Boss, 红血球 AE3803 - 2024.07.27 [PR#1306](https://github.com/RVC-Boss/GPT-SoVITS/pull/1306), [PR#1356](https://github.com/RVC-Boss/GPT-SoVITS/pull/1356) - Content: Added support for the BS-RoFormer vocal accompaniment separation model. - Type: Feature @@ -409,7 +409,7 @@ - 2025.02.11 [Commit#ed207c4b](https://github.com/RVC-Boss/GPT-SoVITS/commit/ed207c4b879d5296e9be3ae5f7b876729a2c43b8)~[Commit#6e2b4918](https://github.com/RVC-Boss/GPT-SoVITS/commit/6e2b49186c5b961f0de41ea485d398dffa9787b4) - Content: **Added GPT-SoVITS V3 model, which requires 14GB VRAM for fine-tuning.** - - Type: Feature (Refer to [Wiki](https://github.com/RVC-Boss/GPT-SoVITS/wiki/GPT%E2%80%90SoVITS%E2%80%90v3%E2%80%90features-(%E6%96%B0%E7%89%B9%E6%80%A7))) + - Type: Feature (Refer to [Wiki]()) - Contributor: RVC-Boss - 2025.02.12 [PR#2032](https://github.com/RVC-Boss/GPT-SoVITS/pull/2032) - Content: Updated multilingual project documentation. @@ -478,9 +478,6 @@ - Content: **Enabled parallel inference for SoVITS v3.** - Type: Feature - Contributor: ChasonJiang - -- Fixed other minor bugs. - - Integrated package fixes for ONNX runtime GPU inference support: - Type: Fix - Details: diff --git a/docs/ja/Changelog_JA.md b/docs/ja/Changelog_JA.md index 229d836a..e6c9b87c 100644 --- a/docs/ja/Changelog_JA.md +++ b/docs/ja/Changelog_JA.md @@ -3,11 +3,11 @@ ## 202401 - 2024.01.21 [PR#108](https://github.com/RVC-Boss/GPT-SoVITS/pull/108) - - 内容: WebUIに英語システム翻訳サポートを追加。 + - 内容: WebUI に英語システム翻訳サポートを追加。 - タイプ: ドキュメンテーション - 貢献者: D3lik - 2024.01.21 [Commit#7b89c9ed](https://github.com/RVC-Boss/GPT-SoVITS/commit/7b89c9ed5669f63c4ed6ae791408969640bdcf3e) - - 内容: SoVITSトレーニングのZeroDivisionError修正を試みた。 + - 内容: SoVITS トレーニングの ZeroDivisionError 修正を試みた。 - タイプ: 修正 - 貢献者: RVC-Boss, Tybost - 関連: [Issue#79](https://github.com/RVC-Boss/GPT-SoVITS/issues/79) @@ -16,11 +16,11 @@ - タイプ: 最適化 - 貢献者: RVC-Boss - 2024.01.21 [Commit#a87ad522](https://github.com/RVC-Boss/GPT-SoVITS/commit/a87ad5228ed2d729da42019ae1b93171f6a745ef) - - 内容: `cmd-asr.py`がデフォルトディレクトリにFunASRモデルが含まれているか確認し、ない場合はModelScopeからダウンロードするようになった。 + - 内容: `cmd-asr.py`がデフォルトディレクトリに FunASR モデルが含まれているか確認し、ない場合は ModelScope からダウンロードするようになった。 - タイプ: 機能 - 貢献者: RVC-Boss - 2024.01.21 [Commit#f6147116](https://github.com/RVC-Boss/GPT-SoVITS/commit/f61471166c107ba56ccb7a5137fa9d7c09b2830d) - - 内容: `Config.py`に`is_share`パラメータを追加、`True`に設定するとWebUIを公開ネットワークにマッピング可能。 + - 内容: `Config.py`に`is_share`パラメータを追加、`True`に設定すると WebUI を公開ネットワークにマッピング可能。 - タイプ: 機能 - 貢献者: RVC-Boss - 2024.01.21 [Commit#102d5081](https://github.com/RVC-Boss/GPT-SoVITS/commit/102d50819e5d24580d6e96085b636b25533ecc7f) @@ -33,11 +33,11 @@ - 貢献者: RVC-Boss - 2024.01.22 英語と日本語トレーニングのネイティブサポートをテスト(日本語トレーニングはルートディレクトリに非英語特殊文字がないことが必要)。 - 2024.01.22 [PR#124](https://github.com/RVC-Boss/GPT-SoVITS/pull/124) - - 内容: 音声パスチェックを改善。不正な入力パスから読み取ろうとすると、ffmpegエラーではなくパスが存在しないと報告するようになった。 + - 内容: 音声パスチェックを改善。不正な入力パスから読み取ろうとすると、ffmpeg エラーではなくパスが存在しないと報告するようになった。 - タイプ: 最適化 - 貢献者: xmimu - 2024.01.23 [Commit#93c47cd9](https://github.com/RVC-Boss/GPT-SoVITS/commit/93c47cd9f0c53439536eada18879b4ec5a812ae1) - - 内容: Hubert抽出がNaNエラーを引き起こし、SoVITS/GPTトレーニングでZeroDivisionErrorが発生する問題を解決。 + - 内容: Hubert 抽出が NaN エラーを引き起こし、SoVITS/GPT トレーニングで ZeroDivisionError が発生する問題を解決。 - タイプ: 修正 - 貢献者: RVC-Boss - 2024.01.23 [Commit#80fffb0a](https://github.com/RVC-Boss/GPT-SoVITS/commit/80fffb0ad46e4e7f27948d5a57c88cf342088d50) @@ -49,19 +49,19 @@ - タイプ: 最適化 - 貢献者: RVC-Boss - 2024.01.23 [Commit#0c691191](https://github.com/RVC-Boss/GPT-SoVITS/commit/0c691191e894c15686e88279745712b3c6dc232f) - - 内容: 推論WebUIでクイックモデル切り替えをサポート追加。 + - 内容: 推論 WebUI でクイックモデル切り替えをサポート追加。 - タイプ: 機能 - 貢献者: RVC-Boss - 2024.01.25 [Commit#249561e5](https://github.com/RVC-Boss/GPT-SoVITS/commit/249561e5a18576010df6587c274d38cbd9e18b4b) - - 内容: 推論WebUIの冗長なログを削除。 + - 内容: 推論 WebUI の冗長なログを削除。 - タイプ: 最適化 - 貢献者: RVC-Boss - 2024.01.25 [PR#183](https://github.com/RVC-Boss/GPT-SoVITS/pull/183), [PR#200](https://github.com/RVC-Boss/GPT-SoVITS/pull/200) - - 内容: Macでのトレーニングと推論をサポート。 + - 内容: Mac でのトレーニングと推論をサポート。 - タイプ: 機能 - 貢献者: Lion-Wu - 2024.01.26 [Commit#813cf96e](https://github.com/RVC-Boss/GPT-SoVITS/commit/813cf96e508ba1bb2c658f38c7cc77b797fb4082), [Commit#2d1ddeca](https://github.com/RVC-Boss/GPT-SoVITS/commit/2d1ddeca42db90c3fe2d0cd79480fd544d87f02b) - - 内容: UVR5の読み取り時にディレクトリが自動的に飛び出す問題を修正。 + - 内容: UVR5 の読み取り時にディレクトリが自動的に飛び出す問題を修正。 - タイプ: 修正 - 貢献者: RVC-Boss - 2024.01.26 [PR#204](https://github.com/RVC-Boss/GPT-SoVITS/pull/204) @@ -77,11 +77,11 @@ - タイプ: 修正 - 貢献者: RVC-Boss - 2024.01.26 [Commit#84ee4719](https://github.com/RVC-Boss/GPT-SoVITS/commit/84ee471936b332bc2ccee024d6dfdedab4f0dc7b) - - 内容: 半精度をサポートしないGPU向けに自動的に単精度を強制。CPU推論時も単精度を強制。 + - 内容: 半精度をサポートしない GPU 向けに自動的に単精度を強制。CPU 推論時も単精度を強制。 - タイプ: 最適化 - 貢献者: RVC-Boss - 2024.01.28 [PR#238](https://github.com/RVC-Boss/GPT-SoVITS/pull/238) - - 内容: Dockerfile内のモデルダウンロードプロセスを完了。 + - 内容: Dockerfile 内のモデルダウンロードプロセスを完了。 - タイプ: 修正 - 貢献者: breakstring - 2024.01.28 [PR#257](https://github.com/RVC-Boss/GPT-SoVITS/pull/257) @@ -89,7 +89,7 @@ - タイプ: 修正 - 貢献者: duliangang - 2024.01.28 [Commit#f0cfe397](https://github.com/RVC-Boss/GPT-SoVITS/commit/f0cfe397089a6fd507d678c71adeaab5e7ed0683) - - 内容: GPTトレーニングがチェックポイントを保存しない問題を修正。 + - 内容: GPT トレーニングがチェックポイントを保存しない問題を修正。 - タイプ: 修正 - 貢献者: RVC-Boss - 2024.01.28 [Commit#b8ae5a27](https://github.com/RVC-Boss/GPT-SoVITS/commit/b8ae5a2761e2654fc0c905498009d3de9de745a8) @@ -101,15 +101,15 @@ - タイプ: 修正 - 貢献者: RVC-Boss - 2024.01.29 [Commit#ff977a5f](https://github.com/RVC-Boss/GPT-SoVITS/commit/ff977a5f5dc547e0ad82b9e0f1cd95fbc830b2b0) - - 内容: 16シリーズのような半精度トレーニングに問題があるGPU向けに、トレーニング設定を単精度に変更。 + - 内容: 16 シリーズのような半精度トレーニングに問題がある GPU 向けに、トレーニング設定を単精度に変更。 - タイプ: 修正 - 貢献者: RVC-Boss - 2024.01.29 [Commit#172e139f](https://github.com/RVC-Boss/GPT-SoVITS/commit/172e139f45ac26723bc2cf7fac0112f69d6b46ec) - - 内容: 利用可能なColabバージョンをテストして更新。 + - 内容: 利用可能な Colab バージョンをテストして更新。 - タイプ: 機能 - 貢献者: RVC-Boss - 2024.01.29 [PR#135](https://github.com/RVC-Boss/GPT-SoVITS/pull/135) - - 内容: FunASRをバージョン1.0に更新し、インターフェース不一致によるエラーを修正。 + - 内容: FunASR をバージョン 1.0 に更新し、インターフェース不一致によるエラーを修正。 - タイプ: 修正 - 貢献者: LauraGPT - 2024.01.30 [Commit#1c2fa98c](https://github.com/RVC-Boss/GPT-SoVITS/commit/1c2fa98ca8c325dcfb32797d22ff1c2a726d1cb4) @@ -128,11 +128,11 @@ ## 202402 - 2024.02.01 [Commit#45f73519](https://github.com/RVC-Boss/GPT-SoVITS/commit/45f73519cc41cd17cf816d8b997a9dcb0bee04b6) - - 内容: ASRパス末尾のスラッシュによるファイル名保存エラーの修正 + - 内容: ASR パス末尾のスラッシュによるファイル名保存エラーの修正 - タイプ: 修正 - 貢献者: RVC-Boss - 2024.02.03 [Commit#dba1a74c](https://github.com/RVC-Boss/GPT-SoVITS/commit/dba1a74ccb0cf19a1b4eb93faf11d4ec2b1fc5d7) - - 内容: UVR5のフォーマット読み取りエラーによる音声分離失敗の修正 + - 内容: UVR5 のフォーマット読み取りエラーによる音声分離失敗の修正 - タイプ: 修正 - 貢献者: RVC-Boss - 2024.02.03 [Commit#3ebff70b](https://github.com/RVC-Boss/GPT-SoVITS/commit/3ebff70b71580ee1f97b3238c9442cbc5aef47c7) @@ -140,7 +140,7 @@ - タイプ: 機能改善 - 貢献者: RVC-Boss - 2024.02.03 [PR#377](https://github.com/RVC-Boss/GPT-SoVITS/pull/377) - - 内容: PaddleSpeechのテキスト正規化を導入(例: xx.xx%表記、「元/吨」を「元每吨」と正確に読む、アンダースコア問題の解消) + - 内容: PaddleSpeech のテキスト正規化を導入(例: xx.xx%表記、「元/吨」を「元每吨」と正確に読む、アンダースコア問題の解消) - タイプ: 機能改善 - 貢献者: KamioRinn - 2024.02.05 [PR#395](https://github.com/RVC-Boss/GPT-SoVITS/pull/395) @@ -153,36 +153,36 @@ - 貢献者: RVC-Boss - 関連: [Issue#391](https://github.com/RVC-Boss/GPT-SoVITS/issues/391) - 2024.02.06 [PR#403](https://github.com/RVC-Boss/GPT-SoVITS/pull/403) - - 内容: UVR5の高バージョンLibrosaへの対応 + - 内容: UVR5 の高バージョン Librosa への対応 - タイプ: 修正 - 貢献者: StaryLan - 2024.02.07 [Commit#14a28510](https://github.com/RVC-Boss/GPT-SoVITS/commit/14a285109a521679f8846589c22da8f656a46ad8) - - 内容: UVR5の「inf everywhere」エラーの修正(ブール型変換不足による半精度推論問題、16シリーズGPUで発生) + - 内容: UVR5 の「inf everywhere」エラーの修正(ブール型変換不足による半精度推論問題、16 シリーズ GPU で発生) - タイプ: 修正 - 貢献者: RVC-Boss - 2024.02.07 [Commit#d74f888e](https://github.com/RVC-Boss/GPT-SoVITS/commit/d74f888e7ac86063bfeacef95d0e6ddafe42b3b2) - - 内容: Gradio依存関係の修正 + - 内容: Gradio 依存関係の修正 - タイプ: 修正 - 貢献者: RVC-Boss - 2024.02.07 [PR#400](https://github.com/RVC-Boss/GPT-SoVITS/pull/400) - - 内容: Faster Whisperの統合による日本語・英語音声認識機能の追加 + - 内容: Faster Whisper の統合による日本語・英語音声認識機能の追加 - タイプ: 新機能 - 貢献者: Shadow - 2024.02.07 [Commit#6469048d](https://github.com/RVC-Boss/GPT-SoVITS/commit/6469048de12a8d6f0bd05d07f031309e61575a38)~[Commit#94ee71d9](https://github.com/RVC-Boss/GPT-SoVITS/commit/94ee71d9d562d10c9a1b96e745c6a6575aa66a10) - - 内容: 3連ルートディレクトリ空欄時の自動.listファイルパス読み込み機能 + - 内容: 3 連ルートディレクトリ空欄時の自動.list ファイルパス読み込み機能 - タイプ: 機能改善 - 貢献者: RVC-Boss - 2024.02.08 [Commit#59f35ada](https://github.com/RVC-Boss/GPT-SoVITS/commit/59f35adad85815df27e9c6b33d420f5ebfd8376b) - - 内容: GPTトレーニングのフリーズ問題(Windows10 1909)と繁体字システム言語時のエラー修正 + - 内容: GPT トレーニングのフリーズ問題(Windows10 1909)と繁体字システム言語時のエラー修正 - タイプ: 修正 - 貢献者: RVC-Boss - 関連: [Issue#232](https://github.com/RVC-Boss/GPT-SoVITS/issues/232) - 2024.02.12 [PR#457](https://github.com/RVC-Boss/GPT-SoVITS/pull/457) - - 内容: DPO損失実験的トレーニングオプションの追加(ネガティブサンプル構築によるGPTの繰り返し・文字抜け問題改善)、推論インターフェースの複数パラメータ公開 + - 内容: DPO 損失実験的トレーニングオプションの追加(ネガティブサンプル構築による GPT の繰り返し・文字抜け問題改善)、推論インターフェースの複数パラメータ公開 - タイプ: 新機能 - 貢献者: liufenghua - 2024.02.12 [Commit#2fa74ecb](https://github.com/RVC-Boss/GPT-SoVITS/commit/2fa74ecb941db27d9015583a9be6962898d66730), [Commit#d82f6bbb](https://github.com/RVC-Boss/GPT-SoVITS/commit/d82f6bbb98ba725e6725dcee99b80ce71fb0bf28) - - 内容: 音声認識ロジックの最適化、Faster Whisperのミラーサイトダウンロード対応(HuggingFace接続問題回避) + - 内容: 音声認識ロジックの最適化、Faster Whisper のミラーサイトダウンロード対応(HuggingFace 接続問題回避) - タイプ: 機能改善 - 貢献者: RVC-Boss - 2024.02.15 [Commit#dd2c4d6d](https://github.com/RVC-Boss/GPT-SoVITS/commit/dd2c4d6d7121bf82d29d0f0e4d788f3b231997c8) @@ -190,7 +190,7 @@ - タイプ: 修正 - 貢献者: RVC-Boss - 2024.02.15 [Commit#ccb9b08b](https://github.com/RVC-Boss/GPT-SoVITS/commit/ccb9b08be3c58e102defcc94ff4fd609da9e27ee)~[Commit#895fde46](https://github.com/RVC-Boss/GPT-SoVITS/commit/895fde46e420040ed26aaf0c5b7e99359d9b199b) - - 内容: DPOトレーニングを必須からオプションに変更(選択時は自動的にバッチサイズ半減)、推論インターフェースの新パラメータ未伝達問題の修正 + - 内容: DPO トレーニングを必須からオプションに変更(選択時は自動的にバッチサイズ半減)、推論インターフェースの新パラメータ未伝達問題の修正 - タイプ: 機能改善 - 貢献者: RVC-Boss - 2024.02.15 [Commit#7b0c3c67](https://github.com/RVC-Boss/GPT-SoVITS/commit/7b0c3c676495c64b2064aa472bff14b5c06206a5) @@ -207,38 +207,38 @@ - タイプ: 機能改善 - 貢献者: KamioRinn, v3cun - 2024.02.17 [PR#510](https://github.com/RVC-Boss/GPT-SoVITS/pull/511), [PR#511](https://github.com/RVC-Boss/GPT-SoVITS/pull/511) - - 内容: Colabの公開URL未開始問題の修正 + - 内容: Colab の公開 URL 未開始問題の修正 - タイプ: 修正 - 貢献者: ChanningWang2018, RVC-Boss - 2024.02.21 [PR#557](https://github.com/RVC-Boss/GPT-SoVITS/pull/557) - - 内容: MacOS推論デバイスをMPSからCPUに変更(CPU推論の方が高速) + - 内容: MacOS 推論デバイスを MPS から CPU に変更(CPU 推論の方が高速) - タイプ: 機能改善 - 貢献者: XXXXRT666 - 2024.02.21 [Commit#6da486c1](https://github.com/RVC-Boss/GPT-SoVITS/commit/6da486c15d09e3d99fa42c5e560aaac56b6b4ce1), [Commit#5a171773](https://github.com/RVC-Boss/GPT-SoVITS/commit/5a17177342d2df1e11369f2f4f58d34a3feb1a35) - - 内容: データ前処理に音声ノイズ除去オプション追加(16Kサンプルレートにダウンサンプリング、高ノイズ時以外は非推奨) + - 内容: データ前処理に音声ノイズ除去オプション追加(16K サンプルレートにダウンサンプリング、高ノイズ時以外は非推奨) - タイプ: 新機能 - 貢献者: RVC-Boss - 2024.02.28 [PR#573](https://github.com/RVC-Boss/GPT-SoVITS/pull/573) - - 内容: is_half判定の修正によるMacOSの正常なCPU推論対応 + - 内容: is_half 判定の修正による MacOS の正常な CPU 推論対応 - タイプ: 修正 - 貢献者: XXXXRT666 - 2024.02.28 [PR#610](https://github.com/RVC-Boss/GPT-SoVITS/pull/610) - - 内容: UVR5 MDXNetパラメータ順序エラーによる出力フォルダ逆転問題の修正 + - 内容: UVR5 MDXNet パラメータ順序エラーによる出力フォルダ逆転問題の修正 - タイプ: 修正 - 貢献者: Yuze Wang ## 202403 - 2024.03.06 [PR#675](https://github.com/RVC-Boss/GPT-SoVITS/pull/675) - - 内容: CUDAが利用できない場合、Faster Whisperの自動CPU推論を有効化 + - 内容: CUDA が利用できない場合、Faster Whisper の自動 CPU 推論を有効化 - タイプ: 機能改善 - 貢献者: ShiroDoMain - 2024.03.06 [Commit#616be20d](https://github.com/RVC-Boss/GPT-SoVITS/commit/616be20db3cf94f1cd663782fea61b2370704193) - - 内容: Faster Whisper非中国語ASR使用時、中国語FunASRモデルの事前ダウンロードが不要に + - 内容: Faster Whisper 非中国語 ASR 使用時、中国語 FunASR モデルの事前ダウンロードが不要に - タイプ: 機能改善 - 貢献者: RVC-Boss - 2024.03.09 [PR#672](https://github.com/RVC-Boss/GPT-SoVITS/pull/672) - - 内容: 推論速度を50%向上(RTX3090 + PyTorch 2.2.1 + CU11.8 + Win10 + Py39環境で検証) + - 内容: 推論速度を 50%向上(RTX3090 + PyTorch 2.2.1 + CU11.8 + Win10 + Py39 環境で検証) - タイプ: 機能改善 - 貢献者: GoHomeToMacDonal - 2024.03.10 [PR#721](https://github.com/RVC-Boss/GPT-SoVITS/pull/721) @@ -246,7 +246,7 @@ - タイプ: 新機能 - 貢献者: ChasonJiang - 2024.03.13 [PR#761](https://github.com/RVC-Boss/GPT-SoVITS/pull/761) - - 内容: CPUトレーニングをサポート(macOSでCPUを使用したトレーニングが可能に) + - 内容: CPU トレーニングをサポート(macOS で CPU を使用したトレーニングが可能に) - タイプ: 新機能 - 貢献者: Lion-Wu - 2024.03.19 [PR#804](https://github.com/RVC-Boss/GPT-SoVITS/pull/804), [PR#812](https://github.com/RVC-Boss/GPT-SoVITS/pull/812), [PR#821](https://github.com/RVC-Boss/GPT-SoVITS/pull/821) @@ -254,21 +254,21 @@ - タイプ: 機能改善 - 貢献者: KamioRinn - 2024.03.30 [PR#894](https://github.com/RVC-Boss/GPT-SoVITS/pull/894) - - 内容: APIフォーマットの改善 + - 内容: API フォーマットの改善 - タイプ: 機能改善 - 貢献者: KamioRinn ## 202404 - 2024.04.03 [PR#917](https://github.com/RVC-Boss/GPT-SoVITS/pull/917) - - 内容: UVR5 WebUIにおけるFFmpegコマンド文字列フォーマットの修正 + - 内容: UVR5 WebUI における FFmpeg コマンド文字列フォーマットの修正 - タイプ: 修正 - 貢献者: StaryLan ## 202405 - 2024.05.02 [PR#953](https://github.com/RVC-Boss/GPT-SoVITS/pull/953) - - 内容: SoVITSトレーニング時のVQ凍結漏れ問題を修正(品質劣化の原因となる) + - 内容: SoVITS トレーニング時の VQ 凍結漏れ問題を修正(品質劣化の原因となる) - タイプ: 修正 - 貢献者: hcwu1993 - 関連: [Issue#747](https://github.com/RVC-Boss/GPT-SoVITS/issues/747) @@ -277,23 +277,23 @@ - タイプ: 機能改善 - 貢献者: StaryLan - 2024.05.27 [PR#1132](https://github.com/RVC-Boss/GPT-SoVITS/pull/1132) - - 内容: Hubert抽出におけるバグ修正 + - 内容: Hubert 抽出におけるバグ修正 - タイプ: 修正 - 貢献者: XXXXRT666 ## 202406 - 2024.06.06 [Commit#](https://github.com/RVC-Boss/GPT-SoVITS/commit/99f09c8bdc155c1f4272b511940717705509582a) - - 内容: WebUIのGPTファインチューニング時に中国語入力テキストのBERT特徴量を読み取れない問題を修正(推論時との不一致や品質劣化の原因となる) - **注意: 既に大量データでファインチューニング済みの場合は、品質向上のためモデルの再チューニングを推奨** + - 内容: WebUI の GPT ファインチューニング時に中国語入力テキストの BERT 特徴量を読み取れない問題を修正(推論時との不一致や品質劣化の原因となる) + **注意: 既に大量データでファインチューニング済みの場合は、品質向上のためモデルの再チューニングを推奨** - タイプ: 修正 - 貢献者: RVC-Boss - 2024.06.07 [PR#1159](https://github.com/RVC-Boss/GPT-SoVITS/pull/1159) - - 内容: `s2_train.py`におけるSoVITSトレーニングの進捗バー処理を修正 + - 内容: `s2_train.py`における SoVITS トレーニングの進捗バー処理を修正 - タイプ: 修正 - 貢献者: pengzhendong - 2024.06.10 [Commit#501a74ae](https://github.com/RVC-Boss/GPT-SoVITS/commit/501a74ae96789a26b48932babed5eb4e9483a232) - - 内容: UVR5 MDXNetがFFmpegを呼び出す際の文字列フォーマットを修正(スペースを含むパスに対応) + - 内容: UVR5 MDXNet が FFmpeg を呼び出す際の文字列フォーマットを修正(スペースを含むパスに対応) - タイプ: 修正 - 貢献者: RVC-Boss - 2024.06.10 [PR#1168](https://github.com/RVC-Boss/GPT-SoVITS/pull/1168), [PR#1169](https://github.com/RVC-Boss/GPT-SoVITS/pull/1169) @@ -302,15 +302,15 @@ - 貢献者: XXXXRT666 - 関連: [Issue#1165](https://github.com/RVC-Boss/GPT-SoVITS/issues/1165) - 2024.06.13 [Commit#db506705](https://github.com/RVC-Boss/GPT-SoVITS/commit/db50670598f0236613eefa6f2d5a23a271d82041) - - 内容: CPU推論におけるデフォルトバッチサイズの小数点問題を修正 + - 内容: CPU 推論におけるデフォルトバッチサイズの小数点問題を修正 - タイプ: 修正 - 貢献者: RVC-Boss - 2024.06.28 [PR#1258](https://github.com/RVC-Boss/GPT-SoVITS/pull/1258), [PR#1265](https://github.com/RVC-Boss/GPT-SoVITS/pull/1265), [PR#1267](https://github.com/RVC-Boss/GPT-SoVITS/pull/1267) - - 内容: ノイズ除去やASRで例外が発生した場合に保留中の全オーディオファイル処理が終了してしまう問題を修正 + - 内容: ノイズ除去や ASR で例外が発生した場合に保留中の全オーディオファイル処理が終了してしまう問題を修正 - タイプ: 修正 - 貢献者: XXXXRT666 - 2024.06.29 [Commit#a208698e](https://github.com/RVC-Boss/GPT-SoVITS/commit/a208698e775155efc95b187b746d153d0f2847ca) - - 内容: マルチGPUトレーニング時のマルチプロセス保存ロジックを修正 + - 内容: マルチ GPU トレーニング時のマルチプロセス保存ロジックを修正 - タイプ: 修正 - 貢献者: RVC-Boss - 2024.06.29 [PR#1251](https://github.com/RVC-Boss/GPT-SoVITS/pull/1251) @@ -326,14 +326,14 @@ - タイプ: 修正 - 貢献者: aoguai - 2024.07.06 [Commit#](https://github.com/RVC-Boss/GPT-SoVITS/commit/b0786f2998f1b2fce6678434524b4e0e8cc716f5) - - 内容: 高速化推論コードが検証済みでmainブランチにマージされ、ベースと同等の推論効果を保証。テキスト未参照モードでも高速推論をサポート + - 内容: 高速化推論コードが検証済みで main ブランチにマージされ、ベースと同等の推論効果を保証。テキスト未参照モードでも高速推論をサポート - タイプ: 最適化 - 貢献者: RVC-Boss, GoHomeToMacDonal - 関連: [PR#672](https://github.com/RVC-Boss/GPT-SoVITS/pull/672) - 今後も`fast_inference`ブランチでの変更整合性を継続検証 - 2024.07.13 [PR#1294](https://github.com/RVC-Boss/GPT-SoVITS/pull/1294), [PR#1298](https://github.com/RVC-Boss/GPT-SoVITS/pull/1298) - - 内容: i18nスキャンのリファクタリングと多言語設定ファイルの更新 + - 内容: i18n スキャンのリファクタリングと多言語設定ファイルの更新 - タイプ: ドキュメンテーション - 貢献者: StaryLan - 2024.07.13 [PR#1299](https://github.com/RVC-Boss/GPT-SoVITS/pull/1299) @@ -341,15 +341,15 @@ - タイプ: 修正 - 貢献者: XXXXRT666 - 2024.07.19 [PR#756](https://github.com/RVC-Boss/GPT-SoVITS/pull/756) - - 内容: GPTトレーニング時、カスタム`bucket_sampler`使用時のステップ数不一致を修正 + - 内容: GPT トレーニング時、カスタム`bucket_sampler`使用時のステップ数不一致を修正 - タイプ: 修正 - 貢献者: huangxu1991 - 2024.07.23 [Commit#9588a3c5](https://github.com/RVC-Boss/GPT-SoVITS/commit/9588a3c52d9ebdb20b3c5d74f647d12e7c1171c2), [PR#1340](https://github.com/RVC-Boss/GPT-SoVITS/pull/1340) - 内容: 合成時の話速調整をサポート(ランダム性を固定して速度のみ制御するオプション含む)。`api.py`に更新済み - タイプ: 新機能 - - 貢献者: RVC-Boss, 红血球AE3803 + - 貢献者: RVC-Boss, 红血球 AE3803 - 2024.07.27 [PR#1306](https://github.com/RVC-Boss/GPT-SoVITS/pull/1306), [PR#1356](https://github.com/RVC-Boss/GPT-SoVITS/pull/1356) - - 内容: BS-RoFormerボーカル・伴奏分離モデルのサポートを追加。 + - 内容: BS-RoFormer ボーカル・伴奏分離モデルのサポートを追加。 - タイプ: 新機能 - 貢献者: KamioRinn - 2024.07.27 [PR#1351](https://github.com/RVC-Boss/GPT-SoVITS/pull/1351) @@ -360,56 +360,56 @@ ## 202408 (V2 バージョン) - 2024.08.01 [PR#1355](https://github.com/RVC-Boss/GPT-SoVITS/pull/1355) - - 内容: WebUIでファイル処理時にパスを自動入力するように変更。 + - 内容: WebUI でファイル処理時にパスを自動入力するように変更。 - タイプ: 雑務 - 貢献者: XXXXRT666 - 2024.08.01 [Commit#e62e9653](https://github.com/RVC-Boss/GPT-SoVITS/commit/e62e965323a60a76a025bcaa45268c1ddcbcf05c) - - 内容: BS-RoformerのFP16推論サポートを有効化。 + - 内容: BS-Roformer の FP16 推論サポートを有効化。 - タイプ: パフォーマンス最適化 - 貢献者: RVC-Boss - 2024.08.01 [Commit#bce451a2](https://github.com/RVC-Boss/GPT-SoVITS/commit/bce451a2d1641e581e200297d01f219aeaaf7299), [Commit#4c8b7612](https://github.com/RVC-Boss/GPT-SoVITS/commit/4c8b7612206536b8b4435997acb69b25d93acb78) - - 内容: GPU認識ロジックを最適化、ユーザーが入力した任意のGPUインデックスを処理するユーザーフレンドリーなロジックを追加。 + - 内容: GPU 認識ロジックを最適化、ユーザーが入力した任意の GPU インデックスを処理するユーザーフレンドリーなロジックを追加。 - タイプ: 雑務 - 貢献者: RVC-Boss - 2024.08.02 [Commit#ff6c193f](https://github.com/RVC-Boss/GPT-SoVITS/commit/ff6c193f6fb99d44eea3648d82ebcee895860a22)~[Commit#de7ee7c7](https://github.com/RVC-Boss/GPT-SoVITS/commit/de7ee7c7c15a2ec137feb0693b4ff3db61fad758) - - 内容: **GPT-SoVITS V2モデルを追加。** + - 内容: **GPT-SoVITS V2 モデルを追加。** - タイプ: 新機能 - 貢献者: RVC-Boss - 2024.08.03 [Commit#8a101474](https://github.com/RVC-Boss/GPT-SoVITS/commit/8a101474b5a4f913b4c94fca2e3ca87d0771bae3) - - 内容: FunASRを使用して広東語ASRをサポート。 + - 内容: FunASR を使用して広東語 ASR をサポート。 - タイプ: 新機能 - 貢献者: RVC-Boss - 2024.08.03 [PR#1387](https://github.com/RVC-Boss/GPT-SoVITS/pull/1387), [PR#1388](https://github.com/RVC-Boss/GPT-SoVITS/pull/1388) - - 内容: UIとタイミングロジックを最適化。 + - 内容: UI とタイミングロジックを最適化。 - タイプ: 雑務 - 貢献者: XXXXRT666 - 2024.08.06 [PR#1404](https://github.com/RVC-Boss/GPT-SoVITS/pull/1404), [PR#987](https://github.com/RVC-Boss/GPT-SoVITS/pull/987), [PR#488](https://github.com/RVC-Boss/GPT-SoVITS/pull/488) - - 内容: 多音字処理ロジックを最適化(V2のみ)。 + - 内容: 多音字処理ロジックを最適化(V2 のみ)。 - タイプ: 修正、新機能 - 貢献者: KamioRinn、RVC-Boss - 2024.08.13 [PR#1422](https://github.com/RVC-Boss/GPT-SoVITS/pull/1422) - - 内容: 参照音声が1つしかアップロードできないバグを修正。欠損ファイルがある場合に警告ポップアップを表示するデータセット検証を追加。 + - 内容: 参照音声が 1 つしかアップロードできないバグを修正。欠損ファイルがある場合に警告ポップアップを表示するデータセット検証を追加。 - タイプ: 修正、雑務 - 貢献者: XXXXRT666 - 2024.08.20 [Issue#1508](https://github.com/RVC-Boss/GPT-SoVITS/issues/1508) - - 内容: 上流のLangSegmentライブラリがSSMLタグを使用した数字、電話番号、日付、時刻の最適化をサポート。 + - 内容: 上流の LangSegment ライブラリが SSML タグを使用した数字、電話番号、日付、時刻の最適化をサポート。 - タイプ: 新機能 - 貢献者: juntaosun - 2024.08.20 [PR#1503](https://github.com/RVC-Boss/GPT-SoVITS/pull/1503) - - 内容: APIを修正・最適化。 + - 内容: API を修正・最適化。 - タイプ: 修正 - 貢献者: KamioRinn - 2024.08.20 [PR#1490](https://github.com/RVC-Boss/GPT-SoVITS/pull/1490) - 内容: `fast_inference`ブランチをメインブランチにマージ。 - タイプ: リファクタリング - 貢献者: ChasonJiang -- 2024.08.21 **GPT-SoVITS V2バージョンを正式リリース。** +- 2024.08.21 **GPT-SoVITS V2 バージョンを正式リリース。** ## 202502 (V3 バージョン) - 2025.02.11 [Commit#ed207c4b](https://github.com/RVC-Boss/GPT-SoVITS/commit/ed207c4b879d5296e9be3ae5f7b876729a2c43b8)~[Commit#6e2b4918](https://github.com/RVC-Boss/GPT-SoVITS/commit/6e2b49186c5b961f0de41ea485d398dffa9787b4) - - 内容: **GPT-SoVITS V3モデルを追加。ファインチューニングには14GBのVRAMが必要。** - - タイプ: 新機能([Wiki](https://github.com/RVC-Boss/GPT-SoVITS/wiki/GPT%E2%80%90SoVITS%E2%80%90v3%E2%80%90features-(%E6%96%B0%E7%89%B9%E6%80%A7))参照) + - 内容: **GPT-SoVITS V3 モデルを追加。ファインチューニングには 14GB の VRAM が必要。** + - タイプ: 新機能([Wiki]()参照) - 貢献者: RVC-Boss - 2025.02.12 [PR#2032](https://github.com/RVC-Boss/GPT-SoVITS/pull/2032) - 内容: 多言語プロジェクトドキュメントを更新。 @@ -424,7 +424,7 @@ - タイプ: パフォーマンス最適化 - 貢献者: wzy3650 - 2025.02.12 [PR#2040](https://github.com/RVC-Boss/GPT-SoVITS/pull/2040) - - 内容: ファインチューニング用に勾配チェックポイントサポートを追加。12GB VRAMが必要。 + - 内容: ファインチューニング用に勾配チェックポイントサポートを追加。12GB VRAM が必要。 - タイプ: 新機能 - 貢献者: Kakaru Hayate - 2025.02.14 [PR#2047](https://github.com/RVC-Boss/GPT-SoVITS/pull/2047), [PR#2062](https://github.com/RVC-Boss/GPT-SoVITS/pull/2062), [PR#2073](https://github.com/RVC-Boss/GPT-SoVITS/pull/2073) @@ -432,19 +432,19 @@ - タイプ: 新機能 - 貢献者: KamioRinn - 2025.02.23 [Commit#56509a17](https://github.com/RVC-Boss/GPT-SoVITS/commit/56509a17c918c8d149c48413a672b8ddf437495b)~[Commit#514fb692](https://github.com/RVC-Boss/GPT-SoVITS/commit/514fb692db056a06ed012bc3a5bca2a5b455703e) - - 内容: **GPT-SoVITS V3モデルがLoRAトレーニングをサポート。ファインチューニングに8GB GPUメモリが必要。** + - 内容: **GPT-SoVITS V3 モデルが LoRA トレーニングをサポート。ファインチューニングに 8GB GPU メモリが必要。** - タイプ: 新機能 - 貢献者: RVC-Boss - 2025.02.23 [PR#2078](https://github.com/RVC-Boss/GPT-SoVITS/pull/2078) - - 内容: ボーカルと楽器分離のためのMel Band Roformerモデルサポートを追加。 + - 内容: ボーカルと楽器分離のための Mel Band Roformer モデルサポートを追加。 - タイプ: 新機能 - 貢献者: Sucial - 2025.02.26 [PR#2112](https://github.com/RVC-Boss/GPT-SoVITS/pull/2112), [PR#2114](https://github.com/RVC-Boss/GPT-SoVITS/pull/2114) - - 内容: 中国語パス下でのMeCabエラーを修正(日本語/韓国語または多言語テキスト分割用)。 + - 内容: 中国語パス下での MeCab エラーを修正(日本語/韓国語または多言語テキスト分割用)。 - タイプ: 修正 - 貢献者: KamioRinn - 2025.02.27 [Commit#92961c3f](https://github.com/RVC-Boss/GPT-SoVITS/commit/92961c3f68b96009ff2cd00ce614a11b6c4d026f)~[Commit#250b1c73](https://github.com/RVC-Boss/GPT-SoVITS/commit/250b1c73cba60db18148b21ec5fbce01fd9d19bc) - - 内容: **24kHzから48kHzへのオーディオ超解像モデルを追加**。V3モデルで24Kオーディオを生成する際の「こもった」オーディオ問題を緩和。 + - 内容: **24kHz から 48kHz へのオーディオ超解像モデルを追加**。V3 モデルで 24K オーディオを生成する際の「こもった」オーディオ問題を緩和。 - タイプ: 新機能 - 貢献者: RVC-Boss - 関連: [Issue#2085](https://github.com/RVC-Boss/GPT-SoVITS/issues/2085), [Issue#2117](https://github.com/RVC-Boss/GPT-SoVITS/issues/2117) @@ -453,7 +453,7 @@ - タイプ: ドキュメント - 貢献者: StaryLan - 2025.02.28 [PR#2122](https://github.com/RVC-Boss/GPT-SoVITS/pull/2122) - - 内容: モデルが識別できない短いCJK文字に対してルールベースの検出を適用。 + - 内容: モデルが識別できない短い CJK 文字に対してルールベースの検出を適用。 - タイプ: 修正 - 貢献者: KamioRinn - 関連: [Issue#2116](https://github.com/RVC-Boss/GPT-SoVITS/issues/2116) @@ -461,7 +461,7 @@ - 内容: 合成速度を制御するための発話速度パラメータを追加。 - タイプ: 修正 - 貢献者: RVC-Boss -- 2025.02.28 **GPT-SoVITS V3を正式リリース**。 +- 2025.02.28 **GPT-SoVITS V3 を正式リリース**。 ## 202503 @@ -475,30 +475,31 @@ - Pydantic: [Issue#2230](https://github.com/RVC-Boss/GPT-SoVITS/issues/2230), [Issue#2239](https://github.com/RVC-Boss/GPT-SoVITS/issues/2239). - PyTorch-Lightning: [Issue#2174](https://github.com/RVC-Boss/GPT-SoVITS/issues/2174). - 2025.03.31 [PR#2241](https://github.com/RVC-Boss/GPT-SoVITS/pull/2241) - - 内容: **SoVITS v3の並列推論を有効化。** + + - 内容: **SoVITS v3 の並列推論を有効化。** - タイプ: 新機能 - 貢献者: ChasonJiang - その他の軽微なバグを修正。 -- ONNXランタイムGPU推論サポートのための統合パッケージ修正: +- ONNX ランタイム GPU 推論サポートのための統合パッケージ修正: - タイプ: 修正 - 詳細: - - G2PW内のONNXモデルをCPUからGPU推論に切り替え、CPUボトルネックを大幅に削減; - - foxjoy dereverberationモデルがGPU推論をサポート。 + - G2PW 内の ONNX モデルを CPU から GPU 推論に切り替え、CPU ボトルネックを大幅に削減; + - foxjoy dereverberation モデルが GPU 推論をサポート。 ## 202504 (V4 バージョン) - 2025.04.01 [Commit#6a60e5ed](https://github.com/RVC-Boss/GPT-SoVITS/commit/6a60e5edb1817af4a61c7a5b196c0d0f1407668f) - - 内容: SoVITS v3並列推論のロックを解除。非同期モデル読み込みロジックを修正。 + - 内容: SoVITS v3 並列推論のロックを解除。非同期モデル読み込みロジックを修正。 - タイプ: 修正 - 貢献者: RVC-Boss - 2025.04.07 [PR#2255](https://github.com/RVC-Boss/GPT-SoVITS/pull/2255) - - 内容: Ruffを使用したコードフォーマット。G2PWリンクを更新。 + - 内容: Ruff を使用したコードフォーマット。G2PW リンクを更新。 - タイプ: スタイル - 貢献者: XXXXRT666 - 2025.04.15 [PR#2290](https://github.com/RVC-Boss/GPT-SoVITS/pull/2290) - - 内容: ドキュメントを整理。Python 3.11サポートを追加。インストーラーを更新。 + - 内容: ドキュメントを整理。Python 3.11 サポートを追加。インストーラーを更新。 - タイプ: 雑務 - 貢献者: XXXXRT666 - 2025.04.20 [PR#2300](https://github.com/RVC-Boss/GPT-SoVITS/pull/2300) @@ -506,11 +507,11 @@ - タイプ: 雑務 - 貢献者: XXXXRT666 - 2025.04.20 [Commit#e0c452f0](https://github.com/RVC-Boss/GPT-SoVITS/commit/e0c452f0078e8f7eb560b79a54d75573fefa8355)~[Commit#9d481da6](https://github.com/RVC-Boss/GPT-SoVITS/commit/9d481da610aa4b0ef8abf5651fd62800d2b4e8bf) - - 内容: **GPT-SoVITS V4モデルを追加。** + - 内容: **GPT-SoVITS V4 モデルを追加。** - タイプ: 新機能 - 貢献者: RVC-Boss - 2025.04.21 [Commit#8b394a15](https://github.com/RVC-Boss/GPT-SoVITS/commit/8b394a15bce8e1d85c0b11172442dbe7a6017ca2)~[Commit#bc2fe5ec](https://github.com/RVC-Boss/GPT-SoVITS/commit/bc2fe5ec86536c77bb3794b4be263ac87e4fdae6), [PR#2307](https://github.com/RVC-Boss/GPT-SoVITS/pull/2307) - - 内容: V4の並列推論を有効化。 + - 内容: V4 の並列推論を有効化。 - タイプ: 新機能 - 貢献者: RVC-Boss、ChasonJiang - 2025.04.22 [Commit#7405427a](https://github.com/RVC-Boss/GPT-SoVITS/commit/7405427a0ab2a43af63205df401fd6607a408d87)~[Commit#590c83d7](https://github.com/RVC-Boss/GPT-SoVITS/commit/590c83d7667c8d4908f5bdaf2f4c1ba8959d29ff), [PR#2309](https://github.com/RVC-Boss/GPT-SoVITS/pull/2309) @@ -518,24 +519,24 @@ - タイプ: 修正 - 貢献者: RVC-Boss、ChasonJiang - 2025.04.22 [Commit#fbdab94e](https://github.com/RVC-Boss/GPT-SoVITS/commit/fbdab94e17d605d85841af6f94f40a45976dd1d9), [PR#2310](https://github.com/RVC-Boss/GPT-SoVITS/pull/2310) - - 内容: NumpyとNumbaのバージョン不一致問題を修正。librosaバージョンを更新。 + - 内容: Numpy と Numba のバージョン不一致問題を修正。librosa バージョンを更新。 - タイプ: 修正 - 貢献者: RVC-Boss、XXXXRT666 - 関連: [Issue#2308](https://github.com/RVC-Boss/GPT-SoVITS/issues/2308) -- **2024.04.22 GPT-SoVITS V4を正式リリース**。 +- **2024.04.22 GPT-SoVITS V4 を正式リリース**。 - 2025.04.22 [PR#2311](https://github.com/RVC-Boss/GPT-SoVITS/pull/2311) - - 内容: Gradioパラメータを更新。 + - 内容: Gradio パラメータを更新。 - タイプ: 雑務 - 貢献者: XXXXRT666 - 2025.04.25 [PR#2322](https://github.com/RVC-Boss/GPT-SoVITS/pull/2322) - - 内容: Colab/Kaggleノートブックスクリプトを改善。 + - 内容: Colab/Kaggle ノートブックスクリプトを改善。 - タイプ: 雑務 - 貢献者: XXXXRT666 ## 202505 - 2025.05.26 [PR#2351](https://github.com/RVC-Boss/GPT-SoVITS/pull/2351) - - 内容: DockerとWindows自動ビルドスクリプトを改善。pre-commitフォーマットを追加。 + - 内容: Docker と Windows 自動ビルドスクリプトを改善。pre-commit フォーマットを追加。 - タイプ: 雑務 - 貢献者: XXXXRT666 - 2025.05.26 [PR#2408](https://github.com/RVC-Boss/GPT-SoVITS/pull/2408) @@ -544,7 +545,7 @@ - 貢献者: KamioRinn - 関連: [Issue#2404](https://github.com/RVC-Boss/GPT-SoVITS/issues/2404) - 2025.05.26 [PR#2377](https://github.com/RVC-Boss/GPT-SoVITS/pull/2377) - - 内容: キャッシュ戦略を実装し、SoVITS V3/V4推論速度を10%向上。 + - 内容: キャッシュ戦略を実装し、SoVITS V3/V4 推論速度を 10%向上。 - タイプ: パフォーマンス最適化 - 貢献者: Kakaru Hayate - 2025.05.26 [Commit#4d9d56b1](https://github.com/RVC-Boss/GPT-SoVITS/commit/4d9d56b19638dc434d6eefd9545e4d8639a3e072), [Commit#8c705784](https://github.com/RVC-Boss/GPT-SoVITS/commit/8c705784c50bf438c7b6d0be33a9e5e3cb90e6b2), [Commit#fafe4e7f](https://github.com/RVC-Boss/GPT-SoVITS/commit/fafe4e7f120fba56c5f053c6db30aa675d5951ba) @@ -552,7 +553,7 @@ - タイプ: 修正 - 貢献者: RVC-Boss - 2025.05.29 [Commit#1934fc1e](https://github.com/RVC-Boss/GPT-SoVITS/commit/1934fc1e1b22c4c162bba1bbe7d7ebb132944cdc) - - 内容: UVR5およびONNX dereverberationモデルのエラーを修正。FFmpegが元のパスにスペースを含むMP3/M4Aファイルをエンコードする場合の問題を解決。 + - 内容: UVR5 および ONNX dereverberation モデルのエラーを修正。FFmpeg が元のパスにスペースを含む MP3/M4A ファイルをエンコードする場合の問題を解決。 - タイプ: 修正 - 貢献者: RVC-Boss diff --git a/docs/ja/README.md b/docs/ja/README.md index d4d3081e..242222f4 100644 --- a/docs/ja/README.md +++ b/docs/ja/README.md @@ -1,16 +1,23 @@ +# +

GPT-SoVITS-WebUI

-パワフルなFew-Shot音声変換・音声合成 WebUI.

+パワフルなFew-Shot音声変換・音声合成 WebUI.

[![madewithlove](https://img.shields.io/badge/made_with-%E2%9D%A4-red?style=for-the-badge&labelColor=orange)](https://github.com/RVC-Boss/GPT-SoVITS) -
+[![Train In Colab](https://img.shields.io/badge/Colab-Training-F9AB00?style=for-the-badge&logo=googlecolab)](https://colab.research.google.com/github/RVC-Boss/GPT-SoVITS/blob/main/Colab-WebUI.ipynb) +[![Infer In Colab](https://img.shields.io/badge/Colab-Inference-F9AB00?style=for-the-badge&logo=googlecolab)](https://colab.research.google.com/github/RVC-Boss/GPT-SoVITS/blob/main/Colab-Inference.ipynb) +[![Huggingface](https://img.shields.io/badge/HuggingFace-online%20demo-blue.svg?style=for-the-badge&logo=huggingface)](https://huggingface.co/spaces/lj1995/GPT-SoVITS-v2) -[![Open In Colab](https://img.shields.io/badge/Colab-F9AB00?style=for-the-badge&logo=googlecolab&color=525252)](https://colab.research.google.com/github/RVC-Boss/GPT-SoVITS/blob/main/colab_webui.ipynb) -[![License](https://img.shields.io/badge/LICENSE-MIT-green.svg?style=for-the-badge)](https://github.com/RVC-Boss/GPT-SoVITS/blob/main/LICENSE) -[![Huggingface](https://img.shields.io/badge/🤗%20-online%20demo-yellow.svg?style=for-the-badge)](https://huggingface.co/spaces/lj1995/GPT-SoVITS-v2) -[![Discord](https://img.shields.io/discord/1198701940511617164?color=%23738ADB&label=Discord&style=for-the-badge)](https://discord.gg/dnrgs5GHfG) +[![GitHub release](https://img.shields.io/github/v/release/RVC-Boss/gpt-sovits?style=for-the-badge&logo=github)](https://github.com/RVC-Boss/gpt-sovits/releases) +[![Image Size](https://img.shields.io/docker/image-size/xxxxrt666/gpt-sovits/latest?style=for-the-badge&logo=docker)](https://hub.docker.com/r/xxxxrt666/gpt-sovits) +[![License](https://img.shields.io/badge/LICENSE-MIT-green.svg?style=for-the-badge&logo=opensourceinitiative)](https://github.com/RVC-Boss/GPT-SoVITS/blob/main/LICENSE) + +[![简体中文](https://img.shields.io/badge/简体中文-阅读文档-blue?style=for-the-badge&logo=googledocs&logoColor=white)](https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e) +[![English](https://img.shields.io/badge/English-Read%20Docs-blue?style=for-the-badge&logo=googledocs&logoColor=white)](https://rentry.co/GPT-SoVITS-guide#/) +[![Change Log](https://img.shields.io/badge/Change%20Log-View%20Updates-blue?style=for-the-badge&logo=googledocs&logoColor=white)](https://github.com/RVC-Boss/GPT-SoVITS/blob/main/docs/en/Changelog_EN.md) [**English**](../../README.md) | [**中文简体**](../cn/README.md) | **日本語** | [**한국어**](../ko/README.md) | [**Türkçe**](../tr/README.md) @@ -18,7 +25,7 @@ --- -## 機能: +## 機能 1. **Zero-Shot TTS:** たった 5 秒間の音声サンプルで、即座にテキストからその音声に変換できます. @@ -32,9 +39,9 @@ 声の事前学習無しかつ Few-Shot でトレーニングされたモデルのデモ: -https://github.com/RVC-Boss/GPT-SoVITS/assets/129054828/05bee1fa-bdd8-4d85-9350-80c060ab47fb + -**ユーザーマニュアル: [简体中文](https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e) | [English](https://rentry.co/GPT-SoVITS-guide#/)** + ## インストール @@ -165,7 +172,7 @@ docker exec -it ``` -V1 に切り替えたい場合は - -```bash -python webui.py v1 <言語(オプション)> -``` - -または WebUI で手動でバージョンを切り替えてください. - ### 微調整 #### パス自動補完のサポート @@ -239,7 +237,7 @@ python webui.py v1 <言語(オプション)> #### 統合パッケージ利用者 -`go-webui-v2.bat`をダブルクリックするか、`go-webui-v2.ps1`を使用して、`1-GPT-SoVITS-TTS/1C-inference`で推論 webui を開きます. +`go-webui.bat`をダブルクリックするか、`go-webui.ps1`を使用して、`1-GPT-SoVITS-TTS/1C-inference`で推論 webui を開きます. #### その他 @@ -359,11 +357,6 @@ V1/V2/V3/V4 環境から V2Pro への移行方法: python tools/uvr5/webui.py "" ``` - - コマンド ラインを使用してデータセットのオーディオ セグメンテーションを行う方法は次のとおりです. ```bash @@ -384,7 +377,7 @@ python tools/asr/funasr_asr.py -i -o ASR 処理は Faster_Whisper を通じて実行されます(中国語を除く ASR マーキング) -(進行状況バーは表示されません.GPU のパフォーマンスにより時間遅延が発生する可能性があります) +(進行状況バーは表示されません. GPU のパフォーマンスにより時間遅延が発生する可能性があります) ```bash python ./tools/asr/fasterwhisper_asr.py -i -o -l -p @@ -439,5 +432,5 @@ python ./tools/asr/fasterwhisper_asr.py -i -o -l -p ## すべてのコントリビューターに感謝します - + Contributors diff --git a/docs/ko/Changelog_KO.md b/docs/ko/Changelog_KO.md index f22a830d..b9b91209 100644 --- a/docs/ko/Changelog_KO.md +++ b/docs/ko/Changelog_KO.md @@ -242,7 +242,7 @@ - 유형: 최적화 - 기여자: GoHomeToMacDonal - 2024.03.10 [PR#721](https://github.com/RVC-Boss/GPT-SoVITS/pull/721) - - 내용: 빠른 추론 브랜치 'fast_inference_' 추가 + - 내용: 빠른 추론 브랜치 'fast*inference*' 추가 - 유형: 기능 - 기여자: ChasonJiang - 2024.03.13 [PR#761](https://github.com/RVC-Boss/GPT-SoVITS/pull/761) @@ -285,7 +285,7 @@ - 2024.06.06 [Commit#99f09c8b](https://github.com/RVC-Boss/GPT-SoVITS/commit/99f09c8bdc155c1f4272b511940717705509582a) - 내용: WebUI의 GPT 미세조정 시 중국어 입력 텍스트의 BERT 특징을 읽지 않아 추론과 불일치 및 품질 저하가 발생하는 문제 수정 - **주의: 이전에 대량의 데이터로 미세조정을 한 경우 품질 향상을 위해 모델 재조정 권장** + **주의: 이전에 대량의 데이터로 미세조정을 한 경우 품질 향상을 위해 모델 재조정 권장** - 유형: 수정 - 기여자: RVC-Boss - 2024.06.07 [PR#1159](https://github.com/RVC-Boss/GPT-SoVITS/pull/1159) @@ -347,7 +347,7 @@ - 2024.07.23 [Commit#9588a3c5](https://github.com/RVC-Boss/GPT-SoVITS/commit/9588a3c52d9ebdb20b3c5d74f647d12e7c1171c2), [PR#1340](https://github.com/RVC-Boss/GPT-SoVITS/pull/1340) - 내용: 합성 중 음성 속도 조절 기능 추가(무작위성 고정 및 속도만 제어 옵션 포함). 이 기능은 `api.py`에 업데이트됨 - 유형: 기능 - - 기여자: RVC-Boss, 红血球AE3803 + - 기여자: RVC-Boss, 红血球 AE3803 - 2024.07.27 [PR#1306](https://github.com/RVC-Boss/GPT-SoVITS/pull/1306), [PR#1356](https://github.com/RVC-Boss/GPT-SoVITS/pull/1356) - 내용: BS-RoFormer 보컬 분리 모델 지원 추가 - 유형: 기능 @@ -409,7 +409,7 @@ - 2025.02.11 [Commit#ed207c4b](https://github.com/RVC-Boss/GPT-SoVITS/commit/ed207c4b879d5296e9be3ae5f7b876729a2c43b8)~[Commit#6e2b4918](https://github.com/RVC-Boss/GPT-SoVITS/commit/6e2b49186c5b961f0de41ea485d398dffa9787b4) - 내용: **GPT-SoVITS V3 모델 추가, 파인튜닝 시 14GB VRAM 필요.** - - 유형: 신규 기능 ([위키 참조](https://github.com/RVC-Boss/GPT-SoVITS/wiki/GPT%E2%80%90SoVITS%E2%80%90v3%E2%80%90features-(%E6%96%B0%E7%89%B9%E6%80%A7))) + - 유형: 신규 기능 ([위키 참조]()) - 기여자: RVC-Boss - 2025.02.12 [PR#2032](https://github.com/RVC-Boss/GPT-SoVITS/pull/2032) - 내용: 다국어 프로젝트 문서 업데이트. @@ -475,6 +475,7 @@ - Pydantic: [Issue#2230](https://github.com/RVC-Boss/GPT-SoVITS/issues/2230), [Issue#2239](https://github.com/RVC-Boss/GPT-SoVITS/issues/2239). - PyTorch-Lightning: [Issue#2174](https://github.com/RVC-Boss/GPT-SoVITS/issues/2174). - 2025.03.31 [PR#2241](https://github.com/RVC-Boss/GPT-SoVITS/pull/2241) + - 내용: **SoVITS v3 병렬 추론 지원 활성화.** - 유형: 신규 기능 - 기여자: ChasonJiang diff --git a/docs/ko/README.md b/docs/ko/README.md index c4c7c794..af7d79a4 100644 --- a/docs/ko/README.md +++ b/docs/ko/README.md @@ -1,3 +1,5 @@ +# +

GPT-SoVITS-WebUI

@@ -5,12 +7,17 @@ [![madewithlove](https://img.shields.io/badge/made_with-%E2%9D%A4-red?style=for-the-badge&labelColor=orange)](https://github.com/RVC-Boss/GPT-SoVITS) -
+[![Train In Colab](https://img.shields.io/badge/Colab-Training-F9AB00?style=for-the-badge&logo=googlecolab)](https://colab.research.google.com/github/RVC-Boss/GPT-SoVITS/blob/main/Colab-WebUI.ipynb) +[![Infer In Colab](https://img.shields.io/badge/Colab-Inference-F9AB00?style=for-the-badge&logo=googlecolab)](https://colab.research.google.com/github/RVC-Boss/GPT-SoVITS/blob/main/Colab-Inference.ipynb) +[![Huggingface](https://img.shields.io/badge/HuggingFace-online%20demo-blue.svg?style=for-the-badge&logo=huggingface)](https://huggingface.co/spaces/lj1995/GPT-SoVITS-v2) -[![Open In Colab](https://img.shields.io/badge/Colab-F9AB00?style=for-the-badge&logo=googlecolab&color=525252)](https://colab.research.google.com/github/RVC-Boss/GPT-SoVITS/blob/main/colab_webui.ipynb) -[![License](https://img.shields.io/badge/LICENSE-MIT-green.svg?style=for-the-badge)](https://github.com/RVC-Boss/GPT-SoVITS/blob/main/LICENSE) -[![Huggingface](https://img.shields.io/badge/🤗%20-online%20demo-yellow.svg?style=for-the-badge)](https://huggingface.co/spaces/lj1995/GPT-SoVITS-v2) -[![Discord](https://img.shields.io/discord/1198701940511617164?color=%23738ADB&label=Discord&style=for-the-badge)](https://discord.gg/dnrgs5GHfG) +[![GitHub release](https://img.shields.io/github/v/release/RVC-Boss/gpt-sovits?style=for-the-badge&logo=github)](https://github.com/RVC-Boss/gpt-sovits/releases) +[![Image Size](https://img.shields.io/docker/image-size/xxxxrt666/gpt-sovits/latest?style=for-the-badge&logo=docker)](https://hub.docker.com/r/xxxxrt666/gpt-sovits) +[![License](https://img.shields.io/badge/LICENSE-MIT-green.svg?style=for-the-badge&logo=opensourceinitiative)](https://github.com/RVC-Boss/GPT-SoVITS/blob/main/LICENSE) + +[![简体中文](https://img.shields.io/badge/简体中文-阅读文档-blue?style=for-the-badge&logo=googledocs&logoColor=white)](https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e) +[![English](https://img.shields.io/badge/English-Read%20Docs-blue?style=for-the-badge&logo=googledocs&logoColor=white)](https://rentry.co/GPT-SoVITS-guide#/) +[![Change Log](https://img.shields.io/badge/Change%20Log-View%20Updates-blue?style=for-the-badge&logo=googledocs&logoColor=white)](https://github.com/RVC-Boss/GPT-SoVITS/blob/main/docs/en/Changelog_EN.md) [**English**](../../README.md) | [**中文简体**](../cn/README.md) | [**日本語**](../ja/README.md) | **한국어** | [**Türkçe**](../tr/README.md) @@ -18,7 +25,7 @@ --- -## 기능: +## 기능 1. **제로샷 텍스트 음성 변환 (TTS):** 5초의 음성 샘플을 입력하면 즉시 텍스트를 음성으로 변환할 수 있습니다. @@ -32,9 +39,9 @@ 보지 못한 발화자의 퓨샷(few-shot) 파인튜닝 데모: -https://github.com/RVC-Boss/GPT-SoVITS/assets/129054828/05bee1fa-bdd8-4d85-9350-80c060ab47fb + -**사용자 설명서: [简体中文](https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e) | [English](https://rentry.co/GPT-SoVITS-guide#/)** + ## 설치 @@ -165,7 +172,7 @@ docker exec -it ``` -V1으로 전환하려면, - -```bash -python webui.py v1 <언어(옵션)> -``` - -또는 WebUI에서 수동으로 버전을 전환하십시오. - ### 미세 조정 #### 경로 자동 채우기가 지원됩니다 @@ -239,7 +237,7 @@ python webui.py v1 <언어(옵션)> #### 통합 패키지 사용자 -`go-webui-v2.bat`을 더블 클릭하거나 `go-webui-v2.ps1`를 사용한 다음 `1-GPT-SoVITS-TTS/1C-inference`에서 추론 webui를 엽니다. +`go-webui.bat`을 더블 클릭하거나 `go-webui.ps1`를 사용한 다음 `1-GPT-SoVITS-TTS/1C-inference`에서 추론 webui를 엽니다. #### 기타 @@ -277,13 +275,13 @@ V1 환경에서 V2를 사용하려면: 3. [huggingface](https://huggingface.co/lj1995/GPT-SoVITS/tree/main/gsv-v2final-pretrained)에서 V2 사전 학습 모델을 다운로드하여 `GPT_SoVITS/pretrained_models/gsv-v2final-pretrained`에 넣으십시오. - 중국어 V2 추가: [G2PWModel.zip(HF)](https://huggingface.co/XXXXRT/GPT-SoVITS-Pretrained/resolve/main/G2PWModel.zip)| [G2PWModel.zip(ModelScope)](https://www.modelscope.cn/models/XXXXRT/GPT-SoVITS-Pretrained/resolve/master/G2PWModel.zip) (G2PW 모델을 다운로드하여 압축을 풀고 `G2PWModel`로 이름을 변경한 다음 `GPT_SoVITS/text`에 배치합니다.) + 중국어 V2 추가: [G2PWModel.zip(HF)](https://huggingface.co/XXXXRT/GPT-SoVITS-Pretrained/resolve/main/G2PWModel.zip)| [G2PWModel.zip(ModelScope)](https://www.modelscope.cn/models/XXXXRT/GPT-SoVITS-Pretrained/resolve/master/G2PWModel.zip) (G2PW 모델을 다운로드하여 압축을 풀고 `G2PWModel`로 이름을 변경한 다음 `GPT_SoVITS/text`에 배치합니다) ## V3 릴리스 노트 새로운 기능: -1. 음색 유사성이 더 높아져 목표 음성에 대한 학습 데이터가 적게 필요합니다. (기본 모델을 직접 사용하여 미세 조정 없이 음색 유사성이 크게 향상됩니다.) +1. 음색 유사성이 더 높아져 목표 음성에 대한 학습 데이터가 적게 필요합니다. (기본 모델을 직접 사용하여 미세 조정 없이 음색 유사성이 크게 향상됩니다) 2. GPT 모델이 더 안정적이며 반복 및 생략이 적고, 더 풍부한 감정 표현을 가진 음성을 생성하기가 더 쉽습니다. @@ -437,8 +435,8 @@ python ./tools/asr/fasterwhisper_asr.py -i -o -l -p @Naozumi520 님께 감사드립니다. 광둥어 학습 자료를 제공해 주시고, 광둥어 관련 지식을 지도해 주셔서 감사합니다. -## 모든 기여자들에게 감사드립니다 ;) +## 모든 기여자들에게 감사드립니다 - + Contributors diff --git a/docs/tr/Changelog_TR.md b/docs/tr/Changelog_TR.md index 5612aeed..e477afd9 100644 --- a/docs/tr/Changelog_TR.md +++ b/docs/tr/Changelog_TR.md @@ -244,7 +244,7 @@ - Tür: Optimizasyon - Katkıda Bulunan: GoHomeToMacDonal - 2024.03.10 [PR#721](https://github.com/RVC-Boss/GPT-SoVITS/pull/721) - - İçerik: Hızlı çıkarım dalı 'fast_inference_' eklendi + - İçerik: Hızlı çıkarım dalı 'fast*inference*' eklendi - Tür: Özellik - Katkıda Bulunan: ChasonJiang - 2024.03.13 [PR#761](https://github.com/RVC-Boss/GPT-SoVITS/pull/761) @@ -287,7 +287,7 @@ - 2024.06.06 [Commit#99f09c8b](https://github.com/RVC-Boss/GPT-SoVITS/commit/99f09c8bdc155c1f4272b511940717705509582a) - İçerik: WebUI'da GPT ince ayarında Çince metinlerin BERT özelliklerinin okunmaması nedeniyle çıkarım tutarsızlığı ve kalite düşüşü sorunu düzeltildi - **Uyarı: Daha önce büyük miktarda veriyle ince ayar yaptıysanız, kaliteyi artırmak için modeli yeniden ayarlamanız önerilir** + **Uyarı: Daha önce büyük miktarda veriyle ince ayar yaptıysanız, kaliteyi artırmak için modeli yeniden ayarlamanız önerilir** - Tür: Düzeltme - Katkıda Bulunan: RVC-Boss - 2024.06.07 [PR#1159](https://github.com/RVC-Boss/GPT-SoVITS/pull/1159) @@ -347,7 +347,7 @@ - 2024.07.23 [Commit#9588a3c5](https://github.com/RVC-Boss/GPT-SoVITS/commit/9588a3c52d9ebdb20b3c5d74f647d12e7c1171c2), [PR#1340](https://github.com/RVC-Boss/GPT-SoVITS/pull/1340) - İçerik: Sentez sırasında konuşma hızı ayarlama özelliği eklendi (rastgeleliği sabitleme ve sadece hızı kontrol etme seçeneği dahil). Bu özellik `api.py` dosyasına eklendi - Tür: Özellik - - Katkıda Bulunan: RVC-Boss, 红血球AE3803 + - Katkıda Bulunan: RVC-Boss, 红血球 AE3803 - 2024.07.27 [PR#1306](https://github.com/RVC-Boss/GPT-SoVITS/pull/1306), [PR#1356](https://github.com/RVC-Boss/GPT-SoVITS/pull/1356) - İçerik: BS-RoFormer vokal eşlik ayırma modeli desteği eklendi. - Tür: Yeni Özellik @@ -409,7 +409,7 @@ - 2025.02.11 [Commit#ed207c4b](https://github.com/RVC-Boss/GPT-SoVITS/commit/ed207c4b879d5296e9be3ae5f7b876729a2c43b8)~[Commit#6e2b4918](https://github.com/RVC-Boss/GPT-SoVITS/commit/6e2b49186c5b961f0de41ea485d398dffa9787b4) - İçerik: **İnce ayar için 14GB VRAM gerektiren GPT-SoVITS V3 modeli eklendi.** - - Tür: Yeni Özellik ([Wiki](https://github.com/RVC-Boss/GPT-SoVITS/wiki/GPT%E2%80%90SoVITS%E2%80%90v3%E2%80%90features-(%E6%96%B0%E7%89%B9%E6%80%A7)) referans) + - Tür: Yeni Özellik ([Wiki]() referans) - Katkıda Bulunan: RVC-Boss - 2025.02.12 [PR#2032](https://github.com/RVC-Boss/GPT-SoVITS/pull/2032) - İçerik: Çok dilli proje dokümantasyonu güncellendi. @@ -475,6 +475,7 @@ - Pydantic: [Issue#2230](https://github.com/RVC-Boss/GPT-SoVITS/issues/2230), [Issue#2239](https://github.com/RVC-Boss/GPT-SoVITS/issues/2239). - PyTorch-Lightning: [Issue#2174](https://github.com/RVC-Boss/GPT-SoVITS/issues/2174). - 2025.03.31 [PR#2241](https://github.com/RVC-Boss/GPT-SoVITS/pull/2241) + - İçerik: **SoVITS v3 için paralel çıkarım etkinleştirildi.** - Tür: Yeni Özellik - Katkıda Bulunan: ChasonJiang diff --git a/docs/tr/README.md b/docs/tr/README.md index cc32691f..7d6fc93f 100644 --- a/docs/tr/README.md +++ b/docs/tr/README.md @@ -1,3 +1,5 @@ +# +

GPT-SoVITS-WebUI

@@ -7,12 +9,17 @@ Güçlü Birkaç Örnekli Ses Dönüştürme ve Metinden Konuşmaya Web Arayüz RVC-Boss%2FGPT-SoVITS | Trendshift - +[![Train In Colab](https://img.shields.io/badge/Colab-Training-F9AB00?style=for-the-badge&logo=googlecolab)](https://colab.research.google.com/github/RVC-Boss/GPT-SoVITS/blob/main/Colab-WebUI.ipynb) +[![Infer In Colab](https://img.shields.io/badge/Colab-Inference-F9AB00?style=for-the-badge&logo=googlecolab)](https://colab.research.google.com/github/RVC-Boss/GPT-SoVITS/blob/main/Colab-Inference.ipynb) +[![Huggingface](https://img.shields.io/badge/HuggingFace-online%20demo-blue.svg?style=for-the-badge&logo=huggingface)](https://huggingface.co/spaces/lj1995/GPT-SoVITS-v2) -[![Open In Colab](https://img.shields.io/badge/Colab-F9AB00?style=for-the-badge&logo=googlecolab&color=525252)](https://colab.research.google.com/github/RVC-Boss/GPT-SoVITS/blob/main/colab_webui.ipynb) -[![License](https://img.shields.io/badge/LICENSE-MIT-green.svg?style=for-the-badge)](https://github.com/RVC-Boss/GPT-SoVITS/blob/main/LICENSE) -[![Huggingface](https://img.shields.io/badge/🤗%20-online%20demo-yellow.svg?style=for-the-badge)](https://huggingface.co/spaces/lj1995/GPT-SoVITS-v2) -[![Discord](https://img.shields.io/discord/1198701940511617164?color=%23738ADB&label=Discord&style=for-the-badge)](https://discord.gg/dnrgs5GHfG) +[![GitHub release](https://img.shields.io/github/v/release/RVC-Boss/gpt-sovits?style=for-the-badge&logo=github)](https://github.com/RVC-Boss/gpt-sovits/releases) +[![Image Size](https://img.shields.io/docker/image-size/xxxxrt666/gpt-sovits/latest?style=for-the-badge&logo=docker)](https://hub.docker.com/r/xxxxrt666/gpt-sovits) +[![License](https://img.shields.io/badge/LICENSE-MIT-green.svg?style=for-the-badge&logo=opensourceinitiative)](https://github.com/RVC-Boss/GPT-SoVITS/blob/main/LICENSE) + +[![简体中文](https://img.shields.io/badge/简体中文-阅读文档-blue?style=for-the-badge&logo=googledocs&logoColor=white)](https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e) +[![English](https://img.shields.io/badge/English-Read%20Docs-blue?style=for-the-badge&logo=googledocs&logoColor=white)](https://rentry.co/GPT-SoVITS-guide#/) +[![Change Log](https://img.shields.io/badge/Change%20Log-View%20Updates-blue?style=for-the-badge&logo=googledocs&logoColor=white)](https://github.com/RVC-Boss/GPT-SoVITS/blob/main/docs/en/Changelog_EN.md) [**English**](../../README.md) | [**中文简体**](../cn/README.md) | [**日本語**](../ja/README.md) | [**한국어**](../ko/README.md) | **Türkçe** @@ -20,7 +27,7 @@ Güçlü Birkaç Örnekli Ses Dönüştürme ve Metinden Konuşmaya Web Arayüz --- -## Özellikler: +## Özellikler 1. **Sıfır Örnekli Metinden Konuşmaya:** 5 saniyelik bir vokal örneği girin ve anında metinden konuşmaya dönüşümünü deneyimleyin. @@ -34,9 +41,9 @@ Güçlü Birkaç Örnekli Ses Dönüştürme ve Metinden Konuşmaya Web Arayüz Görünmeyen konuşmacılar birkaç örnekli ince ayar demosu: -https://github.com/RVC-Boss/GPT-SoVITS/assets/129054828/05bee1fa-bdd8-4d85-9350-80c060ab47fb + -**Kullanıcı Kılavuzu: [简体中文](https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e) | [English](https://rentry.co/GPT-SoVITS-guide#/)** + ## Kurulum @@ -167,7 +174,7 @@ docker exec -it ``` -V1'e geçmek istiyorsanız, - -```bash -python webui.py v1 -``` - -veya WebUI'de manuel olarak sürüm değiştirin. - ### İnce Ayar #### Yol Otomatik Doldurma artık destekleniyor @@ -243,7 +241,7 @@ veya WebUI'de manuel olarak sürüm değiştirin. #### Entegre Paket Kullanıcıları -`go-webui-v2.bat` dosyasına çift tıklayın veya `go-webui-v2.ps1` kullanın, ardından çıkarım webui'sini `1-GPT-SoVITS-TTS/1C-inference` adresinde açın. +`go-webui.bat` dosyasına çift tıklayın veya `go-webui.ps1` kullanın, ardından çıkarım webui'sini `1-GPT-SoVITS-TTS/1C-inference` adresinde açın. #### Diğerleri @@ -281,11 +279,11 @@ V1 ortamından V2'yi kullanmak için: 3. [huggingface](https://huggingface.co/lj1995/GPT-SoVITS/tree/main/gsv-v2final-pretrained) adresinden v2 önceden eğitilmiş modelleri indirin ve bunları `GPT_SoVITS/pretrained_models/gsv-v2final-pretrained` dizinine yerleştirin. - Ek olarak Çince V2: [G2PWModel.zip(HF)](https://huggingface.co/XXXXRT/GPT-SoVITS-Pretrained/resolve/main/G2PWModel.zip)| [G2PWModel.zip(ModelScope)](https://www.modelscope.cn/models/XXXXRT/GPT-SoVITS-Pretrained/resolve/master/G2PWModel.zip) (G2PW modellerini indirip, zipten çıkarıp, `G2PWModel` olarak yeniden adlandırıp `GPT_SoVITS/text` dizinine yerleştirin.) + Ek olarak Çince V2: [G2PWModel.zip(HF)](https://huggingface.co/XXXXRT/GPT-SoVITS-Pretrained/resolve/main/G2PWModel.zip)| [G2PWModel.zip(ModelScope)](https://www.modelscope.cn/models/XXXXRT/GPT-SoVITS-Pretrained/resolve/master/G2PWModel.zip) (G2PW modellerini indirip, zipten çıkarıp, `G2PWModel` olarak yeniden adlandırıp `GPT_SoVITS/text` dizinine yerleştirin) ## V3 Sürüm Notları -Yeni Özellikler: +### Yeni Özellikler 1. **Tını benzerliği** daha yüksek olup, hedef konuşmacıyı yakınsamak için daha az eğitim verisi gerekmektedir (tını benzerliği, base model doğrudan kullanılacak şekilde fine-tuning yapılmadan önemli ölçüde iyileştirilmiştir). @@ -293,7 +291,7 @@ Yeni Özellikler: [daha fazla detay]() -V2 ortamında V3 kullanımı: +### v2 ortamında v3 kullanımı 1. `pip install -r requirements.txt` ile bazı paketleri güncelleyin. @@ -323,7 +321,7 @@ V1/V2/V3 ortamından V4'e geçiş: Yeni Özellikler: 1. **V2 ile karşılaştırıldığında biraz daha yüksek VRAM kullanımı sağlar ancak V4'ten daha iyi performans gösterir; aynı donanım maliyeti ve hız avantajını korur**. - [Daha fazla bilgi](https://github.com/RVC-Boss/GPT-SoVITS/wiki/GPT%E2%80%90SoVITS%E2%80%90features-(%E5%90%84%E7%89%88%E6%9C%AC%E7%89%B9%E6%80%A7)) + [Daha fazla bilgi]() 2. V1/V2 ve V2Pro serisi benzer özelliklere sahipken, V3/V4 de yakın işlevleri paylaşır. Ortalama kalite düşük olan eğitim setleriyle V1/V2/V2Pro iyi sonuçlar verebilir ama V3/V4 veremez. Ayrıca, V3/V4’ün ürettiği ses tonu genel eğitim setine değil, referans ses örneğine daha çok benzemektedir. @@ -363,11 +361,6 @@ UVR5 için Web Arayüzünü açmak için komut satırını kullanın python tools/uvr5/webui.py "" ``` - - Veri setinin ses segmentasyonu komut satırı kullanılarak bu şekilde yapılır ```bash @@ -443,5 +436,5 @@ python ./tools/asr/fasterwhisper_asr.py -i -o <çıktı> -l ## Tüm katkıda bulunanlara çabaları için teşekkürler - + Contributors diff --git a/install.sh b/install.sh index eba18683..187d07e5 100644 --- a/install.sh +++ b/install.sh @@ -34,8 +34,8 @@ print_help() { echo " -h, --help Show this help message and exit" echo "" echo "Examples:" - echo " bash install.sh --source HF --download-uvr5" - echo " bash install.sh --source ModelScope" + echo " bash install.sh --device CU128 --source HF --download-uvr5" + echo " bash install.sh --device MPS --source ModelScope" } # Show help if no arguments provided @@ -149,7 +149,6 @@ else echo "Installing,Please Wait..." fi done - conda install -c conda-forge -q -y fi echo "Installing ffmpeg and cmake..." diff --git a/requirements.txt b/requirements.txt index 90e4957d..4ad45b2f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ pytorch-lightning>=2.4 gradio<5 ffmpeg-python onnxruntime; platform_machine == "aarch64" or platform_machine == "arm64" -onnxruntime-gpu; platform_machine == "x86_64" or platform_machine == "AMD64" +onnxruntime-gpu; platform_machine == "x86_64" or platform_machine == "amd64" tqdm funasr==1.0.27 cn2an diff --git a/tools/subfix.py b/tools/subfix.py new file mode 100644 index 00000000..6ef91423 --- /dev/null +++ b/tools/subfix.py @@ -0,0 +1,544 @@ +import datetime +import os +import threading +import traceback +from dataclasses import dataclass +from functools import partial +from typing import List + +import click +import gradio as gr +import librosa +import numpy as np +import soundfile +from gradio.components.audio import WaveformOptions + +from tools.i18n.i18n import I18nAuto + +PARTIAL_EXIT = partial(os._exit, 0) + +LANGUAGE_MAP: dict = { + "ZH": "ZH", + "zh": "ZH", + "JP": "JA", + "jp": "JA", + "JA": "JA", + "ja": "JA", + "EN": "EN", + "en": "EN", + "KO": "KO", + "ko": "KO", + "yue": "YUE", + "YUE": "YUE", +} + +LOCK = threading.Lock() + +IS_CLI = True + + +@dataclass +class SubfixErr: + error: Exception + tracebacks: str + + +class Subfix: + batch_size: int = 2 + cur_idx: int = 0 + list_path: str + textboxes: List[gr.Textbox] = [] + audios: List[gr.Audio] = [] + languages: List[gr.Dropdown] = [] + selections: List[gr.Checkbox] = [] + transcriptions_list: List[List[str]] = [] + + merge_audio_button: gr.Button + delete_audio_button: gr.Button + previous_index_button1: gr.Button + next_index_button1: gr.Button + previous_index_button2: gr.Button + next_index_button2: gr.Button + index_slider: gr.Slider + batch_size_slider: gr.Slider + close_button: gr.Button + + def __init__(self, i18n: I18nAuto): + self.i18n = i18n + with gr.Row(equal_height=True): + with gr.Column(scale=2, min_width=160): + self.index_slider = gr.Slider(minimum=0, maximum=1, step=1, label=i18n("音频索引")) + with gr.Column(scale=1, min_width=160): + self.previous_index_button1 = gr.Button(value=i18n("上一页"), elem_id="btn_previous") + with gr.Column(scale=1, min_width=160): + self.next_index_button1 = gr.Button(value=i18n("下一页"), elem_id="btn_next") + with gr.Row(equal_height=True): + with gr.Column(scale=2, min_width=160): + self.batch_size_slider = gr.Slider( + minimum=4, maximum=20, step=2, value=self.batch_size, label=i18n("每页音频条数") + ) + with gr.Column(scale=1, min_width=160): + self.merge_audio_button = gr.Button(value=i18n("合并选中音频")) + with gr.Column(scale=1, min_width=160): + self.delete_audio_button = gr.Button(value=i18n("删除选中音频")) + gr.render( + inputs=[self.index_slider, self.batch_size_slider], + triggers=[self.batch_size_slider.change], + )(self._render_text_area) + + @property + def max_index(self): + return len(self.transcriptions_list) - 1 + + def load_list(self, list_path: str): + with open(list_path, mode="r", encoding="utf-8") as f: + list_data = f.readlines() + for idx, transcriptions in enumerate(list_data): + data = transcriptions.split("|") + if len(data) != 4: + print(f"Error Line {idx + 1}: {'|'.join(data)}") + continue + audio_name, audio_folder, text_language, text = data + self.transcriptions_list.append( + [ + audio_name, + audio_folder, + LANGUAGE_MAP.get(text_language.upper(), text_language.upper()), + text.strip("\n").strip(), + ] + ) + self.list_path = list_path + + def save_list(self): + data = [] + for transcriptions in self.transcriptions_list: + data.append("|".join(transcriptions)) + try: + with open(self.list_path, mode="w", encoding="utf-8") as f: + f.write("\n".join(data)) + except Exception as e: + return SubfixErr(e, traceback.format_exc()) + + def change_index(self, index: int): + audios = [] + texts = [] + languages = [] + checkboxs = [] + with LOCK: + for i in range(index, index + self.batch_size): + if i <= self.max_index: + audios.append(gr.Audio(value=self.transcriptions_list[i][0])) + texts.append(gr.Textbox(value=self.transcriptions_list[i][3], label=self.i18n("Text") + f" {i}")) + languages.append(gr.Dropdown(value=self.transcriptions_list[i][2])) + else: + audios.append(gr.Audio(value=None, interactive=False)) + texts.append(gr.Textbox(value=None, label=self.i18n("Text") + f" {i}", interactive=False)) + languages.append(gr.Dropdown(value=None, interactive=False)) + checkboxs = [gr.Checkbox(False) for i in range(self.batch_size)] + self.cur_idx = index + return *audios, *texts, *languages, *checkboxs + + def next_page(self, index: int): + batch_size = self.batch_size + max_index = max(self.max_index - batch_size + 1, 0) + index = min(index + batch_size, max_index) + return gr.Slider(value=index), *self.change_index(index) + + def previous_page(self, index: int): + batch_size = self.batch_size + index = max(index - batch_size, 0) + return gr.Slider(value=index), *self.change_index(index) + + def delete_audio(self, index, *selected): + delete_index = [i + index for i, _ in enumerate(selected) if _] + delete_index = [i for i in delete_index if i < self.max_index] + for idx in delete_index[::-1]: + self.transcriptions_list.pop(idx) + self.save_list() + return gr.Slider(value=index, maximum=self.max_index), *self.change_index(index) + + def submit(self, *input): + with LOCK: + index = self.cur_idx + batch_size = self.batch_size + texts = input[: len(input) // 2] + languages = input[len(input) // 2 :] + if texts is None or languages is None: + raise ValueError() + print(index, min(index + batch_size, self.max_index)) + for idx in range(index, min(index + batch_size, self.max_index + 1)): + self.transcriptions_list[idx][3] = texts[idx - index].strip().strip("\n") + self.transcriptions_list[idx][2] = languages[idx - index] + result = self.save_list() + if isinstance(result, SubfixErr): + gr.Warning(str(result.error)) + print(result.tracebacks) + + def merge_audio(self, index, *selected): + batch_size = self.batch_size + merge_index = [i + index for i, _ in enumerate(selected) if _] + merge_index = [i for i in merge_index if i < self.max_index] + if len(merge_index) < 2: + return *(gr.skip() for _ in range(batch_size * 3 + 1)), *(gr.Checkbox(False) for _ in range(batch_size)) + else: + merge_texts = [] + merge_audios = [] + first_itm_index = merge_index[0] + first_itm_path = f"{os.path.splitext(self.transcriptions_list[first_itm_index][0])[0]}_{str(datetime.datetime.now().strftime(r'%Y%m%d_%H%M%S'))}.wav" + final_audio_list = [] + for idx in merge_index: + merge_texts.append(self.transcriptions_list[idx][3]) + merge_audios.append(self.transcriptions_list[idx][0]) + for idx in merge_index[:0:-1]: + self.transcriptions_list.pop(idx) + for audio_path in merge_audios: + final_audio_list.append(librosa.load(audio_path, sr=32000, mono=True)[0]) + final_audio_list.append(np.zeros(int(32000 * 0.3))) + final_audio_list.pop() + final_audio = np.concatenate(final_audio_list) + soundfile.write(first_itm_path, final_audio, 32000) + self.transcriptions_list[first_itm_index][0] = first_itm_path + self.transcriptions_list[first_itm_index][3] = ",".join(merge_texts) + return gr.Slider(maximum=self.max_index), *self.change_index(index) + + def _render_text_area(self, index, batch_size): + i18n = self.i18n + self.textboxes = [] + self.audios = [] + self.languages = [] + self.selections = [] + self.batch_size = batch_size + for i in range(index, index + batch_size): + with gr.Row(equal_height=True): + if i <= self.max_index: + with gr.Column(scale=2, min_width=160): + textbox_tmp = gr.Textbox( + value=self.transcriptions_list[i][3], + label=i18n("Text") + f" {i}", + lines=2, + max_lines=3, + interactive=True, + ) + with gr.Column(scale=1, min_width=160): + audio_tmp = gr.Audio( + value=self.transcriptions_list[i][0], + show_label=False, + show_download_button=False, + editable=False, + waveform_options={"show_recording_waveform": False, "show_controls": False}, + ) + with gr.Column(scale=1, min_width=160): + with gr.Group(): + with gr.Row(): + language_tmp = gr.Dropdown( + choices=["ZH", "EN", "JA", "KO", "YUE"], + value=self.transcriptions_list[i][2], + allow_custom_value=True, + label=i18n("文本语言"), + interactive=True, + ) + with gr.Row(): + selection_tmp = gr.Checkbox( + label=i18n("选择音频"), + ) + else: + with gr.Column(scale=2, min_width=160): + textbox_tmp = gr.Textbox( + label=i18n("Text") + f" {i}", + lines=2, + max_lines=3, + elem_id="subfix_textbox", + interactive=False, + ) + with gr.Column(scale=1, min_width=160): + audio_tmp = gr.Audio( + streaming=True, + show_label=False, + show_download_button=False, + interactive=False, + waveform_options=WaveformOptions(show_recording_waveform=False, show_controls=False), + ) + with gr.Column(scale=1, min_width=160): + with gr.Group(): + with gr.Row(): + language_tmp = gr.Dropdown( + choices=["ZH", "EN", "JA", "KO", "YUE"], + value=None, + allow_custom_value=True, + label=i18n("文本语言"), + interactive=False, + ) + with gr.Row(): + selection_tmp = gr.Checkbox( + label=i18n("选择音频"), + interactive=False, + ) + + self.textboxes.append(textbox_tmp) + self.audios.append(audio_tmp) + self.languages.append(language_tmp) + self.selections.append(selection_tmp) + with gr.Row(equal_height=True): + with gr.Column(scale=2, min_width=160): + self.close_button = gr.Button(value=i18n("保存并关闭打标WebUI"), variant="stop") + with gr.Column(scale=1, min_width=160): + self.previous_index_button2 = gr.Button(value=i18n("上一页")) + with gr.Column(scale=1, min_width=160): + self.next_index_button2 = gr.Button(value=i18n("下一页")) + + # Event Trigger Binding + + self.index_slider.release( # Change Index Button + fn=self.submit, + inputs=[ + *self.textboxes, + *self.languages, + ], + outputs=[], + ).success( + fn=self.change_index, + inputs=[ + self.index_slider, + ], + outputs=[ + *self.audios, + *self.textboxes, + *self.languages, + *self.selections, + ], + max_batch_size=1, + trigger_mode="once", + ) + + self.next_index_button1.click( # Next Page Button on the Top + fn=self.submit, + inputs=[ + *self.textboxes, + *self.languages, + ], + outputs=[], + ).success( + fn=self.next_page, + inputs=[ + self.index_slider, + ], + outputs=[ + self.index_slider, + *self.audios, + *self.textboxes, + *self.languages, + *self.selections, + ], + scroll_to_output=True, + trigger_mode="once", + ) + + self.next_index_button2.click( # Next Page Button on the Bottom, Binding to Next Page Button on the Top + lambda: None, + [], + [], + js=""" + () => { + document.getElementById("btn_next").click(); + }""", + trigger_mode="once", + ) + + self.previous_index_button1.click( # Previous Page Button on the Top + fn=self.submit, + inputs=[ + *self.textboxes, + *self.languages, + ], + outputs=[], + ).success( + fn=self.previous_page, + inputs=[ + self.index_slider, + ], + outputs=[ + self.index_slider, + *self.audios, + *self.textboxes, + *self.languages, + *self.selections, + ], + scroll_to_output=True, + trigger_mode="once", + ) + + self.previous_index_button2.click( # Previous Page Button on the Bottom, Binding to Previous Page Button on the Top + lambda: None, + [], + [], + js=""" + () => { + document.getElementById("btn_previous").click(); + }""", + trigger_mode="once", + ) + + self.delete_audio_button.click( # Delete the Audio in the Transcription File + fn=self.submit, + inputs=[ + *self.textboxes, + *self.languages, + ], + outputs=[], + ).success( + fn=self.delete_audio, + inputs=[ + self.index_slider, + *self.selections, + ], + outputs=[ + self.index_slider, + *self.audios, + *self.textboxes, + *self.languages, + *self.selections, + ], + scroll_to_output=True, + ).success( + fn=self.submit, + inputs=[ + *self.textboxes, + *self.languages, + ], + outputs=[], + show_progress="hidden", + ) + + self.merge_audio_button.click( # Delete the Audio in the Transcription File + fn=self.submit, + inputs=[ + *self.textboxes, + *self.languages, + ], + outputs=[], + ).success( + fn=self.merge_audio, + inputs=[ + self.index_slider, + *self.selections, + ], + outputs=[ + self.index_slider, + *self.audios, + *self.textboxes, + *self.languages, + *self.selections, + ], + scroll_to_output=True, + ).success( + fn=self.submit, + inputs=[ + *self.textboxes, + *self.languages, + ], + outputs=[], + show_progress="hidden", + ) + if not IS_CLI: + self.close_button.click( # Close the Subfix Tab, Binding to Close Button on Audio Processing Tab + fn=lambda: None, + inputs=[], + outputs=[], + js=""" + () => { + document.getElementById("btn_close").click(); + }""", + trigger_mode="once", + ) + else: + self.close_button.click( # Close the Subfix Tab, Binding to Close Button on Audio Processing Tab + fn=self.submit, + inputs=[ + *self.textboxes, + *self.languages, + ], + outputs=[], + trigger_mode="once", + ).then( + fn=PARTIAL_EXIT, + inputs=[], + outputs=[], + ) + + def render(self, list_path: str, batch_size: int = 10): + self.batch_size = batch_size + self.transcriptions_list = [] + self.load_list(list_path=list_path) + + +@click.command(name="subfix") +@click.argument( + "list-path", + metavar="", + type=click.Path(exists=True, dir_okay=False, readable=True, writable=True), + required=True, +) +@click.option( + "--i18n-lang", + type=str, + default="Auto", + help="Languages for internationalisation", + show_default=True, +) +@click.option( + "--port", + type=int, + default="9871", + show_default=True, +) +@click.option( + "--share", + type=bool, + default=False, + show_default=True, +) +def main(list_path: str = "", i18n_lang="Auto", port=9871, share=False): + """Web-Based audio subtitle editing and multilingual annotation Tool + + Accept a transcription list path to launch a Gradio WebUI for text editing + """ + + with gr.Blocks(analytics_enabled=False) as app: + subfix = Subfix(I18nAuto(i18n_lang)) + subfix.render(list_path=list_path) + if subfix.max_index >= 0: + timer = gr.Timer(0.1) + + timer.tick( + fn=lambda: ( + gr.Slider(value=0, maximum=subfix.max_index, step=1), + gr.Slider(value=10), + gr.Timer(active=False), + ), + inputs=[], + outputs=[ + subfix.index_slider, + subfix.batch_size_slider, + timer, + ], + ) + else: + timer = gr.Timer(2) + + timer.tick( + fn=lambda x: (_ for _ in ()).throw(gr.Error("Invalid List")) if x is None else None, + inputs=[], + outputs=[], + ) + app.queue().launch( + server_name="0.0.0.0", + inbrowser=True, + share=share, + server_port=port, + quiet=False, + show_api=False, + ) + + +if __name__ == "__main__": + main() diff --git a/tools/subfix_webui.py b/tools/subfix_webui.py deleted file mode 100644 index 3f2fd03e..00000000 --- a/tools/subfix_webui.py +++ /dev/null @@ -1,422 +0,0 @@ -import sys -from tools.i18n.i18n import I18nAuto, scan_language_list -language = sys.argv[-1] if sys.argv[-1] in scan_language_list() else "Auto" -i18n = I18nAuto(language=language) -import argparse -import copy -import json -import os -import uuid - -try: - import gradio.analytics as analytics - - analytics.version_check = lambda: None -except: - ... - -import gradio as gr -import librosa -import numpy as np -import soundfile - -g_json_key_text = "" -g_json_key_path = "" -g_load_file = "" -g_load_format = "" - -g_max_json_index = 0 -g_index = 0 -g_batch = 10 -g_text_list = [] -g_audio_list = [] -g_checkbox_list = [] -g_data_json = [] - - -def reload_data(index, batch): - global g_index - g_index = index - global g_batch - g_batch = batch - datas = g_data_json[index : index + batch] - output = [] - for d in datas: - output.append({g_json_key_text: d[g_json_key_text], g_json_key_path: d[g_json_key_path]}) - return output - - -def b_change_index(index, batch): - global g_index, g_batch - g_index, g_batch = index, batch - datas = reload_data(index, batch) - output = [] - for i, _ in enumerate(datas): - output.append( - # gr.Textbox( - # label=f"Text {i+index}", - # value=_[g_json_key_text]#text - # ) - {"__type__": "update", "label": f"Text {i + index}", "value": _[g_json_key_text]} - ) - for _ in range(g_batch - len(datas)): - output.append( - # gr.Textbox( - # label=f"Text", - # value="" - # ) - {"__type__": "update", "label": "Text", "value": ""} - ) - for _ in datas: - output.append(_[g_json_key_path]) - for _ in range(g_batch - len(datas)): - output.append(None) - for _ in range(g_batch): - output.append(False) - return output - - -def b_next_index(index, batch): - b_save_file() - if (index + batch) <= g_max_json_index: - return index + batch, *b_change_index(index + batch, batch) - else: - return index, *b_change_index(index, batch) - - -def b_previous_index(index, batch): - b_save_file() - if (index - batch) >= 0: - return index - batch, *b_change_index(index - batch, batch) - else: - return 0, *b_change_index(0, batch) - - -def b_submit_change(*text_list): - global g_data_json - change = False - for i, new_text in enumerate(text_list): - if g_index + i <= g_max_json_index: - new_text = new_text.strip() + " " - if g_data_json[g_index + i][g_json_key_text] != new_text: - g_data_json[g_index + i][g_json_key_text] = new_text - change = True - if change: - b_save_file() - return g_index, *b_change_index(g_index, g_batch) - - -def b_delete_audio(*checkbox_list): - global g_data_json, g_index, g_max_json_index - b_save_file() - change = False - for i, checkbox in reversed(list(enumerate(checkbox_list))): - if g_index + i < len(g_data_json): - if checkbox == True: - g_data_json.pop(g_index + i) - change = True - - g_max_json_index = len(g_data_json) - 1 - if g_index > g_max_json_index: - g_index = g_max_json_index - g_index = g_index if g_index >= 0 else 0 - if change: - b_save_file() - # return gr.Slider(value=g_index, maximum=(g_max_json_index if g_max_json_index>=0 else 0)), *b_change_index(g_index, g_batch) - return { - "value": g_index, - "__type__": "update", - "maximum": (g_max_json_index if g_max_json_index >= 0 else 0), - }, *b_change_index(g_index, g_batch) - - -def b_invert_selection(*checkbox_list): - new_list = [not item if item is True else True for item in checkbox_list] - return new_list - - -def get_next_path(filename): - base_dir = os.path.dirname(filename) - base_name = os.path.splitext(os.path.basename(filename))[0] - for i in range(100): - new_path = os.path.join(base_dir, f"{base_name}_{str(i).zfill(2)}.wav") - if not os.path.exists(new_path): - return new_path - return os.path.join(base_dir, f"{str(uuid.uuid4())}.wav") - - -def b_audio_split(audio_breakpoint, *checkbox_list): - global g_data_json, g_max_json_index - checked_index = [] - for i, checkbox in enumerate(checkbox_list): - if checkbox == True and g_index + i < len(g_data_json): - checked_index.append(g_index + i) - if len(checked_index) == 1: - index = checked_index[0] - audio_json = copy.deepcopy(g_data_json[index]) - path = audio_json[g_json_key_path] - data, sample_rate = librosa.load(path, sr=None, mono=True) - audio_maxframe = len(data) - break_frame = int(audio_breakpoint * sample_rate) - - if break_frame >= 1 and break_frame < audio_maxframe: - audio_first = data[0:break_frame] - audio_second = data[break_frame:] - nextpath = get_next_path(path) - soundfile.write(nextpath, audio_second, sample_rate) - soundfile.write(path, audio_first, sample_rate) - g_data_json.insert(index + 1, audio_json) - g_data_json[index + 1][g_json_key_path] = nextpath - b_save_file() - - g_max_json_index = len(g_data_json) - 1 - # return gr.Slider(value=g_index, maximum=g_max_json_index), *b_change_index(g_index, g_batch) - return {"value": g_index, "maximum": g_max_json_index, "__type__": "update"}, *b_change_index(g_index, g_batch) - - -def b_merge_audio(interval_r, *checkbox_list): - global g_data_json, g_max_json_index - b_save_file() - checked_index = [] - audios_path = [] - audios_text = [] - for i, checkbox in enumerate(checkbox_list): - if checkbox == True and g_index + i < len(g_data_json): - checked_index.append(g_index + i) - - if len(checked_index) > 1: - for i in checked_index: - audios_path.append(g_data_json[i][g_json_key_path]) - audios_text.append(g_data_json[i][g_json_key_text]) - for i in reversed(checked_index[1:]): - g_data_json.pop(i) - - base_index = checked_index[0] - base_path = audios_path[0] - g_data_json[base_index][g_json_key_text] = "".join(audios_text) - - audio_list = [] - l_sample_rate = None - for i, path in enumerate(audios_path): - data, sample_rate = librosa.load(path, sr=l_sample_rate, mono=True) - l_sample_rate = sample_rate - if i > 0: - silence = np.zeros(int(l_sample_rate * interval_r)) - audio_list.append(silence) - - audio_list.append(data) - - audio_concat = np.concatenate(audio_list) - - soundfile.write(base_path, audio_concat, l_sample_rate) - - b_save_file() - - g_max_json_index = len(g_data_json) - 1 - - # return gr.Slider(value=g_index, maximum=g_max_json_index), *b_change_index(g_index, g_batch) - return {"value": g_index, "maximum": g_max_json_index, "__type__": "update"}, *b_change_index(g_index, g_batch) - - -def b_save_json(): - with open(g_load_file, "w", encoding="utf-8") as file: - for data in g_data_json: - file.write(f"{json.dumps(data, ensure_ascii=False)}\n") - - -def b_save_list(): - with open(g_load_file, "w", encoding="utf-8") as file: - for data in g_data_json: - wav_path = data["wav_path"] - speaker_name = data["speaker_name"] - language = data["language"] - text = data["text"] - file.write(f"{wav_path}|{speaker_name}|{language}|{text}".strip() + "\n") - - -def b_load_json(): - global g_data_json, g_max_json_index - with open(g_load_file, "r", encoding="utf-8") as file: - g_data_json = file.readlines() - g_data_json = [json.loads(line) for line in g_data_json] - g_max_json_index = len(g_data_json) - 1 - - -def b_load_list(): - global g_data_json, g_max_json_index - with open(g_load_file, "r", encoding="utf-8") as source: - data_list = source.readlines() - for _ in data_list: - data = _.split("|") - if len(data) == 4: - wav_path, speaker_name, language, text = data - g_data_json.append( - {"wav_path": wav_path, "speaker_name": speaker_name, "language": language, "text": text.strip()} - ) - else: - print("error line:", data) - g_max_json_index = len(g_data_json) - 1 - - -def b_save_file(): - if g_load_format == "json": - b_save_json() - elif g_load_format == "list": - b_save_list() - - -def b_load_file(): - if g_load_format == "json": - b_load_json() - elif g_load_format == "list": - b_load_list() - - -def set_global(load_json, load_list, json_key_text, json_key_path, batch): - global g_json_key_text, g_json_key_path, g_load_file, g_load_format, g_batch - - g_batch = int(batch) - - if load_json != "None": - g_load_format = "json" - g_load_file = load_json - elif load_list != "None": - g_load_format = "list" - g_load_file = load_list - else: - g_load_format = "list" - g_load_file = "demo.list" - - g_json_key_text = json_key_text - g_json_key_path = json_key_path - - b_load_file() - - -if __name__ == "__main__": - parser = argparse.ArgumentParser(description="Process some integers.") - parser.add_argument("--load_json", default="None", help="source file, like demo.json") - parser.add_argument("--is_share", default="False", help="whether webui is_share=True") - parser.add_argument("--load_list", default="None", help="source file, like demo.list") - parser.add_argument("--webui_port_subfix", default=9871, help="source file, like demo.list") - parser.add_argument("--json_key_text", default="text", help="the text key name in json, Default: text") - parser.add_argument("--json_key_path", default="wav_path", help="the path key name in json, Default: wav_path") - parser.add_argument("--g_batch", default=10, help="max number g_batch wav to display, Default: 10") - - args = parser.parse_args() - - set_global(args.load_json, args.load_list, args.json_key_text, args.json_key_path, args.g_batch) - - with gr.Blocks(analytics_enabled=False) as demo: - gr.Markdown( - value=i18n("Submit Text: 将当前页所有文本框内容手工保存到内存和文件(翻页前后或者退出标注页面前如果没点这个按钮,你再翻回来就回滚了,白忙活。)") - ) - with gr.Row(): - btn_change_index = gr.Button("Change Index") - btn_submit_change = gr.Button("Submit Text") - btn_merge_audio = gr.Button("Merge Audio") - btn_delete_audio = gr.Button("Delete Audio") - btn_previous_index = gr.Button("Previous Index") - btn_next_index = gr.Button("Next Index") - - with gr.Row(): - index_slider = gr.Slider(minimum=0, maximum=g_max_json_index, value=g_index, step=1, label="Index", scale=3) - splitpoint_slider = gr.Slider( - minimum=0, maximum=120.0, value=0, step=0.1, label="Audio Split Point(s)", scale=3 - ) - btn_audio_split = gr.Button("Split Audio", scale=1) - btn_save_json = gr.Button("Save File", visible=True, scale=1) - btn_invert_selection = gr.Button("Invert Selection", scale=1) - - with gr.Row(): - with gr.Column(): - for _ in range(0, g_batch): - with gr.Row(): - text = gr.Textbox(label="Text", visible=True, scale=5) - audio_output = gr.Audio(label="Output Audio", visible=True, scale=5) - audio_check = gr.Checkbox(label="Yes", show_label=True, info="Choose Audio", scale=1) - g_text_list.append(text) - g_audio_list.append(audio_output) - g_checkbox_list.append(audio_check) - - with gr.Row(): - batchsize_slider = gr.Slider( - minimum=1, maximum=g_batch, value=g_batch, step=1, label="Batch Size", scale=3, interactive=False - ) - interval_slider = gr.Slider(minimum=0, maximum=2, value=0, step=0.01, label="Interval", scale=3) - btn_theme_dark = gr.Button("Light Theme", link="?__theme=light", scale=1) - btn_theme_light = gr.Button("Dark Theme", link="?__theme=dark", scale=1) - - btn_change_index.click( - b_change_index, - inputs=[ - index_slider, - batchsize_slider, - ], - outputs=[*g_text_list, *g_audio_list, *g_checkbox_list], - ) - - btn_submit_change.click( - b_submit_change, - inputs=[ - *g_text_list, - ], - outputs=[index_slider, *g_text_list, *g_audio_list, *g_checkbox_list], - ) - - btn_previous_index.click( - b_previous_index, - inputs=[ - index_slider, - batchsize_slider, - ], - outputs=[index_slider, *g_text_list, *g_audio_list, *g_checkbox_list], - ) - - btn_next_index.click( - b_next_index, - inputs=[ - index_slider, - batchsize_slider, - ], - outputs=[index_slider, *g_text_list, *g_audio_list, *g_checkbox_list], - ) - - btn_delete_audio.click( - b_delete_audio, - inputs=[*g_checkbox_list], - outputs=[index_slider, *g_text_list, *g_audio_list, *g_checkbox_list], - ) - - btn_merge_audio.click( - b_merge_audio, - inputs=[interval_slider, *g_checkbox_list], - outputs=[index_slider, *g_text_list, *g_audio_list, *g_checkbox_list], - ) - - btn_audio_split.click( - b_audio_split, - inputs=[splitpoint_slider, *g_checkbox_list], - outputs=[index_slider, *g_text_list, *g_audio_list, *g_checkbox_list], - ) - - btn_invert_selection.click(b_invert_selection, inputs=[*g_checkbox_list], outputs=[*g_checkbox_list]) - - btn_save_json.click(b_save_file) - - demo.load( - b_change_index, - inputs=[ - index_slider, - batchsize_slider, - ], - outputs=[*g_text_list, *g_audio_list, *g_checkbox_list], - ) - - demo.launch( - server_name="0.0.0.0", - inbrowser=True, - # quiet=True, - share=eval(args.is_share), - server_port=int(args.webui_port_subfix), - ) diff --git a/tools/uvr5/webui.py b/tools/uvr5/webui.py index f5f8d3f6..2ca642aa 100644 --- a/tools/uvr5/webui.py +++ b/tools/uvr5/webui.py @@ -1,23 +1,22 @@ import logging import os +import sys import traceback -import gradio as gr - -from tools.i18n.i18n import I18nAuto -from tools.my_utils import clean_path - -i18n = I18nAuto() - -logger = logging.getLogger(__name__) -import sys - import ffmpeg +import gradio as gr import torch from bsroformer import Roformer_Loader from mdxnet import MDXNetDereverb from vr import AudioPre, AudioPreDeEcho +from tools.i18n.i18n import I18nAuto +from tools.my_utils import clean_path, load_cudnn + +i18n = I18nAuto() + +logger = logging.getLogger(__name__) + weight_uvr5_root = "tools/uvr5/uvr5_weights" uvr5_names = [] for name in os.listdir(weight_uvr5_root): @@ -44,6 +43,7 @@ def html_center(text, label="p"): def uvr(model_name, inp_root, save_root_vocal, paths, save_root_ins, agg, format0): infos = [] + load_cudnn() try: inp_root = clean_path(inp_root) save_root_vocal = clean_path(save_root_vocal) @@ -220,5 +220,6 @@ app.queue().launch( # concurrency_count=511, max_size=1022 inbrowser=True, share=is_share, server_port=webui_port_uvr5, + show_api=False, # quiet=True, ) diff --git a/webui.py b/webui.py index 26e0fe66..c9bc241a 100644 --- a/webui.py +++ b/webui.py @@ -12,6 +12,7 @@ import platform import shutil import signal +import gradio as gr import psutil import torch import yaml @@ -58,6 +59,7 @@ for site_packages_root in site_packages_roots: traceback.print_exc() import shutil import subprocess +from multiprocessing import cpu_count from subprocess import Popen from tools.assets import css, js, top_html @@ -66,7 +68,6 @@ from tools.i18n.i18n import I18nAuto, scan_language_list language = sys.argv[-1] if sys.argv[-1] in scan_language_list() else "Auto" os.environ["language"] = language i18n = I18nAuto(language=language) -from multiprocessing import cpu_count from config import ( GPU_INDEX, @@ -86,14 +87,9 @@ from config import ( from tools import my_utils from tools.my_utils import check_details, check_for_existance -# os.environ['PYTORCH_ENABLE_MPS_FALLBACK'] = '1' # 当遇到mps不支持的步骤时使用cpu -try: - import gradio.analytics as analytics - - analytics.version_check = lambda: None -except: - ... -import gradio as gr +language = sys.argv[-1] if sys.argv[-1] in scan_language_list() else "Auto" +os.environ["language"] = language +i18n = I18nAuto(language=language) n_cpu = cpu_count() @@ -276,12 +272,7 @@ def change_label(path_list): if p_label is None: check_for_existance([path_list]) path_list = my_utils.clean_path(path_list) - cmd = '"%s" -s tools/subfix_webui.py --load_list "%s" --webui_port %s --is_share %s' % ( - python_exec, - path_list, - webui_port_subfix, - is_share, - ) + cmd = f'"{python_exec}" -s tools/subfix.py --i18n-lang {language} --port {webui_port_subfix} --share {is_share} "{path_list}"' yield ( process_info(process_name_subfix, "opened"), {"__type__": "update", "visible": False}, @@ -1975,5 +1966,6 @@ with gr.Blocks(title="GPT-SoVITS WebUI", analytics_enabled=False, js=js, css=css inbrowser=True, share=is_share, server_port=webui_port_main, + show_api=False, # quiet=True, )