GPT-SoVITS語音克隆部署與使用

GPT-SoVITS是一款強大的少量樣本語音轉換與語音合成開源工具。當前,GPT-SoVITS實現了如下幾個方面的功能:

  • 由參考音頻的情感、音色、語速控制合成音頻的情感、音色、語速
  • 可以少量語音微調訓練,也可不訓練直接推理
  • 可以跨語種生成,即參考音頻(訓練集)和推理文本的語種為不同語種

硬件建議要求:
INT4 : RTX3090*1,顯存24GB,內存32GB,系統盤200GB
更低配的GPU硬件也可以進行推理,但是推理速度會更慢。

環境準備

模型準備

手動下載以下幾個模型(體驗時幾個模型不一定需全下載)
本文統一放在模型存檔目錄:/u01/workspace/models/GPT-SoVITS
pretrained_models

git clone https://huggingface.co/lj1995/GPT-SoVITS

uvr5_weights

https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/uvr5_weights

asr model:

git clone https://hf-mirror.com/Systran/faster-whisper-large-v3

可選模型: speech_fsmn_vad_zh-cn-16k-common-pytorch,speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch, punc_ct-transformer_zh-cn-common-vocab272727-pytorch
下載地址分別為:

git clone https://www.modelscope.cn/iic/speech_fsmn_vad_zh-cn-16k-common-pytorch.git
git clone https://www.modelscope.cn/iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch.git
git clone https://www.modelscope.cn/iic/punc_ct-transformer_zh-cn-common-vocab272727-pytorch.git

注意存放目錄結構方便后面Docker 掛載目錄后能直接找到相關的模型

root@itserver03:/u01/workspace/models/GPT-SoVITS# tree  -d
.
├── GPT_weights
├── pretrained_models
│   ├── chinese-hubert-base
│   └── chinese-roberta-wwm-ext-large
├── SoVITS_weights
└── tools├── asr│   └── models│       ├── faster-whisper-large-v3│       ├── punc_ct-transformer_zh-cn-common-vocab272727-pytorch│       │   ├── example│       │   └── fig│       ├── speech_fsmn_vad_zh-cn-16k-common-pytorch│       │   ├── example│       │   └── fig│       └── speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch│           ├── example│           └── fig└── uvr5└── uvr5_weights└── Onnx_dereverb_By_FoxJoy
下載源碼
git clone https://github.com/RVC-Boss/GPT-SoVITS.git; 
cd GPT-SoVITS

Docker 容器化部署

Dockerfile樣例

注意 根據官方的Dockerfile自己build出滿足自身環境需要的鏡像。

