【語音合成技術 - GPT-SoVITS】如何微調模型

【語音合成技術 - GPT-SoVITS】如何微調模型

更新於 發佈於 閱讀時間約 6 分鐘
raw-image


精彩回顧


以上是我們過往分享過關於 https://github.com/RVC-Boss/GPT-SoVITS 的分享文章, 這次我們要來試試finetune模型的章節, 為什麼需要finetune? 因為我們希望機器講出來的話不是生硬的, 而是像人類那麼自然的發音, 因此會需要一些些模型上的微調, 那我們就實際來操演一下。


事前準備作業

我們會需要事先下載模型並掛載, 這會讓我們後續的訓練流程更加順利, 分別有以下步驟:

  1. 下載funasr模型。
  2. 下載pretrained模型。
# 建立iic目錄(funasr固定從iic目錄找模型)
mkdir iic

# 下載ASR模型
git clone <https://www.modelscope.cn/iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch.git>

# 下載VAD模型
git clone <https://www.modelscope.cn/iic/speech_fsmn_vad_zh-cn-16k-common-pytorch.git>

# 下載Punc模型
git clone <https://www.modelscope.cn/iic/punc_ct-transformer_zh-cn-common-vocab272727-pytorch.git>

# 下載pretrained_models 模型
git clone <https://huggingface.co/lj1995/GPT-SoVITS> pretrained_models


模型資源參考: Damo ASR ModelDamo VAD Model, and Damo Punc Model



接著我們重新掛載一下iic目錄

services:
gpt-sovits-webui:
...
volumes:
- ./output:/workspace/output
- ./logs:/workspace/logs
- ./SoVITS_weights:/workspace/SoVITS_weights
- ./GPT_weights:/workspace/GPT_weights
- ./reference:/workspace/reference
- ./iic:/workspace/iic
- ./iic/pretrained_models:/workspace/GPT_SoVITS/pretrained_models



raw-image


接著重啟一下服務

docker compose down -v && docker compose up -d



開啟UVR5進行人聲分離

首先我們透過 http://localhost:9874/ 進入到入口網站, 並勾選 Open UVR5-WebUI


如果沒有自動彈跳, 請另外開啟 http://localhost:9873/, 開啟之後我們可以上傳一段1分鐘左右的音檔來進行finetune, 模型的部份我們可以選擇HP3, 官方有提到, HP3保留人聲的效果稍比HP2好。

raw-image


好了, 配置完成後我們按下Convert的轉換按鈕, 轉換完畢之後我們可以在相對應目錄找到純人聲的檔案。


進行音檔切割

分離完人聲之後, 我們回到 http://localhost:9874/ 來進行音檔切割動作。

raw-image



切割完畢之後我們可以看到設定的輸出目錄會有以下許多段落檔案:

raw-image


以ASR進行文字標注

進入到 http://localhost:9874/ 並進行ASR標註功能

raw-image



檢視標註結果

打開 Open labelling WebUI 頁面。

raw-image


進到 http://localhost:9871/ 可以看到標註結果, 這邊可以邊聽邊校驗。

raw-image


製作資料集

回到 http://localhost:9874/ 並切換到 1-GPT-SOVITS-TTS 並填入相關參數, 最後按下 Start one-click formatting。

raw-image



💡 這個步驟等待有點久的原因是我們的模型都是動態下載, 建議您可以先行下載模型並掛載, 步驟如同「以ASR進行文字標注」的步驟, 請自行設定, 如果遇到任何問題歡迎留言給我, 在認知範圍內必進行回覆。


進行微調 Finetune

切到 fune-tune頁面並直接訓練看看效果。

raw-image



這邊UI的部份不會自動停止, 因此建議可以搭配後端進行查看。

docker compose logs -f



換上新模型並進行推理

如果沒有自動彈跳請自行開啟: http://localhost:9872

raw-image


恭喜您! 調整出接近人類講話的TTS了, 不妨自行動手玩玩看, 相信會非常有成就感!

raw-image


結語

https://github.com/RVC-Boss/GPT-SoVITS 真的是一個非常好用的TTS程式, 透過簡易的UI就能夠自行調出客製化的聲音, 讓我們在打造智能語音機器人時能夠更容易進行整合。

