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 21ae83a9..19c94a88 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 4484ba4e..ca44956f 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 86755446..216a2573 100644 --- a/docs/cn/Changelog_CN.md +++ b/docs/cn/Changelog_CN.md @@ -2,220 +2,219 @@ ## 20240121 -1-config添加is_share, 诸如colab等场景可以将此改为True, 来使得webui映射到公网 +1. config 添加 is_share, 诸如 colab 等场景可以将此改为 True, 来使得 webui 映射到公网 -2-WebUI添加英文系统英文翻译适配 +2. WebUI 添加英文系统英文翻译适配 -3-cmd-asr自动判断是否已自带damo模型, 如不在默认目录上将从modelscope自带下载 +3. cmd-asr 自动判断是否已自带 damo 模型, 如不在默认目录上将从 modelscope 自带下载 -4-[SoVITS训练报错ZeroDivisionError](https://github.com/RVC-Boss/GPT-SoVITS/issues/79) 尝试修复(过滤长度0的样本等) +4. SoVITS 训练报错 ZeroDivisionError [Issues#79](https://github.com/RVC-Boss/GPT-SoVITS/issues/79) 尝试修复(过滤长度 0 的样本等) -5-清理TEMP文件夹缓存音频等文件 +5. 清理 TEMP 文件夹缓存音频等文件 -6-大幅削弱合成音频包含参考音频结尾的问题 +6. 大幅削弱合成音频包含参考音频结尾的问题 ## 20240122 -1-修复过短输出文件返回重复参考音频的问题. +1. 修复过短输出文件返回重复参考音频的问题. -2-经测试, 英文日文训练原生支持(日文训练需要根目录不含非英文等特殊字符). +2. 经测试, 英文日文训练原生支持(日文训练需要根目录不含非英文等特殊字符). -3-音频路径检查.如果尝试读取输入错的路径报错路径不存在, 而非ffmpeg错误. +3. 音频路径检查.如果尝试读取输入错的路径报错路径不存在, 而非 ffmpeg 错误. ## 20240123 -1-解决hubert提取nan导致SoVITS/GPT训练报错ZeroDivisionError的问题 +1. 解决 hubert 提取 nan 导致 SoVITS/GPT 训练报错 ZeroDivisionError 的问题 -2-支持推理界面快速切换模型 +2. 支持推理界面快速切换模型 -3-优化模型文件排序逻辑 +3. 优化模型文件排序逻辑 -4-中文分词使用jieba_fast代替jieba +4. 中文分词使用 jieba_fast 代替 jieba ## 20240126 -1-支持输出文本中英混合、日英混合 +1. 支持输出文本中英混合、日英混合 -2-输出可选切分模式 +2. 输出可选切分模式 -3-修复uvr5读取到目录自动跳出的问题 +3. 修复 uvr5 读取到目录自动跳出的问题 -4-修复多个换行导致推理报错 +4. 修复多个换行导致推理报错 -5-去除推理界面大量冗余log +5. 去除推理界面大量冗余 log -6-支持mac训练推理 +6. 支持 mac 训练推理 -7-自动识别不支持半精度的卡强制单精度.cpu推理下强制单精度. +7. 自动识别不支持半精度的卡强制单精度. CPU 推理下强制单精度. ## 20240128 -1-修复数字转汉字念法问题 +1. 修复数字转汉字念法问题 -2-修复句首少量字容易吞字的问题 +2. 修复句首少量字容易吞字的问题 -3-通过限制排除不合理的参考音频长度 +3. 通过限制排除不合理的参考音频长度 -4-修复GPT训练不保存ckpt的问题 +4. 修复 GPT 训练不保存 ckpt 的问题 -5-完善Dockerfile的下载模型流程 +5. 完善 Dockerfile 的下载模型流程 ## 20240129 -1-16系等半精度训练有问题的显卡把训练配置改为单精度训练 +1. 16 系等半精度训练有问题的显卡把训练配置改为单精度训练 -2-测试更新可用的colab版本 - -3-修复git clone modelscope funasr仓库+老版本funasr导致接口不对齐报错的问题 +2. 测试更新可用的 Colab 版本 +3. 修复 git clone modelscope FunASR 仓库 + 老版本 FunASR 导致接口不对齐报错的问题 ## 20240130 -1-所有涉及路径的地方双引号自动去除,小白复制路径带双引号不会报错 +1. 所有涉及路径的地方双引号自动去除,小白复制路径带双引号不会报错 -2-修复中英文标点切割问题和句首句尾补标点的问题 +2. 修复中英文标点切割问题和句首句尾补标点的问题 -3-增加按标点符号切分 +3. 增加按标点符号切分 ## 20240201 -1-修复uvr5读取格式错误导致分离失败的问题 +1. 修复 UVR5 读取格式错误导致分离失败的问题 -2-支持中日英混合多种文本自动切分识别语种 +2. 支持中日英混合多种文本自动切分识别语种 ## 20240202 -1-修复asr路径尾缀带/保存文件名报错 +1. 修复 ASR 路径尾缀带/保存文件名报错 -2-引入paddlespeech的Normalizer https://github.com/RVC-Boss/GPT-SoVITS/pull/377 修复一些问题, 例如: xx.xx%(带百分号类), 元/吨 会读成 元吨 而不是元每吨,下划线不再会报错 +2. 引入 paddlespeech 的 Normalizer [PR#377](https://github.com/RVC-Boss/GPT-SoVITS/pull/377) 修复一些问题, 例如: xx.xx%(带百分号类), 元/吨 会读成 元吨 而不是元每吨,下划线不再会报错 ## 20240207 -1-修正语种传参混乱导致中文推理效果下降 https://github.com/RVC-Boss/GPT-SoVITS/issues/391 +1. 修正语种传参混乱导致中文推理效果下降 [Issues#391](https://github.com/RVC-Boss/GPT-SoVITS/issues/391) -2-uvr5适配高版本librosa https://github.com/RVC-Boss/GPT-SoVITS/pull/403 +2. UVR5 适配高版本 librosa [PR#403](https://github.com/RVC-Boss/GPT-SoVITS/pull/403) -3-[修复uvr5 inf everywhere报错的问题(is_half传参未转换bool导致恒定半精度推理, 16系显卡会inf)](https://github.com/RVC-Boss/GPT-SoVITS/commit/14a285109a521679f8846589c22da8f656a46ad8) +3. 修复 UVR5 inf everywhere 报错的问题(is_half 传参未转换 bool 导致恒定半精度推理, 16 系显卡会 inf) [Commit#14a285](https://github.com/RVC-Boss/GPT-SoVITS/commit/14a285109a521679f8846589c22da8f656a46ad8) -4-优化英文文本前端 +4. 优化英文文本前端 -5-修复gradio依赖 +5. 修复 gradio 依赖 -6-支持三连根目录留空自动读取.list全路径 +6. 支持三连根目录留空自动读取.list 全路径 -7-集成faster whisper ASR日文英文 +7. 集成 faster whisper ASR 日文英文 ## 20240208 -1-GPT训练卡死 (win10 1909) 和https://github.com/RVC-Boss/GPT-SoVITS/issues/232 (系统语言繁体) GPT训练报错, [尝试修复](https://github.com/RVC-Boss/GPT-SoVITS/commit/59f35adad85815df27e9c6b33d420f5ebfd8376b). +1. GPT 训练卡死 (win10 1909) 和 [Issues#232](https://github.com/RVC-Boss/GPT-SoVITS/issues/232) (系统语言繁体) GPT 训练报错, 尝试修复 [Commit#59f35a](https://github.com/RVC-Boss/GPT-SoVITS/commit/59f35adad85815df27e9c6b33d420f5ebfd8376b). ## 20240212 -1-faster whisper和funasr逻辑优化.faster whisper转镜像站下载, 规避huggingface连不上的问题. +1. Faster-Whisper 和 FunASR 逻辑优化.faster whisper 转镜像站下载, 规避 huggingface 连不上的问题. -2-DPO Loss实验性训练选项开启, 通过构造负样本训练缓解GPT重复漏字问题.推理界面公开几个推理参数. https://github.com/RVC-Boss/GPT-SoVITS/pull/457 +2. DPO Loss 实验性训练选项开启, 通过构造负样本训练缓解 GPT 重复漏字问题.推理界面公开几个推理参数. [PR#457](https://github.com/RVC-Boss/GPT-SoVITS/pull/457) ## 20240214 -1-训练支持中文实验名 (原来会报错) +1. 训练支持中文实验名 (原来会报错) -2-DPO训练改为可勾选选项而非必须.如勾选batch size自动减半.修复推理界面新参数不传参的问题. +2. DPO 训练改为可勾选选项而非必须.如勾选 batch size 自动减半.修复推理界面新参数不传参的问题. ## 20240216 -1-支持无参考文本输入 +1. 支持无参考文本输入 -2-修复中文文本前端bug https://github.com/RVC-Boss/GPT-SoVITS/issues/475 +2. 修复中文文本前端 bug [Issues#475](https://github.com/RVC-Boss/GPT-SoVITS/issues/475) ## 20240221 -1-数据处理添加语音降噪选项 (降噪为只剩16k采样率, 除非底噪很大先不急着用哦). +1. 数据处理添加语音降噪选项 (降噪为只剩 16k 采样率, 除非底噪很大先不急着用哦). -2-中文日文前端处理优化 https://github.com/RVC-Boss/GPT-SoVITS/pull/559 https://github.com/RVC-Boss/GPT-SoVITS/pull/556 https://github.com/RVC-Boss/GPT-SoVITS/pull/532 https://github.com/RVC-Boss/GPT-SoVITS/pull/507 https://github.com/RVC-Boss/GPT-SoVITS/pull/509 +2. 中文日文前端处理优化 [PR#507](https://github.com/RVC-Boss/GPT-SoVITS/pull/507) [PR#509](https://github.com/RVC-Boss/GPT-SoVITS/pull/509) [PR#532](https://github.com/RVC-Boss/GPT-SoVITS/pull/532) [PR#556](https://github.com/RVC-Boss/GPT-SoVITS/pull/556) [PR#559](https://github.com/RVC-Boss/GPT-SoVITS/pull/559) -3-mac CPU推理更快因此把推理设备从mps改到CPU +3. Mac CPU 推理更快因此把推理设备从 MPS 改到 CPU -4-colab修复不开启公网url +4. Colab 修复不开启公网 URL ## 20240306 -1-推理加速50% (RTX3090+pytorch2.2.1+cu11.8+win10+py39 tested) https://github.com/RVC-Boss/GPT-SoVITS/pull/672 +1. 推理加速 50% (RTX3090+pytorch2.2.1+cu11.8+win10+py39 tested) [PR#672](https://github.com/RVC-Boss/GPT-SoVITS/pull/672) -2-如果用faster whisper非中文ASR不再需要先下中文funasr模型 +2. 如果用 Faster-Whisper 非中文 ASR 不再需要先下中文 FunASR 模型 -3-修复uvr5去混响模型 是否混响 反的 https://github.com/RVC-Boss/GPT-SoVITS/pull/610 +3. 修复 UVR5 去混响模型 是否混响 反的 [PR#610](https://github.com/RVC-Boss/GPT-SoVITS/pull/610) -4-faster whisper如果无cuda可用自动cpu推理 https://github.com/RVC-Boss/GPT-SoVITS/pull/675 +4. Faster-Whisper 如果无 CUDA 可用自动 CPU 推理 [PR#675](https://github.com/RVC-Boss/GPT-SoVITS/pull/675) -5-修改is_half的判断使在Mac上能正常CPU推理 https://github.com/RVC-Boss/GPT-SoVITS/pull/573 +5. 修改 is_half 的判断使在 Mac 上能正常 CPU 推理 [PR#573](https://github.com/RVC-Boss/GPT-SoVITS/pull/573) ## 202403/202404/202405 -2个重点 +- 2 个重点 -1-修复sovits训练未冻结vq的问题 (可能造成效果下降) +1. 修复 sovits 训练未冻结 vq 的问题 (可能造成效果下降) -2-增加一个快速推理分支 +2. 增加一个快速推理分支 -以下都是小修补 +- 以下都是小修补 -1-修复无参考文本模式问题 +1. 修复无参考文本模式问题 -2-优化中英文文本前端 +2. 优化中英文文本前端 -3-api格式优化 +3. API 格式优化 -4-cmd格式问题修复 +4. cmd 格式问题修复 -5-训练数据处理阶段不支持的语言提示报错 +5. 训练数据处理阶段不支持的语言提示报错 -6-nan自动转fp32阶段的hubert提取bug修复 +6. NaN 自动转 FP32 阶段的 HuBERT 提取 bug 修复 ## 20240610 -小问题修复: +- 小问题修复 -1-完善纯标点、多标点文本输入的判断逻辑 https://github.com/RVC-Boss/GPT-SoVITS/pull/1168 https://github.com/RVC-Boss/GPT-SoVITS/pull/1169 +1. 完善纯标点、多标点文本输入的判断逻辑 [PR#1168](https://github.com/RVC-Boss/GPT-SoVITS/pull/1168) [PR#1169](https://github.com/RVC-Boss/GPT-SoVITS/pull/1169) -2-uvr5中的mdxnet去混响cmd格式修复, 兼容路径带空格 [#501a74a](https://github.com/RVC-Boss/GPT-SoVITS/commit/501a74ae96789a26b48932babed5eb4e9483a232) +2. UVR5 中的 MDX-Net 去混响 cmd 格式修复, 兼容路径带空格 [#501a74a](https://github.com/RVC-Boss/GPT-SoVITS/commit/501a74ae96789a26b48932babed5eb4e9483a232) -3-s2训练进度条逻辑修复 https://github.com/RVC-Boss/GPT-SoVITS/pull/1159 +3- S2 训练进度条逻辑修复 [PR#1159](https://github.com/RVC-Boss/GPT-SoVITS/pull/1159) -大问题修复: +- 大问题修复 -4-修复了webui的GPT中文微调没读到bert导致和推理不一致, 训练太多可能效果还会变差的问题.如果大量数据微调的建议重新微调模型得到质量优化 [#99f09c8](https://github.com/RVC-Boss/GPT-SoVITS/commit/99f09c8bdc155c1f4272b511940717705509582a) +1. 修复了 WebUI 的 GPT 中文微调没读到 BERT 导致和推理不一致, 训练太多可能效果还会变差的问题.如果大量数据微调的建议重新微调模型得到质量优化 [Commit#99f09c8](https://github.com/RVC-Boss/GPT-SoVITS/commit/99f09c8bdc155c1f4272b511940717705509582a) ## 20240706 -小问题修复: +- 小问题修复 -1-[修正CPU推理默认bs小数](https://github.com/RVC-Boss/GPT-SoVITS/commit/db50670598f0236613eefa6f2d5a23a271d82041) +1. 修正 CPU 推理默认 batch size 小数 [Commit#db5067](https://github.com/RVC-Boss/GPT-SoVITS/commit/db50670598f0236613eefa6f2d5a23a271d82041) -2-修复降噪、asr中途遇到异常跳出所有需处理的音频文件的问题 https://github.com/RVC-Boss/GPT-SoVITS/pull/1258 https://github.com/RVC-Boss/GPT-SoVITS/pull/1265 https://github.com/RVC-Boss/GPT-SoVITS/pull/1267 +2. 修复降噪, ASR 中途遇到异常跳出所有需处理的音频文件的问题 [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) -3-修复按标点符号切分时小数会被切分 https://github.com/RVC-Boss/GPT-SoVITS/pull/1253 +3. 修复按标点符号切分时小数会被切分 [PR#1253](https://github.com/RVC-Boss/GPT-SoVITS/pull/1253) -4-[多卡训练多进程保存逻辑修复](https://github.com/RVC-Boss/GPT-SoVITS/commit/a208698e775155efc95b187b746d153d0f2847ca) +4. 多卡训练多进程保存逻辑修复 [Commit#a20869](https://github.com/RVC-Boss/GPT-SoVITS/commit/a208698e775155efc95b187b746d153d0f2847ca) -5-移除冗余my_utils https://github.com/RVC-Boss/GPT-SoVITS/pull/1251 +5. 移除冗余 my_utils [PR#1251](https://github.com/RVC-Boss/GPT-SoVITS/pull/1251) -重点: +- 重点 -6-倍速推理代码经过验证后推理效果和base完全一致, 合并进main.使用的代码: https://github.com/RVC-Boss/GPT-SoVITS/pull/672 .支持无参考文本模式也倍速. +1. 倍速推理代码经过验证后推理效果和 base 完全一致, 合并进 main.使用的代码. [PR#572](https://github.com/RVC-Boss/GPT-SoVITS/pull/672). 支持无参考文本模式也倍速. 后面会逐渐验证快速推理分支的推理改动的一致性 ## 20240727 -1-清理冗余i18n代码 https://github.com/RVC-Boss/GPT-SoVITS/pull/1298 +1. 清理冗余 i18n 代码 [PR#1298](https://github.com/RVC-Boss/GPT-SoVITS/pull/1298) -2-修复用户打文件及路径在结尾添加/会导致命令行报错的问题 https://github.com/RVC-Boss/GPT-SoVITS/pull/1299 +2. 修复用户打文件及路径在结尾添加/会导致命令行报错的问题 [PR#1299](https://github.com/RVC-Boss/GPT-SoVITS/pull/1299) -3-修复GPT训练的step计算逻辑 https://github.com/RVC-Boss/GPT-SoVITS/pull/756 +3. 修复 GPT 训练的 step 计算逻辑 [PR#756](https://github.com/RVC-Boss/GPT-SoVITS/pull/756) -重点: +- 重点 -4-[支持合成语速调节.支持冻结随机性只调节语速, ](https://github.com/RVC-Boss/GPT-SoVITS/commit/9588a3c52d9ebdb20b3c5d74f647d12e7c1171c2)并将其更新到api.py上https://github.com/RVC-Boss/GPT-SoVITS/pull/1340 +1. 支持合成语速调节.支持冻结随机性只调节语速 [Commit#9588a3](https://github.com/RVC-Boss/GPT-SoVITS/commit/9588a3c52d9ebdb20b3c5d74f647d12e7c1171c2) 并将其更新到 api.py 上 [PR#1240](https://github.com/RVC-Boss/GPT-SoVITS/pull/1340) - 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 人声伴奏分离模型支持. - 类型: 新功能 @@ -264,7 +263,7 @@ ## 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 模型, 需要 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): 更新项目多语言文档. - 类型: 文档 @@ -297,7 +296,7 @@ - 2025.02.28 [PR#2123](https://github.com/RVC-Boss/GPT-SoVITS/pull/2123): 更新项目多语言文档 - 类型: 文档 - 提交: StaryLan -- 2025.02.28 [PR#2122](https://github.com/RVC-Boss/GPT-SoVITS/pull/2122): 对于模型无法判断的CJK短字符采用规则判断. +- 2025.02.28 [PR#2122](https://github.com/RVC-Boss/GPT-SoVITS/pull/2122): 对于模型无法判断的 CJK 短字符采用规则判断. - 类型: 修复 - 提交: KamioRinn - 关联: [Issue#2116](https://github.com/RVC-Boss/GPT-SoVITS/issues/2116) @@ -317,6 +316,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 @@ -383,14 +383,13 @@ - 提交: RVC-Boss ## 202506 (V2Pro 系列) + - 2025.06.04 [Commit#b7c0c5ca](https://github.com/RVC-Boss/GPT-SoVITS/commit/b7c0c5ca878bcdd419fd86bf80dba431a6653356)~[Commit#298ebb03](https://github.com/RVC-Boss/GPT-SoVITS/commit/298ebb03c5a719388527ae6a586c7ea960344e70): **新增 GPT-SoVITS V2Pro 系列模型**. - 类型: 新功能 - 提交: RVC-Boss -- 2025.06.05 https://github.com/RVC-Boss/GPT-SoVITS/pull/2426: config/inference_webui初始化bug修复. +- 2025.06.05 [PR#2426](https://github.com/RVC-Boss/GPT-SoVITS/pull/2426): config/inference_webui 初始化 bug 修复. - 类型: 修复 - 提交: SapphireLab -- 2025.06.05 https://github.com/RVC-Boss/GPT-SoVITS/pull/2427: 优化精度自动检测逻辑;给webui前端界面模块增加可收缩式支持. +- 2025.06.05 [PR#2427](https://github.com/RVC-Boss/GPT-SoVITS/pull/2427): 优化精度自动检测逻辑;给 webui 前端界面模块增加可收缩式支持. - 类型: 新功能 - 提交: XXXXRT666 - - diff --git a/docs/cn/README.md b/docs/cn/README.md index 832e75f4..b611be0e 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 更新说明 @@ -416,5 +414,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 31c6ab66..80a0b21c 100644 --- a/docs/en/Changelog_EN.md +++ b/docs/en/Changelog_EN.md @@ -108,7 +108,7 @@ ## 202403/202404/202405 -### Minor Fixes: +### Minor Fixes 1. Fixed issues with the no-reference text mode. 2. Optimized the Chinese and English text frontend. @@ -117,27 +117,27 @@ 5. Added error prompts for unsupported languages during training data processing. 6. Fixed the bug in Hubert extraction. -### Major Fixes: +### Major Fixes 1. Fixed the issue of SoVITS training without freezing VQ (which could cause quality degradation). 2. Added a quick inference branch. ## 20240610 -### Minor Fixes: +### Minor Fixes 1. [PR 1168](https://github.com/RVC-Boss/GPT-SoVITS/pull/1168) & [PR 1169](https://github.com/RVC-Boss/GPT-SoVITS/pull/1169) improved the logic for pure punctuation and multi-punctuation text input. 2. [Commit 501a74a](https://github.com/RVC-Boss/GPT-SoVITS/commit/501a74ae96789a26b48932babed5eb4e9483a232) fixed CMD format for MDXNet de-reverb in UVR5, supporting paths with spaces. 3. [PR 1159](https://github.com/RVC-Boss/GPT-SoVITS/pull/1159) fixed progress bar logic for SoVITS training in `s2_train.py`. -### Major Fixes: +### Major Fixes -4. [Commit 99f09c8](https://github.com/RVC-Boss/GPT-SoVITS/commit/99f09c8bdc155c1f4272b511940717705509582a) 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. +1. [Commit 99f09c8](https://github.com/RVC-Boss/GPT-SoVITS/commit/99f09c8bdc155c1f4272b511940717705509582a) 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.** ## 20240706 -### Minor Fixes: +### Minor Fixes 1. [Commit 1250670](https://github.com/RVC-Boss/GPT-SoVITS/commit/db50670598f0236613eefa6f2d5a23a271d82041) fixed default batch size decimal issue in CPU inference. 2. [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) fixed issues where denoising or ASR encountering exceptions would exit all pending audio files. @@ -145,24 +145,24 @@ 4. [Commit a208698](https://github.com/RVC-Boss/GPT-SoVITS/commit/a208698e775155efc95b187b746d153d0f2847ca) fixed multi-process save logic for multi-GPU training. 5. [PR 1251](https://github.com/RVC-Boss/GPT-SoVITS/pull/1251) removed redundant `my_utils`. -### Major Fixes: +### Major Fixes -6. The accelerated inference code from [PR 672](https://github.com/RVC-Boss/GPT-SoVITS/pull/672) has been validated and merged into the main branch, ensuring consistent inference effects with the base. +1. The accelerated inference code from [PR 672](https://github.com/RVC-Boss/GPT-SoVITS/pull/672) has been validated and merged into the main branch, ensuring consistent inference effects with the base. It also supports accelerated inference in no-reference text mode. **Future updates will continue to verify the consistency of changes in the `fast_inference` branch**. ## 20240727 -### Minor Fixes: +### Minor Fixes 1. [PR 1298](https://github.com/RVC-Boss/GPT-SoVITS/pull/1298) cleaned up redundant i18n code. 2. [PR 1299](https://github.com/RVC-Boss/GPT-SoVITS/pull/1299) fixed issues where trailing slashes in user file paths caused command line errors. 3. [PR 756](https://github.com/RVC-Boss/GPT-SoVITS/pull/756) fixed the step calculation logic in GPT training. -### Major Fixes: +### Major Fixes -4. [Commit 9588a3c](https://github.com/RVC-Boss/GPT-SoVITS/commit/9588a3c52d9ebdb20b3c5d74f647d12e7c1171c2) supported speech rate adjustment for synthesis. +1. [Commit 9588a3c](https://github.com/RVC-Boss/GPT-SoVITS/commit/9588a3c52d9ebdb20b3c5d74f647d12e7c1171c2) supported speech rate adjustment for synthesis. Enabled freezing randomness while only adjusting the speech rate. - 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): Added support for the BS-RoFormer vocal accompaniment separation model. @@ -212,7 +212,7 @@ ## 202502 (V3 Version) - 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): **Added GPT-SoVITS V3 model, which requires 14GB VRAM for fine-tuning.** - - Type: New 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: New Feature (Refer to [Wiki]()) - Contributor: RVC-Boss - 2025.02.12 [PR#2032](https://github.com/RVC-Boss/GPT-SoVITS/pull/2032): Updated multilingual project documentation. - Type: Documentation @@ -267,9 +267,6 @@ - 2025.03.31 [PR#2241](https://github.com/RVC-Boss/GPT-SoVITS/pull/2241): **Enabled parallel inference for SoVITS v3.** - Type: New Feature - Contributor: ChasonJiang - -- Fixed other minor bugs. - - Integrated package fixes for ONNX runtime GPU inference support: - Type: Fix - Details: @@ -330,4 +327,4 @@ - Type: Fix - Contributor: RVC-Boss -**Preview: Major optimization update based on V2 version coming after the Dragon Boat Festival!** \ No newline at end of file +**Preview: Major optimization update based on V2 version coming after the Dragon Boat Festival!** diff --git a/docs/ja/Changelog_JA.md b/docs/ja/Changelog_JA.md index d4771159..a2ebdd71 100644 --- a/docs/ja/Changelog_JA.md +++ b/docs/ja/Changelog_JA.md @@ -59,14 +59,14 @@ ## 20240202 -1. ASRパスが `/` で終わることによるファイル名保存エラーの問題を修正しました. +1. ASR パスが `/` で終わることによるファイル名保存エラーの問題を修正しました. 2. [PR 377](https://github.com/RVC-Boss/GPT-SoVITS/pull/377) で PaddleSpeech の Normalizer を導入し、"xx.xx%" (パーセント記号) の読み取りや"元/吨"が"元吨"ではなく"元每吨"と読まれる問題、アンダースコアエラーを修正しました. ## 20240207 1. [Issue 391](https://github.com/RVC-Boss/GPT-SoVITS/issues/391) で報告された中国語推論品質の低下を引き起こした言語パラメータの混乱を修正しました. 2. [PR 403](https://github.com/RVC-Boss/GPT-SoVITS/pull/403) で UVR5 を librosa のより高いバージョンに適応させました. -3. [Commit 14a2851](https://github.com/RVC-Boss/GPT-SoVITS/commit/14a285109a521679f8846589c22da8f656a46ad8) で、`is_half` パラメータがブール値に変換されず、常に半精度推論が行われ、16 シリーズの GPU で `inf` が発生する UVR5 inf everywhereエラーを修正しました. +3. [Commit 14a2851](https://github.com/RVC-Boss/GPT-SoVITS/commit/14a285109a521679f8846589c22da8f656a46ad8) で、`is_half` パラメータがブール値に変換されず、常に半精度推論が行われ、16 シリーズの GPU で `inf` が発生する UVR5 inf everywhere エラーを修正しました. 4. 英語テキストフロントエンドを最適化しました. 5. Gradio の依存関係を修正しました. 6. データセット準備中にルートディレクトリが空白の場合、`.list` フルパスの自動読み取りをサポートしました. @@ -79,12 +79,12 @@ ## 20240212 1. Faster Whisper と FunASR のロジックを最適化し、Faster Whisper をミラーダウンロードに切り替えて Hugging Face の接続問題を回避しました. -2. [PR 457](https://github.com/RVC-Boss/GPT-SoVITS/pull/457) で、GPT の繰り返しと文字欠落を軽減するために、トレーニング中に負のサンプルを構築する実験的なDPO Lossトレーニングオプションを有効にし、いくつかの推論パラメータを推論WebUIで利用可能にしました. +2. [PR 457](https://github.com/RVC-Boss/GPT-SoVITS/pull/457) で、GPT の繰り返しと文字欠落を軽減するために、トレーニング中に負のサンプルを構築する実験的な DPO Loss トレーニングオプションを有効にし、いくつかの推論パラメータを推論 WebUI で利用可能にしました. ## 20240214 1. トレーニングで中国語の実験名をサポート (以前はエラーが発生していました). -2. DPOトレーニングを必須ではなくオプション機能に変更.選択された場合、バッチサイズは自動的に半分になります.推論 WebUI で新しいパラメータが渡されない問題を修正しました. +2. DPO トレーニングを必須ではなくオプション機能に変更.選択された場合、バッチサイズは自動的に半分になります.推論 WebUI で新しいパラメータが渡されない問題を修正しました. ## 20240216 @@ -93,21 +93,22 @@ ## 20240221 -1. データ処理中のノイズ低減オプションを追加 (ノイズ低減は16kHzサンプリングレートのみを残します;背景ノイズが大きい場合にのみ使用してください). +1. データ処理中のノイズ低減オプションを追加 (ノイズ低減は 16kHz サンプリングレートのみを残します;背景ノイズが大きい場合にのみ使用してください). 2. [PR 559](https://github.com/RVC-Boss/GPT-SoVITS/pull/559), [PR 556](https://github.com/RVC-Boss/GPT-SoVITS/pull/556), [PR 532](https://github.com/RVC-Boss/GPT-SoVITS/pull/532), [PR 507](https://github.com/RVC-Boss/GPT-SoVITS/pull/507), [PR 509](https://github.com/RVC-Boss/GPT-SoVITS/pull/509) で中国語と日本語のフロントエンド処理を最適化しました. 3. Mac CPU 推論を MPS ではなく CPU を使用するように切り替え、パフォーマンスを向上させました. 4. Colab のパブリック URL の問題を修正しました. + ## 20240306 -1. [PR 672](https://github.com/RVC-Boss/GPT-SoVITS/pull/672) で推論速度を50%向上させました (RTX3090 + PyTorch 2.2.1 + CU11.8 + Win10 + Py39 でテスト). -2. Faster Whisper非中国語ASRを使用する際、最初に中国語FunASRモデルをダウンロードする必要がなくなりました. +1. [PR 672](https://github.com/RVC-Boss/GPT-SoVITS/pull/672) で推論速度を 50%向上させました (RTX3090 + PyTorch 2.2.1 + CU11.8 + Win10 + Py39 でテスト). +2. Faster Whisper 非中国語 ASR を使用する際、最初に中国語 FunASR モデルをダウンロードする必要がなくなりました. 3. [PR 610](https://github.com/RVC-Boss/GPT-SoVITS/pull/610) で UVR5 残響除去モデルの設定が逆になっていた問題を修正しました. 4. [PR 675](https://github.com/RVC-Boss/GPT-SoVITS/pull/675) で、CUDA が利用できない場合に Faster Whisper の自動 CPU 推論を有効にしました. -5. [PR 573](https://github.com/RVC-Boss/GPT-SoVITS/pull/573) で、Mac での適切なCPU推論を確保するために `is_half` チェックを修正しました. +5. [PR 573](https://github.com/RVC-Boss/GPT-SoVITS/pull/573) で、Mac での適切な CPU 推論を確保するために `is_half` チェックを修正しました. ## 202403/202404/202405 -### マイナー修正: +### マイナー修正 1. 参照テキストなしモードの問題を修正しました. 2. 中国語と英語のテキストフロントエンドを最適化しました. @@ -116,55 +117,55 @@ 5. トレーニングデータ処理中のサポートされていない言語に対するエラープロンプトを追加しました. 6. Hubert 抽出のバグを修正しました. -### メジャー修正: +### メジャー修正 1. SoVITS トレーニングで VQ を凍結せずに品質低下を引き起こす問題を修正しました. 2. クイック推論ブランチを追加しました. ## 20240610 -### マイナー修正: +### マイナー修正 1. [PR 1168](https://github.com/RVC-Boss/GPT-SoVITS/pull/1168) & [PR 1169](https://github.com/RVC-Boss/GPT-SoVITS/pull/1169)で、純粋な句読点および複数の句読点を含むテキスト入力のロジックを改善しました. 2. [Commit 501a74a](https://github.com/RVC-Boss/GPT-SoVITS/commit/501a74ae96789a26b48932babed5eb4e9483a232)で、UVR5 の MDXNet デリバブをサポートする CMD フォーマットを修正し、スペースを含むパスをサポートしました. 3. [PR 1159](https://github.com/RVC-Boss/GPT-SoVITS/pull/1159)で、`s2_train.py` の SoVITS トレーニングのプログレスバーロジックを修正しました. -### メジャー修正: +### メジャー修正 -4. [Commit 99f09c8](https://github.com/RVC-Boss/GPT-SoVITS/commit/99f09c8bdc155c1f4272b511940717705509582a) で、WebUI の GPT ファインチューニングが中国語入力テキストの BERT 特徴を読み取らず、推論との不一致や品質低下の可能性を修正しました. +1. [Commit 99f09c8](https://github.com/RVC-Boss/GPT-SoVITS/commit/99f09c8bdc155c1f4272b511940717705509582a) で、WebUI の GPT ファインチューニングが中国語入力テキストの BERT 特徴を読み取らず、推論との不一致や品質低下の可能性を修正しました. **注意: 以前に大量のデータでファインチューニングを行った場合、品質向上のためにモデルを再調整することをお勧めします.** ## 20240706 -### マイナー修正: +### マイナー修正 1. [Commit 1250670](https://github.com/RVC-Boss/GPT-SoVITS/commit/db50670598f0236613eefa6f2d5a23a271d82041) で、CPU 推論のデフォルトバッチサイズの小数点問題を修正しました. -2. [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が例外に遭遇した場合に、すべての保留中のオーディオファイルが終了する問題を修正しました. +2. [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 が例外に遭遇した場合に、すべての保留中のオーディオファイルが終了する問題を修正しました. 3. [PR 1253](https://github.com/RVC-Boss/GPT-SoVITS/pull/1253) で、句読点で分割する際の小数点分割の問題を修正しました. -4. [Commit a208698](https://github.com/RVC-Boss/GPT-SoVITS/commit/a208698e775155efc95b187b746d153d0f2847ca) で、マルチGPUトレーニングのマルチプロセス保存ロジックを修正しました. +4. [Commit a208698](https://github.com/RVC-Boss/GPT-SoVITS/commit/a208698e775155efc95b187b746d153d0f2847ca) で、マルチ GPU トレーニングのマルチプロセス保存ロジックを修正しました. 5. [PR 1251](https://github.com/RVC-Boss/GPT-SoVITS/pull/1251) で、不要な `my_utils` を削除しました. -### メジャー修正: +### メジャー修正 -6. [PR 672](https://github.com/RVC-Boss/GPT-SoVITS/pull/672) の加速推論コードが検証され、メインブランチにマージされ、ベースとの推論効果の一貫性が確保されました. +1. [PR 672](https://github.com/RVC-Boss/GPT-SoVITS/pull/672) の加速推論コードが検証され、メインブランチにマージされ、ベースとの推論効果の一貫性が確保されました. また、参照テキストなしモードでの加速推論もサポートしています. **今後の更新では、`fast_inference`ブランチの変更の一貫性を継続的に検証します**. ## 20240727 -### マイナー修正: +### マイナー修正 1. [PR 1298](https://github.com/RVC-Boss/GPT-SoVITS/pull/1298) で、不要な i18n コードをクリーンアップしました. 2. [PR 1299](https://github.com/RVC-Boss/GPT-SoVITS/pull/1299) で、ユーザーファイルパスの末尾のスラッシュがコマンドラインエラーを引き起こす問題を修正しました. 3. [PR 756](https://github.com/RVC-Boss/GPT-SoVITS/pull/756) で、GPT トレーニングのステップ計算ロジックを修正しました. -### メジャー修正: +### メジャー修正 -4. [Commit 9588a3c](https://github.com/RVC-Boss/GPT-SoVITS/commit/9588a3c52d9ebdb20b3c5d74f647d12e7c1171c2) で、合成のスピーチレート調整をサポートしました. +1. [Commit 9588a3c](https://github.com/RVC-Boss/GPT-SoVITS/commit/9588a3c52d9ebdb20b3c5d74f647d12e7c1171c2) で、合成のスピーチレート調整をサポートしました. スピーチレートのみを調整しながらランダム性を固定できるようになりました. -- 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ボーカル・伴奏分離モデルのサポートを追加。 +- 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 ボーカル・伴奏分離モデルのサポートを追加。 - タイプ: 新機能 - 貢献者: KamioRinn - 2024.07.27 [PR#1351](https://github.com/RVC-Boss/GPT-SoVITS/pull/1351): 中国語テキストフロントエンドの改善。 @@ -173,45 +174,45 @@ ## 202408 (V2 バージョン) -- 2024.08.01 [PR#1355](https://github.com/RVC-Boss/GPT-SoVITS/pull/1355): WebUIでファイル処理時にパスを自動入力するように変更。 +- 2024.08.01 [PR#1355](https://github.com/RVC-Boss/GPT-SoVITS/pull/1355): WebUI でファイル処理時にパスを自動入力するように変更。 - タイプ: 雑務 - 貢献者: XXXXRT666 -- 2024.08.01 [Commit#e62e9653](https://github.com/RVC-Boss/GPT-SoVITS/commit/e62e965323a60a76a025bcaa45268c1ddcbcf05c): BS-RoformerのFP16推論サポートを有効化。 +- 2024.08.01 [Commit#e62e9653](https://github.com/RVC-Boss/GPT-SoVITS/commit/e62e965323a60a76a025bcaa45268c1ddcbcf05c): 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インデックスを処理するユーザーフレンドリーなロジックを追加。 +- 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 インデックスを処理するユーザーフレンドリーなロジックを追加。 - タイプ: 雑務 - 貢献者: 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モデルを追加。** +- 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 モデルを追加。** - タイプ: 新機能 - 貢献者: RVC-Boss -- 2024.08.03 [Commit#8a101474](https://github.com/RVC-Boss/GPT-SoVITS/commit/8a101474b5a4f913b4c94fca2e3ca87d0771bae3): FunASRを使用して広東語ASRをサポート。 +- 2024.08.03 [Commit#8a101474](https://github.com/RVC-Boss/GPT-SoVITS/commit/8a101474b5a4f913b4c94fca2e3ca87d0771bae3): 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とタイミングロジックを最適化。 +- 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 とタイミングロジックを最適化。 - タイプ: 雑務 - 貢献者: 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のみ)。 +- 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 のみ)。 - タイプ: 修正、新機能 - 貢献者: KamioRinn、RVC-Boss -- 2024.08.13 [PR#1422](https://github.com/RVC-Boss/GPT-SoVITS/pull/1422): 参照音声が1つしかアップロードできないバグを修正。欠損ファイルがある場合に警告ポップアップを表示するデータセット検証を追加。 +- 2024.08.13 [PR#1422](https://github.com/RVC-Boss/GPT-SoVITS/pull/1422): 参照音声が 1 つしかアップロードできないバグを修正。欠損ファイルがある場合に警告ポップアップを表示するデータセット検証を追加。 - タイプ: 修正、雑務 - 貢献者: XXXXRT666 -- 2024.08.20 [Issue#1508](https://github.com/RVC-Boss/GPT-SoVITS/issues/1508): 上流のLangSegmentライブラリがSSMLタグを使用した数字、電話番号、日付、時刻の最適化をサポート。 +- 2024.08.20 [Issue#1508](https://github.com/RVC-Boss/GPT-SoVITS/issues/1508): 上流の LangSegment ライブラリが SSML タグを使用した数字、電話番号、日付、時刻の最適化をサポート。 - タイプ: 新機能 - 貢献者: juntaosun -- 2024.08.20 [PR#1503](https://github.com/RVC-Boss/GPT-SoVITS/pull/1503): APIを修正・最適化。 +- 2024.08.20 [PR#1503](https://github.com/RVC-Boss/GPT-SoVITS/pull/1503): 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))参照) +- 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]()参照) - 貢献者: RVC-Boss - 2025.02.12 [PR#2032](https://github.com/RVC-Boss/GPT-SoVITS/pull/2032): 多言語プロジェクトドキュメントを更新。 - タイプ: ドキュメント @@ -222,36 +223,36 @@ - 2025.02.12 [PR#2010](https://github.com/RVC-Boss/GPT-SoVITS/pull/2010): アテンション計算ロジックを最適化。 - タイプ: パフォーマンス最適化 - 貢献者: wzy3650 -- 2025.02.12 [PR#2040](https://github.com/RVC-Boss/GPT-SoVITS/pull/2040): ファインチューニング用に勾配チェックポイントサポートを追加。12GB VRAMが必要。 +- 2025.02.12 [PR#2040](https://github.com/RVC-Boss/GPT-SoVITS/pull/2040): ファインチューニング用に勾配チェックポイントサポートを追加。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): 新しい言語セグメンテーションツールに切り替え、多言語混合テキストの分割戦略を改善。数字と英語の処理ロジックを最適化。 - タイプ: 新機能 - 貢献者: 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メモリが必要。** +- 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 メモリが必要。** - タイプ: 新機能 - 貢献者: RVC-Boss -- 2025.02.23 [PR#2078](https://github.com/RVC-Boss/GPT-SoVITS/pull/2078): ボーカルと楽器分離のためのMel Band Roformerモデルサポートを追加。 +- 2025.02.23 [PR#2078](https://github.com/RVC-Boss/GPT-SoVITS/pull/2078): ボーカルと楽器分離のための 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エラーを修正(日本語/韓国語または多言語テキスト分割用)。 +- 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 エラーを修正(日本語/韓国語または多言語テキスト分割用)。 - タイプ: 修正 - 貢献者: 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オーディオを生成する際の「こもった」オーディオ問題を緩和。 +- 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 オーディオを生成する際の「こもった」オーディオ問題を緩和。 - タイプ: 新機能 - 貢献者: RVC-Boss - 関連: [Issue#2085](https://github.com/RVC-Boss/GPT-SoVITS/issues/2085), [Issue#2117](https://github.com/RVC-Boss/GPT-SoVITS/issues/2117) - 2025.02.28 [PR#2123](https://github.com/RVC-Boss/GPT-SoVITS/pull/2123): 多言語プロジェクトドキュメントを更新。 - タイプ: ドキュメント - 貢献者: StaryLan -- 2025.02.28 [PR#2122](https://github.com/RVC-Boss/GPT-SoVITS/pull/2122): モデルが識別できない短いCJK文字に対してルールベースの検出を適用。 +- 2025.02.28 [PR#2122](https://github.com/RVC-Boss/GPT-SoVITS/pull/2122): モデルが識別できない短い CJK 文字に対してルールベースの検出を適用。 - タイプ: 修正 - 貢献者: KamioRinn - 関連: [Issue#2116](https://github.com/RVC-Boss/GPT-SoVITS/issues/2116) - 2025.02.28 [Commit#c38b1690](https://github.com/RVC-Boss/GPT-SoVITS/commit/c38b16901978c1db79491e16905ea3a37a7cf686), [Commit#a32a2b89](https://github.com/RVC-Boss/GPT-SoVITS/commit/a32a2b893436fad56cc82409121c7fa36a1815d5): 合成速度を制御するための発話速度パラメータを追加。 - タイプ: 修正 - 貢献者: RVC-Boss -- 2025.02.28 **GPT-SoVITS V3を正式リリース**。 +- 2025.02.28 **GPT-SoVITS V3 を正式リリース**。 ## 202503 @@ -263,70 +264,71 @@ - ONNX: [Issue#492](https://github.com/RVC-Boss/GPT-SoVITS/issues/492), [Issue#671](https://github.com/RVC-Boss/GPT-SoVITS/issues/671), [Issue#1192](https://github.com/RVC-Boss/GPT-SoVITS/issues/1192), [Issue#1819](https://github.com/RVC-Boss/GPT-SoVITS/issues/1819), [Issue#1841](https://github.com/RVC-Boss/GPT-SoVITS/issues/1841). - 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の並列推論を有効化。** +- 2025.03.31 [PR#2241](https://github.com/RVC-Boss/GPT-SoVITS/pull/2241): **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並列推論のロックを解除。非同期モデル読み込みロジックを修正。 +- 2025.04.01 [Commit#6a60e5ed](https://github.com/RVC-Boss/GPT-SoVITS/commit/6a60e5edb1817af4a61c7a5b196c0d0f1407668f): SoVITS v3 並列推論のロックを解除。非同期モデル読み込みロジックを修正。 - タイプ: 修正 - 貢献者: RVC-Boss -- 2025.04.07 [PR#2255](https://github.com/RVC-Boss/GPT-SoVITS/pull/2255): Ruffを使用したコードフォーマット。G2PWリンクを更新。 +- 2025.04.07 [PR#2255](https://github.com/RVC-Boss/GPT-SoVITS/pull/2255): Ruff を使用したコードフォーマット。G2PW リンクを更新。 - タイプ: スタイル - 貢献者: XXXXRT666 -- 2025.04.15 [PR#2290](https://github.com/RVC-Boss/GPT-SoVITS/pull/2290): ドキュメントを整理。Python 3.11サポートを追加。インストーラーを更新。 +- 2025.04.15 [PR#2290](https://github.com/RVC-Boss/GPT-SoVITS/pull/2290): ドキュメントを整理。Python 3.11 サポートを追加。インストーラーを更新。 - タイプ: 雑務 - 貢献者: XXXXRT666 - 2025.04.20 [PR#2300](https://github.com/RVC-Boss/GPT-SoVITS/pull/2300): Colab、インストールファイル、モデルダウンロードを更新。 - タイプ: 雑務 - 貢献者: 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モデルを追加。** +- 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 モデルを追加。** - タイプ: 新機能 - 貢献者: 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の並列推論を有効化。 +- 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 の並列推論を有効化。 - タイプ: 新機能 - 貢献者: 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): モデルバージョンパラメータの受け渡しを修正。 - タイプ: 修正 - 貢献者: 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バージョンを更新。 +- 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 バージョンを更新。 - タイプ: 修正 - 貢献者: RVC-Boss、XXXXRT666 - 関連: [Issue#2308](https://github.com/RVC-Boss/GPT-SoVITS/issues/2308) -- **2024.04.22 GPT-SoVITS V4を正式リリース**。 -- 2025.04.22 [PR#2311](https://github.com/RVC-Boss/GPT-SoVITS/pull/2311): Gradioパラメータを更新。 +- **2024.04.22 GPT-SoVITS V4 を正式リリース**。 +- 2025.04.22 [PR#2311](https://github.com/RVC-Boss/GPT-SoVITS/pull/2311): Gradio パラメータを更新。 - タイプ: 雑務 - 貢献者: XXXXRT666 -- 2025.04.25 [PR#2322](https://github.com/RVC-Boss/GPT-SoVITS/pull/2322): Colab/Kaggleノートブックスクリプトを改善。 +- 2025.04.25 [PR#2322](https://github.com/RVC-Boss/GPT-SoVITS/pull/2322): Colab/Kaggle ノートブックスクリプトを改善。 - タイプ: 雑務 - 貢献者: XXXXRT666 ## 202505 -- 2025.05.26 [PR#2351](https://github.com/RVC-Boss/GPT-SoVITS/pull/2351): DockerとWindows自動ビルドスクリプトを改善。pre-commitフォーマットを追加。 +- 2025.05.26 [PR#2351](https://github.com/RVC-Boss/GPT-SoVITS/pull/2351): Docker と Windows 自動ビルドスクリプトを改善。pre-commit フォーマットを追加。 - タイプ: 雑務 - 貢献者: XXXXRT666 - 2025.05.26 [PR#2408](https://github.com/RVC-Boss/GPT-SoVITS/pull/2408): 多言語テキスト分割と認識ロジックを最適化。 - タイプ: 修正 - 貢献者: 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%向上。 +- 2025.05.26 [PR#2377](https://github.com/RVC-Boss/GPT-SoVITS/pull/2377): キャッシュ戦略を実装し、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): アノテーションインターフェースを更新し、以下の注意事項を追加しました:各ページの編集が終わったら必ず「Submit Text」をクリックしてください。さもなくば変更は保存されません。 - タイプ: 修正 - 貢献者: RVC-Boss -- 2025.05.29 [Commit#1934fc1e](https://github.com/RVC-Boss/GPT-SoVITS/commit/1934fc1e1b22c4c162bba1bbe7d7ebb132944cdc): UVR5およびONNX dereverberationモデルのエラーを修正。FFmpegが元のパスにスペースを含むMP3/M4Aファイルをエンコードする場合の問題を解決。 +- 2025.05.29 [Commit#1934fc1e](https://github.com/RVC-Boss/GPT-SoVITS/commit/1934fc1e1b22c4c162bba1bbe7d7ebb132944cdc): UVR5 および ONNX dereverberation モデルのエラーを修正。FFmpeg が元のパスにスペースを含む MP3/M4A ファイルをエンコードする場合の問題を解決。 - タイプ: 修正 - 貢献者: RVC-Boss -**プレビュー: 端午節後にV2バージョンを基にした大規模な最適化アップデートを予定!** \ No newline at end of file +**プレビュー: 端午節後に V2 バージョンを基にした大規模な最適化アップデートを予定!** diff --git a/docs/ja/README.md b/docs/ja/README.md index 8cedb0d9..c682798f 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 を開きます. #### その他 @@ -327,11 +325,6 @@ v2 環境から v3 を使用する方法: python tools/uvr5/webui.py "" ``` - - コマンド ラインを使用してデータセットのオーディオ セグメンテーションを行う方法は次のとおりです. ```bash @@ -352,7 +345,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 @@ -406,5 +399,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 7f0e6a2c..ea79f1d6 100644 --- a/docs/ko/Changelog_KO.md +++ b/docs/ko/Changelog_KO.md @@ -108,7 +108,7 @@ ## 202403/202404/202405 -### 사소한 수정: +### 사소한 수정 1. 참조 텍스트 없는 모드의 문제를 수정했습니다. 2. 중국어 및 영어 텍스트 프론트엔드를 최적화했습니다. @@ -117,27 +117,27 @@ 5. 훈련 데이터 처리 중 지원되지 않는 언어에 대한 오류 프롬프트를 추가했습니다. 6. Hubert 추출의 버그를 수정했습니다. -### 주요 수정: +### 주요 수정 1. VQ를 고정하지 않고 SoVITS 훈련의 문제를 수정했습니다(품질 저하를 일으킬 수 있음). 2. 빠른 추론 분기를 추가했습니다. ## 20240610 -### 사소한 수정: +### 사소한 수정 1. [PR 1168](https://github.com/RVC-Boss/GPT-SoVITS/pull/1168) & [PR 1169](https://github.com/RVC-Boss/GPT-SoVITS/pull/1169) 순수 구두점 및 다중 구두점 텍스트 입력 로직을 개선했습니다. 2. [Commit 501a74a](https://github.com/RVC-Boss/GPT-SoVITS/commit/501a74ae96789a26b48932babed5eb4e9483a232) UVR5에서 MDXNet 디러버브를 위한 CMD 형식을 수정하고 공백이 있는 경로를 지원했습니다. 3. [PR 1159](https://github.com/RVC-Boss/GPT-SoVITS/pull/1159) `s2_train.py`에서 SoVITS 훈련을 위한 진행률 표시줄 로직을 수정했습니다. -### 주요 수정: +### 주요 수정 -4. [Commit 99f09c8](https://github.com/RVC-Boss/GPT-SoVITS/commit/99f09c8bdc155c1f4272b511940717705509582a) WebUI의 GPT 미세 조정이 중국어 입력 텍스트의 BERT 기능을 읽지 않아 추론과 불일치 및 잠재적 품질 저하를 일으키는 문제를 수정했습니다. +1. [Commit 99f09c8](https://github.com/RVC-Boss/GPT-SoVITS/commit/99f09c8bdc155c1f4272b511940717705509582a) WebUI의 GPT 미세 조정이 중국어 입력 텍스트의 BERT 기능을 읽지 않아 추론과 불일치 및 잠재적 품질 저하를 일으키는 문제를 수정했습니다. **주의: 이전에 많은 양의 데이터로 미세 조정한 경우 품질을 향상시키기 위해 모델을 다시 조정하는 것이 좋습니다.** ## 20240706 -### 사소한 수정: +### 사소한 수정 1. [Commit 1250670](https://github.com/RVC-Boss/GPT-SoVITS/commit/db50670598f0236613eefa6f2d5a23a271d82041) CPU 추론에서 기본 배치 크기 소수점 문제를 수정했습니다. 2. [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이 예외를 만나면 모든 보류 중인 오디오 파일이 종료되는 문제를 수정했습니다. @@ -145,24 +145,24 @@ 4. [Commit a208698](https://github.com/RVC-Boss/GPT-SoVITS/commit/a208698e775155efc95b187b746d153d0f2847ca) 다중 GPU 훈련을 위한 다중 프로세스 저장 로직을 수정했습니다. 5. [PR 1251](https://github.com/RVC-Boss/GPT-SoVITS/pull/1251) 불필요한 `my_utils`를 제거했습니다. -### 주요 수정: +### 주요 수정 -6. [PR 672](https://github.com/RVC-Boss/GPT-SoVITS/pull/672)의 가속 추론 코드가 검증되어 메인 브랜치에 병합되었으며, 기본과 일관된 추론 효과를 보장합니다. +1. [PR 672](https://github.com/RVC-Boss/GPT-SoVITS/pull/672)의 가속 추론 코드가 검증되어 메인 브랜치에 병합되었으며, 기본과 일관된 추론 효과를 보장합니다. 또한 참조 텍스트 없는 모드에서 가속 추론을 지원합니다. **향후 업데이트에서는 `fast_inference` 브랜치의 변경 사항의 일관성을 계속 검증할 것입니다**. ## 20240727 -### 사소한 수정: +### 사소한 수정 1. [PR 1298](https://github.com/RVC-Boss/GPT-SoVITS/pull/1298) 불필요한 i18n 코드를 정리했습니다. 2. [PR 1299](https://github.com/RVC-Boss/GPT-SoVITS/pull/1299) 사용자 파일 경로의 후행 슬래시가 명령줄 오류를 일으키는 문제를 수정했습니다. 3. [PR 756](https://github.com/RVC-Boss/GPT-SoVITS/pull/756) GPT 훈련의 단계 계산 로직을 수정했습니다. -### 주요 수정: +### 주요 수정 -4. [Commit 9588a3c](https://github.com/RVC-Boss/GPT-SoVITS/commit/9588a3c52d9ebdb20b3c5d74f647d12e7c1171c2) 합성을 위한 음성 속도 조절을 지원했습니다. +1. [Commit 9588a3c](https://github.com/RVC-Boss/GPT-SoVITS/commit/9588a3c52d9ebdb20b3c5d74f647d12e7c1171c2) 합성을 위한 음성 속도 조절을 지원했습니다. 음성 속도만 조절하면서 무작위성을 고정할 수 있습니다. - 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 보컬 분리 모델 지원 추가. @@ -212,7 +212,7 @@ ## 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 필요.** - - 유형: 신규 기능 ([위키 참조](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): 다국어 프로젝트 문서 업데이트. - 유형: 문서화 @@ -265,6 +265,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 @@ -330,4 +331,4 @@ - 유형: 수정 - 기여자: RVC-Boss -**미리보기: 단오절 이후 V2 버전 기반 대규모 최적화 업데이트 예정!** \ No newline at end of file +**미리보기: 단오절 이후 V2 버전 기반 대규모 최적화 업데이트 예정!** diff --git a/docs/ko/README.md b/docs/ko/README.md index e6419a11..c09d0259 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 모델이 더 안정적이며 반복 및 생략이 적고, 더 풍부한 감정 표현을 가진 음성을 생성하기가 더 쉽습니다. @@ -404,8 +402,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 ce5b2754..fc8b7155 100644 --- a/docs/tr/Changelog_TR.md +++ b/docs/tr/Changelog_TR.md @@ -108,7 +108,7 @@ ## 202403/202404/202405 Güncellemeleri -### Küçük Düzeltmeler: +### Küçük Düzeltmeler 1. Referans metin olmayan mod ile ilgili sorunlar düzeltildi. 2. Çince ve İngilizce metin önyüzü optimize edildi. @@ -117,27 +117,27 @@ 5. Eğitim verisi işleme sırasında desteklenmeyen diller için hata uyarıları eklendi. 6. Hubert çıkarımındaki hata düzeltildi. -### Büyük Düzeltmeler: +### Büyük Düzeltmeler 1. VQ'yu dondurmadan yapılan SoVITS eğitimi sorunu (bu kalite düşüşüne neden olabilir) düzeltildi. 2. Hızlı çıkarım dalı eklendi. ## 20240610 -### Küçük Düzeltmeler: +### Küçük Düzeltmeler 1. [PR 1168](https://github.com/RVC-Boss/GPT-SoVITS/pull/1168) & [PR 1169](https://github.com/RVC-Boss/GPT-SoVITS/pull/1169) saf noktalama işareti ve çoklu noktalama işareti metin girdisi için mantığı geliştirdi. 2. [Commit 501a74a](https://github.com/RVC-Boss/GPT-SoVITS/commit/501a74ae96789a26b48932babed5eb4e9483a232) UVR5'teki MDXNet yankı giderme için CMD formatını düzeltti, boşluk içeren yolları destekledi. 3. [PR 1159](https://github.com/RVC-Boss/GPT-SoVITS/pull/1159) `s2_train.py` içindeki SoVITS eğitimi için ilerleme çubuğu mantığını düzeltti. -### Büyük Düzeltmeler: +### Büyük Düzeltmeler -4. [Commit 99f09c8](https://github.com/RVC-Boss/GPT-SoVITS/commit/99f09c8bdc155c1f4272b511940717705509582a) WebUI'nin GPT ince ayarının, Çince giriş metinlerinin BERT özelliğini okumaması sorununu düzeltti, bu da çıkarım ile tutarsızlığa ve potansiyel kalite düşüşüne neden oluyordu. +1. [Commit 99f09c8](https://github.com/RVC-Boss/GPT-SoVITS/commit/99f09c8bdc155c1f4272b511940717705509582a) WebUI'nin GPT ince ayarının, Çince giriş metinlerinin BERT özelliğini okumaması sorununu düzeltti, bu da çıkarım ile tutarsızlığa ve potansiyel kalite düşüşüne neden oluyordu. **Dikkat: Daha önce büyük miktarda veri ile ince ayar yaptıysanız, modelin kalitesini artırmak için yeniden ayar yapmanız önerilir.** ## 20240706 -### Küçük Düzeltmeler: +### Küçük Düzeltmeler 1. [Commit 1250670](https://github.com/RVC-Boss/GPT-SoVITS/commit/db50670598f0236613eefa6f2d5a23a271d82041) CPU çıkarımında varsayılan yığın boyutu ondalık sorununu düzeltti. 2. [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) gürültü giderme veya ASR ile ilgili istisnalarla karşılaşıldığında bekleyen tüm ses dosyalarının çıkış yapmasına neden olan sorunları düzeltti. @@ -145,24 +145,24 @@ 4. [Commit a208698](https://github.com/RVC-Boss/GPT-SoVITS/commit/a208698e775155efc95b187b746d153d0f2847ca) çoklu GPU eğitimi için çoklu işlem kaydetme mantığını düzeltti. 5. [PR 1251](https://github.com/RVC-Boss/GPT-SoVITS/pull/1251) gereksiz `my_utils`'ı kaldırdı. -### Büyük Düzeltmeler: +### Büyük Düzeltmeler -6. [PR 672](https://github.com/RVC-Boss/GPT-SoVITS/pull/672) hızlandırılmış çıkarım kodu doğrulandı ve ana dala birleştirildi, taban ile tutarlı çıkarım etkileri sağlandı. +1. [PR 672](https://github.com/RVC-Boss/GPT-SoVITS/pull/672) hızlandırılmış çıkarım kodu doğrulandı ve ana dala birleştirildi, taban ile tutarlı çıkarım etkileri sağlandı. Ayrıca referans metni olmayan modda hızlandırılmış çıkarımı destekler. **Gelecek güncellemeler, `fast_inference` dalındaki değişikliklerin tutarlılığını doğrulamaya devam edecek.** ## 20240727 -### Küçük Düzeltmeler: +### Küçük Düzeltmeler 1. [PR 1298](https://github.com/RVC-Boss/GPT-SoVITS/pull/1298) gereksiz i18n kodlarını temizledi. 2. [PR 1299](https://github.com/RVC-Boss/GPT-SoVITS/pull/1299) kullanıcı dosya yollarındaki sonlandırma eğik çizgilerinin komut satırı hatalarına neden olduğu sorunları düzeltti. 3. [PR 756](https://github.com/RVC-Boss/GPT-SoVITS/pull/756) GPT eğitimindeki adım hesaplama mantığını düzeltti. -### Büyük Düzeltmeler: +### Büyük Düzeltmeler -4. [Commit 9588a3c](https://github.com/RVC-Boss/GPT-SoVITS/commit/9588a3c52d9ebdb20b3c5d74f647d12e7c1171c2) sentez için konuşma hızı ayarlamasını destekledi. +1. [Commit 9588a3c](https://github.com/RVC-Boss/GPT-SoVITS/commit/9588a3c52d9ebdb20b3c5d74f647d12e7c1171c2) sentez için konuşma hızı ayarlamasını destekledi. Konuşma hızını ayarlarken rastgeleliği dondurmayı etkinleştirdi. - 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 vokal eşlik ayırma modeli desteği eklendi. @@ -212,7 +212,7 @@ ## 202502 (V3 Sürümü) - 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): **İ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): Çok dilli proje dokümantasyonu güncellendi. - Tür: Dokümantasyon @@ -265,6 +265,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 için paralel çıkarım etkinleştirildi.** + - Tür: Yeni Özellik - Katkıda Bulunan: ChasonJiang @@ -330,4 +331,4 @@ - Tür: Düzeltme - Katkıda Bulunan: RVC-Boss -**Önizleme: Ejderha Teknesi Festivali'nden sonra V2 sürümüne dayalı büyük optimizasyon güncellemesi gelecek!** \ No newline at end of file +**Önizleme: Ejderha Teknesi Festivali'nden sonra V2 sürümüne dayalı büyük optimizasyon güncellemesi gelecek!** diff --git a/docs/tr/README.md b/docs/tr/README.md index 0a8ee4a8..a0f31d2e 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 @@ V1 ortamından V2'yi kullanmak için: [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. @@ -331,11 +329,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 @@ -410,5 +403,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, )