1.概述
GPT-SoVITS是一款開源的語音合成模型,結合了深度學習和聲學技術,能夠實現高質量的語音生成。其獨特之處在於支援使用參考音訊進行零樣本語音合成,即使沒有直接的訓練資料,模型仍能生成相似風格的語音。使用者可以透過微調模型,進一步提升其效能,以適應特定的應用需求。
2.內容
2.1 GPT-SoVITS簡介
這個開源的文字到語音(TTS)專案可以在Linux、MacOS和Windows系統上執行,具有極高的靈活性和相容性。使用者只需提供一段長達1分鐘的音訊檔案,即可輕鬆克隆特定的聲音。該專案支援將漢語、英語和日語的文字轉換為克隆的語音,為多語言環境中的應用提供了便利。
- 專案地址:https://github.com/RVC-Boss/GPT-SoVITS
- 官方教程:GPT-SoVITS手冊
2.2 語音合成
VITS是一種用於端到端文字到語音(TTS)的模型,結合了對抗學習和條件變分自動編碼器,旨在生成高質量的語音效果。近年來,雖然已經提出了多種單階段訓練和並行取樣的TTS模型,但它們的樣本質量往往無法與傳統的兩階段系統相媲美。為了解決這個問題,VITS採用了一種並行的端到端方法,能夠生成更自然、更真實的聲音。
該模型透過標準化流和對抗訓練過程增強的變分推理,顯著提升了生成建模的表達能力。此外,VITS引入了隨機持續時間預測器,能夠從輸入文字中合成出節奏各異的語音。這種設計允許模型捕捉潛在變數的不確定性,形成了一種自然的一對多關係,使得同一段文字可以以不同的音高和節奏進行多樣化的表達。這種靈活性和高質量的輸出使VITS在語音合成領域中具備了廣泛的應用潛力。
- 論文地址:https://arxiv.org/pdf/2106.06103
- Github地址:https://github.com/jaywalnut310/vits
2.3 Whisper語音識別
Whisper是OpenAI開發的先進自動語音識別(ASR)系統,經過訓練的語料庫包含68萬小時的多語言(涵蓋98種語言)和多工監督資料。OpenAI認為,這種龐大且多樣化的資料集顯著提升了系統對各種口音、背景噪音和專業術語的識別能力,使其在實際應用中表現出色。
除了語音識別功能,Whisper還支援多種語言的轉錄和翻譯,能夠將非英語語言直接翻譯成英語。這種多功能性使得Whisper不僅適用於語音轉文字的任務,還能在國際交流、內容建立和教育等領域發揮重要作用。憑藉其出色的準確性和靈活性,Whisper為使用者提供了一個強大的工具,有助於打破語言障礙,促進溝通與理解。
- 論文地址:https://github.com/openai/whisper
- GitHub地址:https://arxiv.org/pdf/2212.04356
Whisper的基本原理基於一種Transformer序列到序列模型,旨在處理多種語音任務,包括多語言語音識別、語音翻譯、口語語言識別以及語音活動檢測。透過將這些任務統一表示為一個需要解碼器預測的符號序列,Whisper能夠有效地替代傳統語音處理管道中的多個階段,簡化了處理流程。
該模型採用多工訓練的格式,使用一系列特殊符號作為任務指示符或分類目標。這種設計不僅提升了模型的靈活性,還使其在處理不同型別的語音輸入時表現出色。例如,當面對多種語言或不同口音時,Whisper能夠利用其訓練資料中的豐富資訊,快速適應並提高識別準確性。透過這種創新的方法,Whisper在語音處理領域展示了強大的能力,能夠滿足多樣化的使用者需求。
Whisper系統提供了五種不同的模型尺寸,以平衡速度和準確性。每種模型的設計旨在滿足不同應用場景的需求,使用者可以根據自己的具體要求選擇合適的模型。以下是可用模型的名稱、對應的大致記憶體需求和相對速度:
- 小型模型:記憶體需求低,速度快,適合實時語音識別任務,但在複雜音訊環境中的準確性可能稍遜。
- 中型模型:提供更好的準確性,同時保持相對較快的速度,適合大多數日常應用。
- 大型模型:在準確性上有顯著提升,適合對精度要求較高的場景,如醫療記錄轉錄和法律檔案審閱,但相對速度略慢。
- 超大型模型:具有出色的語音識別效能,能夠處理複雜口音和技術術語,適合專業領域的使用,記憶體需求較高,速度相對較慢。
- 特大模型:提供頂尖的準確性,特別適用於高噪聲環境和多方對話場景,記憶體需求極大,速度較慢,適合不需要實時處理的情況。
透過這些不同尺寸的模型,使用者可以根據自己的硬體資源和應用需求,靈活選擇最合適的選項,以實現最佳的語音識別效果。
3.GPT-SoVITS安裝與部署
3.1 配置要求
1.訓練
- Windows
- 需支援CUDA的nVIDIA顯示卡,視訊記憶體至少6GB。
- 不支援的顯示卡包括:10系之前的所有型號、GTX 1060及以下、GTX 1660及以下、GTX 2060及以下,以及3050 4GB顯示卡。
- 作業系統需為Windows 10或11。
- 如果沒有顯示卡,系統會自動切換至CPU訓練,但速度非常慢。
- macOS
- 需執行macOS 14或更高版本。
- 必須安裝Xcode命令列工具,可透過執行xcode-select --install完成安裝。
- Linux
- 熟練使用Linux環境。
- 需配備視訊記憶體至少為6GB的顯示卡。
- 同樣,如果沒有顯示卡,系統將自動切換至CPU訓練,速度較慢。
2.推理
- Windows
- 需支援CUDA的nVIDIA顯示卡,視訊記憶體至少4GB(未經過測試,3GB可能無法完成語音合成,因此推測4GB應該足夠)。
- 作業系統需為Windows 10或11。
- 如果沒有顯示卡,系統會自動識別並使用CPU進行推理。
- macOS
- 需執行macOS 14或更高版本。
- 必須安裝Xcode命令列工具,方法同上。
- Linux
- 熟練使用Linux環境。
- 需配備視訊記憶體至少為4GB的顯示卡。
- 如果沒有顯示卡,系統將自動識別並使用CPU進行推理。
透過這些配置要求,使用者可以確保系統能夠高效地進行訓練和推理,以實現最佳的效能表現。
3.2 Mac環境要求
1.軟體要求
- 確保已透過執行 xcode-select --install 安裝 Xcode 命令列工具。
- 安裝 Homebrew 以便於安裝必要的軟體(如 git、ffmpeg)。
2.安裝 conda(如果已安裝可以跳過)
測試透過的 Python 和 PyTorch 版本:
- Python 3.9、Pytorch 2.2.1
可以透過如下命令檢測是否已安裝。
conda info
3.安裝FFmpeg(如果已安裝可以跳過)
可以透過如下命令檢測是否已安裝以及版本要大於等於6.1
# 安裝 brew install ffmpeg # 檢查環境 ffmpeg -version
3.3 專案準備
1.下載專案程式碼
如果沒有安裝Git,開啟終端執行
brew install git brew install git-lfs brew install rust
如果已安裝Git,直接在終端中定位到要存放專案的目錄(此處以桌面為例,請按實際情況操作,本文件所有路徑皆基於此前提),然後克隆倉庫到本地,~/代表當前使用者目錄下
#示例 cd ~/desktop # ~代表當前使用者 git clone --depth=1 https://github.com/RVC-Boss/GPT-SoVITS
2.下載預訓練模型(直接參考專案README.md就好)
從 GPT-SoVITS Models 下載預訓練模型,並將它們解壓替換 ~/desktop/GPT-SoVITS/GPT_SoVITS/pretrained_models 。對於 UVR5(人聲/伴奏分離和混響移除)(推薦使用UVR5客戶端,可以跳過這步) 的是UVR5教程從 UVR5 Weights 下載模型,並將它們放置在 ~/GPT-SoVITS/tools/uvr5/uvr5_weights 中。(若使用UVR5客戶端,可以跳過這步)對於中文自動語音識別,從 Damo ASR Model 下載模型,將它們解壓替換 ~/desktop/GPT-SoVITS/tools/asr/models 。
#一步到位命令 cd ~/desktop/GPT-SoVITS/tools/asr/models git lfs install 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 git clone https://www.modelscope.cn/iic/speech_fsmn_vad_zh-cn-16k-common-pytorch.git
3.4 環境準備
1.建立環境
先關閉終端,再開啟終端輸入
conda create -n GPTSoVits python=3.9
conda activate GPTSoVits
遇到y/n的就一直點y回車
如果遇到:connot find conda,那是因為conda沒裝好,輸入
conda -v
檢視有沒有裝好。可以試試重新開啟終端。
2.安裝依賴
終端輸入
cd ~/desktop/GPT-SoVITS
conda activate GPTSoVits
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
3.執行
conda activate GPTSoVits cd ~/desktop/GPT-SoVITS python webui.py zh_CN
4.訓練模型
GPT-SoVITS WebUI提供了全面的功能,包括資料集製作、模型微調訓練和語音克隆推理。如果您只是想體驗效果,可以直接使用官方分享的語音模型。這種設計使使用者能夠迅速上手,無需複雜的設定或深入的技術知識。
4.1 資料集處理
1.處理原音訊
如果原音訊足夠乾淨,比如從遊戲中提取的幹聲,可以跳過這一步。接著,點選開啟Open UVR5-WebUI,稍等片刻後,開啟瀏覽器訪問 http://localhost:9873。
2.切割音訊
在切割音訊之前,建議將所有音訊檔案匯入音訊軟體(如剪映)進行音量調整,將最大音量設定為-9dB到-6dB,過高的音量應予以刪除。
開啟WebUI後,首先輸入原音訊的資料夾路徑。接下來,可以調整以下建議引數:
- min_length:根據視訊記憶體大小調整,視訊記憶體越小,值調得越小。
- min_interval:根據音訊的平均間隔進行調整。如果音訊過於密集,可以適當降低該值。
- max_sil_kept:此引數會影響句子的連貫性,不同音訊需不同調整。如果不確定,建議保持預設值。
點選“開啟語音切割”,切割過程將立即完成,預設輸出路徑為 output/slicer_opt。這樣,您就能快速獲得處理後的音訊片段。
開啟切分資料夾,將時長超過“視訊記憶體數”秒的音訊手動切分至該時長以下。例如,如果顯示卡視訊記憶體為10GB,建議將超過10秒的音訊切分至10秒以下,或者直接刪除(稍微超出一點的可以不處理)。過長的音訊可能會導致視訊記憶體爆滿。
如果經過語音切割後仍然是一個檔案,說明音訊過於密集,可以嘗試調低min_interval引數以獲得更好的切割效果。這樣可以確保音訊檔案在處理時不會超出視訊記憶體限制。
3.音訊降噪
如果原音訊足夠乾淨,比如從遊戲中提取的幹聲,可以跳過這一步。輸入剛才切割完成音訊的資料夾路徑,預設為 output/slicer_opt,然後點選“開啟語音降噪”。處理完成後,降噪後的音訊將預設輸出到 output/denoise_opt 目錄。這樣,您就可以輕鬆獲得清晰的音訊檔案。
4.打標並校對
只需輸入剛才的切分資料夾路徑,如果音訊經過降噪處理,預設輸出路徑為 output/denoise_opt;如果沒有降噪,則為 output/slicer_opt。
接下來,選擇達摩ASR或Fast Whisper,然後點選“開啟離線批次ASR”。預設輸出路徑為 output/asr_opt。請注意,這一步可能需要等待一段時間,因為系統需要下載相應的模型。
- 達摩ASR:專用於中文識別,效果最佳。
- Fast Whisper:支援99種語言,尤其在英語和日語的識別方面表現突出。建議選擇large V3模型,語種選擇自動(auto)即可。
需要注意的是,由於識別出的文字可能不夠準確,建議進行人工校對標註(這一步較耗時間,如果不追求極致效果可以選擇跳過)。這裡我只是為了演示流程,所以此步驟可以略過。
4.2 微調訓練
1. 資料集格式化
在1-GPT-SOVITS-TTS選項卡中,填寫以下資訊:
- 實驗/模型名:輸入實驗名稱,確保不要使用中文。
- 文字標註檔案:選擇您的標註檔案。
- 訓練集音訊檔案目錄:指定音訊資料集的資料夾路徑。
確保所有路徑和檔名正確無誤,以便順利進行後續操作。
填寫完成後,您可以選擇逐個點選下面的三個按鈕,等待每個操作執行結束後再點選下一個。如果遇到報錯,請檢視後臺日誌,有些報錯只需重試即可解決。
另外,您也可以直接使用“開啟一鍵三連”按鈕,一鍵完成這三步操作,節省時間和精力。
2.訓練微調模型
選擇 1B-微調訓練 子選項卡,配置 batch_size 等引數。然後依次點選 開啟 SoVITS 訓練 和 開啟 GPT 訓練。請注意,這兩個訓練任務不能同時進行(除非您有兩張顯示卡)。如果訓練過程中中斷,您可以直接再點選開始訓練,系統會從最近的儲存點繼續。
對於 SoVITS 訓練,建議將 batch_size 設定為視訊記憶體的一半以下。過高的設定可能導致視訊記憶體爆滿,並不是越高就越快。您需要根據資料集的大小進行調整,而不是嚴格按照視訊記憶體的一半來設定。如果出現視訊記憶體不足的情況,請適當降低 batch_size。以下是針對切片長度為10秒時,不同視訊記憶體下 SoVITS 訓練的最大 batch_size 的實測值供您參考;如果切片更長或資料集更大,則需要適當減少。
接下來,設定訓練輪數。SoVITS 模型的輪數可以設定得高一些,因為訓練速度較快。而對於 GPT 模型,通常建議設定輪數為10,不要超過20,以確保訓練效率和模型效能的平衡。
4.3 推理
1.開啟推理服務
選擇 1C-推理 子選項卡,配置模型路徑(如果模型沒有顯示出來,可以點選右側的按鈕進行重新整理)。然後,點選 開啟 TTS 推理 WEBUI 按鈕以開啟推理頁面。在推理頁面中,您可以輸入文字並生成語音,體驗模型的效果。
稍等片刻後,開啟瀏覽器訪問 http://localhost:9872。
2.語音克隆推理
在推理頁面中,第一步選擇所需的模型。第二步上傳參考語音和文字(建議時長在5秒到10秒之間,參考音訊非常重要,它會影響模型學習語速和語氣,請認真選擇)。第三步輸入您希望用於語音克隆的文字,準備開始生成語音。
5.總結
GPT-SoVITS是一款開源語音合成框架,結合了生成對抗網路和變分推理技術,能夠實現高質量的文字到語音轉換。該框架支援多種功能,包括模型微調、語音克隆和多語言處理,使用者可以透過友好的Web介面輕鬆操作。GPT-SoVITS尤其適合於生成自然流暢的語音,廣泛應用於遊戲、影視配音和語音助手等領域。
6.結束語
這篇部落格就和大家分享到這裡,如果大家在研究學習的過程當中有什麼問題,可以加群進行討論或傳送郵件給我,我會盡我所能為您解答,與君共勉!
另外,博主出新書了《深入理解Hive》、同時已出版的《Kafka並不難學》和《Hadoop大資料探勘從入門到進階實戰》也可以和新書配套使用,喜歡的朋友或同學, 可以在公告欄那裡點選購買連結購買博主的書進行學習,在此感謝大家的支援。關注下面公眾號,根據提示,可免費獲取書籍的教學影片。