avatar-img
阿Han的沙龍
125會員
280內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言
avatar-img
留言分享你的想法!
阿Han的沙龍 的其他內容
建議閱讀 在開始之前, 建議您先閱讀以下篇章, 相信當您開始大量使用Airflow作業時, 難免會需要儲存空間的方案, 像是今天的主角minio就是其中之一, 而我們會建議您先閱讀相關篇章也是有道理的, 因為我們推薦的方法是盡量以容器化為導向來進行Airflow自動化流程的作業, 避免干擾到主機的
我們在「【語音合成技術 - GPT-SoVITS】讓機器說人話的語音生成服務」介紹過如何透過docker啟動webui版的TTS服務器, 但假設我們想自行開發一個TTS服務, 並整合到系統裡面, 通常會需要一個傳輸介面來溝通, 而API就是最簡易的溝通方式, 正巧 ****GPT-SoVITS **
今天要分享的主題是關於「語音合成技術 - TTS」一款好用的開源軟體, 名為「GPT-SoVITS」, 它具有以下的特點: 零樣本(Zero Shot): 只需要五秒鐘的語音樣本就能即時文字轉語音。 少量樣本(Few Shot): 只要1分鐘樣本就能提高語音相似度及真實感。 跨語言: 日語
當我們架設好Docker環境, 並撰寫一個DAG為Docker Operator的關卡時, 執行後竟然出現以下錯誤: raise AirflowException("Failed to establish connection to any given Docker hosts.") air
當我們在訓練各種模型時, 難免會有許多實驗性的參數、產出的模型、不同的資料來源, 隨著版本迭代越來越多, 過了一段時間回頭看之後卻發現當初最好的某一個實驗參數到底是啥啊? 模型去了哪裡? 用的數據集是哪些? 我想上述這些問題都是模型訓練的過程難免會遇到的問題, 除非我們有一套管理的SOP, 比
我們在「【語音辨識引擎sherpa-onnx GPU下篇】讓您體驗更快的語音辨識功能」建置環境的過程中預到了這樣的錯誤訊息: RuntimeError: /onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc: 1209
建議閱讀 在開始之前, 建議您先閱讀以下篇章, 相信當您開始大量使用Airflow作業時, 難免會需要儲存空間的方案, 像是今天的主角minio就是其中之一, 而我們會建議您先閱讀相關篇章也是有道理的, 因為我們推薦的方法是盡量以容器化為導向來進行Airflow自動化流程的作業, 避免干擾到主機的
我們在「【語音合成技術 - GPT-SoVITS】讓機器說人話的語音生成服務」介紹過如何透過docker啟動webui版的TTS服務器, 但假設我們想自行開發一個TTS服務, 並整合到系統裡面, 通常會需要一個傳輸介面來溝通, 而API就是最簡易的溝通方式, 正巧 ****GPT-SoVITS **
今天要分享的主題是關於「語音合成技術 - TTS」一款好用的開源軟體, 名為「GPT-SoVITS」, 它具有以下的特點: 零樣本(Zero Shot): 只需要五秒鐘的語音樣本就能即時文字轉語音。 少量樣本(Few Shot): 只要1分鐘樣本就能提高語音相似度及真實感。 跨語言: 日語
當我們架設好Docker環境, 並撰寫一個DAG為Docker Operator的關卡時, 執行後竟然出現以下錯誤: raise AirflowException("Failed to establish connection to any given Docker hosts.") air
當我們在訓練各種模型時, 難免會有許多實驗性的參數、產出的模型、不同的資料來源, 隨著版本迭代越來越多, 過了一段時間回頭看之後卻發現當初最好的某一個實驗參數到底是啥啊? 模型去了哪裡? 用的數據集是哪些? 我想上述這些問題都是模型訓練的過程難免會遇到的問題, 除非我們有一套管理的SOP, 比
我們在「【語音辨識引擎sherpa-onnx GPU下篇】讓您體驗更快的語音辨識功能」建置環境的過程中預到了這樣的錯誤訊息: RuntimeError: /onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc: 1209