# Base CUDA image
# FROM cnstark/pytorch:2.0.1-py3.9.17-cuda11.8.0-ubuntu20.04
FROM pytorch/pytorch:2.2.1-cuda12.1-cudnn8-runtimeLABEL maintainer="breakstring@hotmail.com"
LABEL version="dev-20240209"
LABEL description="Docker image for GPT-SoVITS"# Install 3rd party apps
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Etc/UTC
ENV TZ=Etc/UTC
ENV LANG=zh_CN.UTF-8
ENV LC_ALL=zh_CN.UTF-8RUN apt-get update && \apt-get install -y --no-install-recommends tzdata ffmpeg libsox-dev parallel aria2 git git-lfs && \git lfs install && \rm -rf /var/lib/apt/lists/*# Copy only requirements.txt initially to leverage Docker cache
WORKDIR /workspace
COPY requirements.txt /workspace/
RUN pip install --no-cache-dir -r requirements.txt# Define a build-time argument for image type
ARG IMAGE_TYPE=full# Conditional logic based on the IMAGE_TYPE argument
# Always copy the Docker directory, but only use it if IMAGE_TYPE is not "elite"
COPY ./Docker /workspace/Docker 
# elite 類型的鏡像里面不包含額外的模型
RUN if [ "$IMAGE_TYPE" != "elite" ]; then \chmod +x /workspace/Docker/download.sh && \/workspace/Docker/download.sh && \python /workspace/Docker/download.py && \python -m nltk.downloader averaged_perceptron_tagger cmudict; \fi# Copy the rest of the application
COPY . /workspaceEXPOSE 9871 9872 9873 9874 9880CMD ["python", "webui.py"]

本文對官方的Dockerfile做了簡單修改以便滿足自己需要。 采用基礎鏡像pytorch/pytorch:2.2.1-cuda12.1-cudnn8-runtime
同時需要修改鏡像的語言的環境變量,否則webui 會展示為英文界面:
ENV LANG=zh_CN.UTF-8

nltk_data 文件下載

如果啟動時找不到nltk_data 的幾個語料庫,系統會自動下載,但時前提是你的網絡已經完美的科學上網了。否則不出意外應該會出錯。 nltk_data 文件可以掛載到容器,但也可以通過更改Dockerfile直接拷貝到鏡像中。
下載地址:
https://www.nltk.org/nltk_data/
需要下載的語料庫:

  • cmudict
  • averaged_perceptron_tagger

存放目錄結構:

root@itserver03:/u01/workspace/nltk_data# tree
.
├── corpora
│   └── cmudict
│       └── cmudict
└── taggers└── averaged_perceptron_tagger└── averaged_perceptron_tagger.pickle4 directories, 2 files
構建image
docker build -t qingcloudtech/gpt-sovits:v1.0 .

運行

修改docker-compose.yaml文件用自己編譯的容器鏡像:
version: '3.8'services:gpt-sovits:image: qingcloudtech/gpt-sovits:v1.0container_name: gpt-sovits-containerenvironment:- is_half=False- is_share=Falsevolumes:- ./output:/workspace/output- ./logs:/workspace/logs:rw- ./TEMP:/workspace/TEMP- /u01/workspace/nltk_data:/usr/share/nltk_data- /u01/workspace/models/GPT-SoVITS/pretrained_models:/workspace/GPT_SoVITS/pretrained_models- /u01/workspace/models/GPT-SoVITS/SoVITS_weights:/workspace/SoVITS_weights- /u01/workspace/models/GPT-SoVITS/GPT_weights:/workspace/GPT_weights- /u01/workspace/models/GPT-SoVITS/tools/asr/models:/workspace/tools/asr/models- /u01/workspace/models/GPT-SoVITS/tools/uvr5/uvr5_weights:/workspace/tools/uvr5/uvr5_weights- ./reference:/workspace/referenceworking_dir: /workspaceports:- "9880:9880"- "9871:9871"- "9872:9872"- "9873:9873"- "9874:9874"shm_size: 16Gdeploy:resources:reservations:devices:- driver: nvidiacount: "all"capabilities: [gpu]stdin_open: truetty: truerestart: unless-stopped

** 注意重點:** 幾個掛載文件的路徑:

  • ./output:/workspace/output
  • ./logs:/workspace/logs:rw
  • ./TEMP:/workspace/TEMP
  • /u01/workspace/nltk_data:/usr/share/nltk_data
  • /u01/workspace/models/GPT-SoVITS/pretrained_models:/workspace/GPT_SoVITS/pretrained_models
  • /u01/workspace/models/GPT-SoVITS/SoVITS_weights:/workspace/SoVITS_weights
  • /u01/workspace/models/GPT-SoVITS/GPT_weights:/workspace/GPT_weights
  • /u01/workspace/models/GPT-SoVITS/tools/asr/models:/workspace/tools/asr/models
  • /u01/workspace/models/GPT-SoVITS/tools/uvr5/uvr5_weights:/workspace/tools/uvr5/uvr5_weights
運行
docker-compose up -d

幾個重要的頁面:
下面幾個頁面并非啟動后都可以直接訪問,需要根據需要點選相應的啟動按鈕后方可訪問。
主頁面: http://127.0.0.1:9874/
UVR5人聲伴奏分離&去混響去延遲工具 :** http://127.0.0.1:9873/**
TTS推理WebUI:http://127.0.0.1:9872/
語音文本校對標注工具:** http://127.0.0.1:9871/**


操作演示:

本操作過程僅僅演示如何快速的開始,讓平臺真正用起來,需要完整了解相關的內容的請參考和研究官方提供的相關手冊。

第一步: 進主頁面:

image.png

第二步: 開啟UVR5-WebUI 進入到URV5 界面:

上傳音頻文件,選擇模型: HP3, 點擊轉換, 轉換成功后,輸出文件默認會存放在/workspace/output/uvr5_opt
image.png

第三步: 返回主界面,分別執行如下幾個步驟

image.png
0b-語音切分工具
0bb-語音降噪工具
0c-中文批量離線ASR工具
這三步中,不要更改輸出文件夾,每一步的輸入信息均為上一步的輸出目錄。
0d-語音文本校對標注工具
勾選【是否開啟打標WebUI】后訪問http://127.0.0.1:9871/
image.png

第四步: 進入主界面,點擊第二個Tab頁:

直接輸入文本標注文件地址:點擊一鍵三聯即可,其他參數熟練之后隨意調整。
image.png

第五步:微調訓練

直接點擊頁面中的兩按鈕,等待一段時間即可完成微調:
image.png

第六步:推理

image.png
刷新模型路徑,直接選擇剛剛微調出來的模型,可能有多個,注意選擇合適的模型,然后再開啟推理界面:
http://127.0.0.1:9872/
選擇參考模型,參考模型文本(可不填),需要合成的文本, 點擊合成語音,即可完成語音克隆。
image.png

【Qinghub Studio 】更適合開發人員的低代碼開源開發平臺
【QingHub企業級應用統一部署】
【QingHub企業級應用開發管理】
QingHub** 演示】**
https://qingplus.cn

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13436.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13436.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13436.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【AI】試用 ai 提取文章內容嘗試

電梯產業面臨這樣一個問題,因為太多的品牌,將近 400 多個,甚至有寶馬,奧迪,你敢相信,一家造汽車的造過電梯?不過好像想想也是,電梯是第二大交通工具,電梯從某種意義上來說&#xff…

無網環境禁止 WPS 提示登錄,且基本功能按鈕可用

目前 WPS 升級后,每次打開都會提示你登錄 WPS,并且在未登錄之前所有基本功能按鈕是置灰狀態,無法使用。 如此一來,在內網或無網環境,我們無法登陸 WPS ,就給我們的使用帶來了極大的不便,那么有沒…

全網最全面的由淺到深的Kotlin基礎教程(七)

前言 本篇文章接著上一篇文章全網最全面的由淺到深的Kotlin基礎教程(六)繼續進階學習kotlin,建議看完上一篇文章,再來看本篇文章。本篇主要分析一些常用的kotlin函數源碼,以及用kotlin簡單實現Rxjava的幾個操作符。堅…

卡梅德生物噬菌體展示多肽庫

噬菌體展示多肽文庫在新藥發現領域展現出巨大的潛力和應用價值。卡梅德生物的噬菌體展示肽庫通過將大量肽序列插入到噬菌體基因組中,并在噬菌體表面展示這些肽,構建了一個多樣性的肽庫。 在新藥發現過程中,噬菌體展示多肽文庫可以用于篩選具有…

全志A133 android10 調試vibrator震動馬達

一,前提條件 全志使用的馬達配置為上電震動,下電停止,需測試硬件是否正常。馬達供電最好為獨立供電,避免干擾。 二,適配步驟 1. dts中增加馬達配置 motor_para {compatible "allwinner,sunxi-vibrator";…

java工廠模式示例代碼

工廠模式是一種創建型設計模式,它提供了一種將對象的創建與使用分離的方法。在工廠模式中,我們通過工廠類來創建對象,而不是直接在客戶端代碼中使用 new 關鍵字來創建對象。以下是一個簡單的Java工廠模式示例代碼: 產品接口 首先…

BGP實驗:聯邦和發射器實驗

BGP實驗:聯邦和發射器實驗 一、實驗拓撲 二、實驗要求及分析 實驗要求: 1、AS1存在兩個環回,一個地址為192.168.1.0/24,該地址不能再任何協議中宣告; ? AS3存在兩個環回,一個地址為192.168.2.0/24&…

解決ModuleNotFoundError: No module named ‘open_clip‘問題

在使用stable diffusion大模型時,添加一些模型后啟動df頁面報錯:ModuleNotFoundError: No module named open_clip 使用 pip install open_clip命令下載失敗,報錯: Looking in indexes: https://mirrors.aliyun.com/pypi/simple…

Redis【B站面試題】

前言 2023-07-27 22:44:59 出自B站 灰灰的Java面試 Redis Redis為什么快? 1.純內存KV操作 Redis的操作都是基于內存的,CPU不是 Redis性能瓶頸,,Redis的瓶頸是機器內存和網絡帶寬。 在計算機的世界中,CPU的速度是遠大于內存的速…

Java技術深度解析:高級面試問題與精粹答案(二)

Java 面試問題及答案 1. 什么是Java的垃圾回收機制?它是如何工作的? 答案: Java的垃圾回收機制(Garbage Collection,GC)是Java運行時環境(JRE)中的一個功能,用于自動管…

[CocosCreator]Android的增加AndroidX的動態權限

歡迎喜歡或者從事CocosCreator開發的小伙伴請加入我的大家庭CocosCreator游戲開發Q群:26855530 1.首先增加你需要申請的權限,修改:AndroidManifest.xml: <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas…

深度學習之基于TensorFlow人臉表情識別

歡迎大家點贊、收藏、關注、評論啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代碼。 文章目錄 一項目簡介 二、功能三、系統四. 總結 一項目簡介 一、項目背景 人臉表情識別是計算機視覺領域的重要研究方向之一&#xff0c;它在人機交互、情感分析、安全監控等領…

代碼隨想錄35期Day48-Java

Day48題目 LeetCode121買股票的最佳時機1 核心思想:可以使用貪心,選擇左邊最小的和右邊最大的,也可以動態規劃,需要保存是否持有股票的狀態,dp[i][0]表示第i天,不持有股票,dp[i][1]表示第i天持有 class Solution {public int maxProfit(int[] prices) {int[][] dp new int[…

python中異步io簡單樣例

目錄 一、異步IO簡單說明 二、代碼樣例 一、異步IO簡單說明 當進行異步 IO 操作時&#xff0c;程序不會因為等待 IO 操作完成而阻塞&#xff0c;而是可以在等待過程中繼續執行其他任務&#xff0c;從而提高了程序的并發性能和響應速度。這是因為異步 IO 操作利用了操作系統底層…

Java 變量和作用域:理解變量的聲明、初始化及其作用域

在Java編程語言中&#xff0c;變量和作用域是兩個核心概念。理解變量的聲明、初始化以及它們的作用域對于編寫健壯且高效的代碼至關重要。 變量的聲明與初始化 變量的聲明 在Java中&#xff0c;變量的聲明指的是定義變量的名稱和類型。在Java中&#xff0c;變量聲明的一般語…

ESP32開發——關于ESP32TimerInterrupt庫的例程分析

最近在學習嵌入式開發的內容&#xff0c;正好有一個開發任務涉及到對于定時器中斷的使用&#xff0c;今天正好找到了這個相關的庫&#xff1a;ESP32TimerInterrupt ESP32TimerInterrupt庫的下載鏈接&#xff08;適用于Arduino IDE&#xff09; 進入到這個地址后直接下載該庫的…

ubuntu使用記錄——如何使用wireshark網絡抓包工具進行檢測速騰激光雷達的ip和端口號

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言wireshark網絡抓包工具1.wireshark的安裝2.wireshark的使用3.更改雷達ip 總結 前言 Wireshark是一款備受贊譽的開源網絡協議分析軟件&#xff0c;其功能之強大…

簡述MyBatis中#{}引用和${}引用的區別

各位大佬光臨寒舍&#xff0c;希望各位能賞臉給個三連&#xff0c;謝謝各位大佬了&#xff01;&#xff01;&#xff01; 目錄 1.有無預編譯 優點 缺點 2.SQL執行的快慢 3.能否被SQL注入 4.參數輸入方式 5.總結 1.有無預編譯 #{}是有預編譯的而${}是沒有預編譯的&…

LiveGBS流媒體平臺GB/T28181用戶手冊-服務器概覽:通道信息、負載信息、CPU使用、存儲使用、帶寬使用(Mbps)、內存使用

LiveGBS用戶手冊-服務器概覽&#xff1a;通道信息、負載信息、CPU使用、存儲使用、帶寬使用&#xff08;Mbps&#xff09;、內存使用 1、服務器概覽1.1、通道信息1.2、負載信息1.2.1、信息說明1.2.2、會話列表 1.3、CPU使用1.4、存儲使用1.5、帶寬使用&#xff08;Mbps&#xf…