Fay數字人如何使用GPT-SOVITS進行TTS轉換以及遇到的一些問題

一、GPT-SoVITS 簡介

GPT-SoVITS 是一款開源的語音合成(TTS)工具,結合了 GPT 模型的文本理解能力與 SoVITS(Sound of Voice In Text-to-Speech)的聲紋模擬技術,能夠實現高自然度、個性化的語音合成。它支持通過少量音頻樣本克隆特定音色,同時具備多語言合成、情感調節等功能,廣泛應用于語音助手、有聲內容創作等場景。用戶可通過網頁界面或 API 接口輸入文本,生成對應語音文件(如 WAV、MP3 等格式)。

二、使用 GPT-SoVITS 進行 TTS 轉換的流程

  1. 環境部署:下載項目源碼,安裝 Python 及相關依賴(如 PyTorch、FastAPI 等),部分版本需配置模型文件(如預訓練 GPT 模型、SoVITS 模型)。這里建議使用整合包,推薦使用V2版本的整合包。可參考https://blog.csdn.net/ergdfhgerty/article/details/149021178文章的內容。GPT-SoVITS 學習和v2版本下載地址為https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e/dkxgpiy9zb96hob4#KTvnO
  2. 啟動服務:項目中的啟動腳本為api_v2.py,啟動本地服務(通常默認端口為 9880)。項目啟動的方法:復制go-webui.bat文件,重命名為api_v2.bat,將代碼修改為如下:
    set "SCRIPT_DIR=%~dp0"
    set "SCRIPT_DIR=%SCRIPT_DIR:~0,-1%"
    cd /d "%SCRIPT_DIR%"
    set "PATH=%SCRIPT_DIR%\runtime;%PATH%"
    runtime\python.exe -I api_v2.py 

    啟動方式為雙擊api_v2.bat文件,但是一定要注意這里面不能傳入參數zh_CN,否則運行不通過,要在api_v2.py文件中指定text_lang和prompt_text的具體類型,如下所示:

    @APP.get("/tts")
    async def tts_get_endpoint(text: str = None,text_lang: str = "zh-CN",ref_audio_path: str = None,aux_ref_audio_paths: list = None,prompt_lang: str = "zh-CN",prompt_text: str = "",top_k: int = 5,top_p: float = 1,temperature: float = 1,text_split_method: str = "cut0",batch_size: int = 1,batch_threshold: float = 0.75,split_bucket: bool = True,speed_factor: float = 1.0,fragment_interval: float = 0.3,seed: int = -1,media_type: str = "wav",streaming_mode: bool = False,parallel_infer: bool = True,repetition_penalty: float = 1.35,sample_steps: int = 32,super_sampling: bool = False,
    ):
  3. API 調用:若通過代碼調用,可使用 FastAPI 提供的接口http://127.0.0.1:9880/tts,傳入文本、語音參數等,獲取合成的音頻數據。
  4. Fay數字人在調用時的設置:首先要在gptsovits_v3.py文件中指定參考音頻,和音頻的文本,注意要修改成正確的音頻路徑,音頻和音頻的文本要對應,同時音頻不能超過10秒,音頻使用格式為Windows PCM的wav如下所示:
    def to_sample(self, text, style) :    url = "http://127.0.0.1:9880/tts"data = {"text": text,                   # str.(required) text to be synthesized"text_lang": "zh",              # str.(required) language of the text to be synthesized"ref_audio_path": "D:/GPT-SoVITS-v2pro-20250604/111.wav",         # str.(required) reference audio path."prompt_text": "迅捷音頻轉換器是一款專業級軟件,集音頻格式轉換、視頻提取音頻、音頻剪輯",            # str.(optional) prompt text for the reference audio"prompt_lang": "zh",            # str.(required) language of the prompt text for the reference audio"top_k": 5,                   # int.(optional) top k sampling"top_p": 1,                   # float.(optional) top p sampling"temperature": 1,             # float.(optional) temperature for sampling"text_split_method": "cut5",  # str.(optional) text split method, see text_segmentation_method.py for details."batch_size": 1,              # int.(optional) batch size for inference"batch_threshold": 0.75,      # float.(optional) threshold for batch splitting."split_bucket": True,         # bool.(optional) whether to split the batch into multiple buckets."speed_factor":1.0,           # float.(optional) control the speed of the synthesized audio."fragment_interval":0.3,      # float.(optional) to control the interval of the audio fragment."seed": -1,                   # int.(optional) random seed for reproducibility."media_type": "wav",          # str.(optional) media type of the output audio, support "wav", "raw", "ogg", "aac"."streaming_mode": False,      # bool.(optional) whether to return a streaming response."parallel_infer": True,       # bool.(optional) whether to use parallel inference."repetition_penalty": 1.35    # float.(optional) repetition penalty for T2S model.}
  5. 這里音頻處理軟件可使用cool edit pro軟件,這是一款專業的音樂編輯軟件,軟件擁有非常強大的功能,幫助用戶進行各種各樣的音頻編輯繪制,玩法多種多樣帶給用戶非常舒適的體驗,下載鏈接:https://www.365xiazai.com/soft/12050.html。

相關參考視頻:

GPT-SoVITS教程6-新增自動選取參考音頻和保存音頻歷史功能

三、API 調用 GPT-SoVITS 相關內容總結

1. 參考教程

B 站教程地址:GPT-SoVITS 教程 5 - 如何調用 API

2. API 調用核心步驟與參數說明
(1)api.py 文件參數解析

文件頂部明確了運行腳本時可傳入的執行參數,主要包括:

  • 模型路徑:-s(SoVITS 模型路徑)、-g(GPT 模型路徑),可在 config.py 中預設;
  • 默認參考音頻參數(調用請求缺少參考音頻時使用):
    • -dr:默認參考音頻路徑;
    • -dt:默認參考音頻文本;
    • -dl:默認參考音頻語種(支持 “中文”“英文”“日文” 及縮寫 “zh”“en”“ja”);
  • 運行配置:
    • -d:推理設備(“cuda” 或 “cpu”);
    • -a:綁定地址(默認 “127.0.0.1”);
    • -p:綁定端口(默認 9880,可在 config.py 中指定);
    • -fp/-hp:覆蓋 config.py 使用全精度 / 半精度推理;
  • 輸出與文本處理:
    • -sm:流式返回模式(默認不啟用,可選 “close”“normal”“keepalive” 及縮寫 “c”“n”“k”);
    • -mt:音頻編碼格式(流式默認 ogg,非流式默認 wav,支持 “wav”“ogg”“aac”);
    • -cp:文本切分符號(默認空,需以 “,.,。” 字符串形式傳入);
  • 模型組件路徑:-hb(cnhubert 路徑)、-b(bert 路徑)。
(2)啟動 API 服務
  • 運行腳本:在終端中執行?python api.py?或?runtime\python.exe api.py,可直接運行(后續推理時指定參數),或啟動時傳入參數(如指定默認參考音頻、設備等)。
  • 驗證啟動:出現網址即代表接口開啟(默認如http://127.0.0.1:9880)。
(3)內網共享設置
  • 獲取本機 IPv4 地址:打開新終端輸入ipconfig,找到 “無線局域網適配器 WLAN” 項下的 IPv4 地址;
  • 替換地址:用 IPv4 地址替換默認網址中的 “0.0.0.0”,同一內網設備可通過該地址調用接口(例如http://10.10.9.169:9880)。
(4)查看 API 文檔

在啟動的網址后添加/docs,即可查看 FastAPI 自動生成的接口文檔(包含請求格式、參數說明等)。

3. 請求格式(GET 與 POST)
(1)使用預設參考音頻
  • GET 請求:
    http://127.0.0.1:9880?text=待合成文本&text_language=語種
    (示例:http://127.0.0.1:9880?text=先帝創業未半而中道崩殂...&text_language=zh
  • POST 請求(JSON 格式):
    {  "text": "待合成文本",  "text_language": "語種"  
    }  
    
(2)使用預設參考音頻并指定分割符號
  • GET 請求:
    http://127.0.0.1:9880?text=待合成文本&text_language=語種&cut_punc=切分符號
    (示例:http://127.0.0.1:9880?text=先帝創業未半...&text_language=zh&cut_punc=,。
  • POST 請求(JSON 格式):
    {  "text": "待合成文本",  "text_language": "語種",  "cut_punc": "切分符號"  
    }  
    
(3)手動指定當次推理的參考音頻
  • GET 請求:
    http://127.0.0.1:9880?refer_wav_path=音頻路徑&prompt_text=參考文本&prompt_language=參考語種&text=待合成文本&text_language=文本語種
    (示例:http://127.0.0.1:9880?refer_wav_path=123.wav&prompt_text=一二三。&prompt_language=zh&text=先帝創業未半...&text_language=zh
  • POST 請求(JSON 格式):
    {  "refer_wav_path": "音頻路徑",  "prompt_text": "參考文本",  "prompt_language": "參考語種",  "text": "待合成文本",  "text_language": "文本語種"  
    }  
    
(4)更換默認參考音頻(endpoint:/change_refer
  • GET 請求:
    http://127.0.0.1:9880/change_refer?refer_wav_path=新音頻路徑&prompt_text=新參考文本&prompt_language=新語種
  • POST 請求(JSON 格式)
    {  "refer_wav_path": "新音頻路徑",  "prompt_text": "新參考文本",  "prompt_language": "新語種"  
    }  
    

4. 響應說明
  • 成功:
    • 合成請求:直接返回音頻流(http code 200);
    • 更換參考音頻請求:返回 JSON(http code 200)。
  • 失敗:返回包含錯誤信息的 JSON(http code 400)。
5. 拓展與改良方案
  • 原生 API 功能不足時,可參考改良版接口:
    • CSDN 博客:《GPT-SoVITS 項目的 API 改良與使用》;
    • 支持動態切換模型和情緒的改良代碼:《針對 GPT-SoVITS 項目的 API 接口改進》(可直接覆蓋原 api.py,新增切換模型、情緒的接口,支持 GET/POST)。

相關參考文章:https://blog.csdn.net/ergdfhgerty/article/details/149021178https://blog.csdn.net/Polo_fang/article/details/140521946

四、常見問題及解決方法(針對 FastAPI 頁面空白問題)

問題:訪問 FastAPI 頁面(如 docs 文檔頁)時顯示空白,鏈接正確但無內容

核心原因:頁面依賴的 CSS 和 JavaScript 資源(通常來自國外 CDN)加載失敗,導致界面無法渲染。

解決方法:
  1. 方法一:使用網絡加速工具

    • 若有 “魔法” 工具(網絡加速工具),開啟后重新訪問頁面,通常可解決 CDN 資源加載問題。
  2. 方法二:安裝?fastapi_cdn_host?庫替換 CDN

    • 步驟 1:安裝庫
      打開終端(CMD 或 PowerShell),進入項目的?runtime\Lib\site-packages?目錄(或項目虛擬環境目錄),執行命令:

      pip install fastapi_cdn_host  
      
      ?

      (注:若項目使用獨立 runtime 環境,需確保庫安裝到該環境的?site-packages?中,而非系統全局 Python 環境。?如果安裝在全局Python環境中,需要把fastapi_cdn_host庫復制到runtime\Lib\sitepackages里,一共有兩個文件夾的內容fastapi_cdn_host和fastapi_cdn_host-0.9.2.dist-info,可以根據文件生成時間確定哪些是需要復制的文件夾,整合包bat運行的環境庫不是主機的,而是runtime里的。

    • 步驟 2:修改代碼
      打開項目中的?api_v2.py?文件,在代碼中添加以下內容:

      • 在文件頂部(約 123 行后)添加導入語句:
        import fastapi_cdn_host  
        

      • 在 FastAPI 實例化后(約 147 行后,通常是?APP = FastAPI(...)?之后)添加:
        fastapi_cdn_host.patch_docs(APP)  
        
    • 步驟 3:重啟服務
      保存文件后,重新運行啟動腳本(雙擊api_v2.bat),再次訪問頁面即可。

  3. 方法三:使用 Steam++ 等工具加速

    • 下載并安裝 Steam++ 工具,啟動后選擇 “加速 Steam 社區” 等模式,利用其網絡加速功能間接解決 CDN 資源加載問題。
  4. 注意事項

    • 若安裝庫后仍無效,需確認?fastapi_cdn_host?已正確放置在項目 runtime 的?site-packages?目錄中(部分整合包的環境獨立,需手動復制或在該目錄下執行安裝命令)。
    • 若上述方法均失敗,可嘗試更換網絡環境(如手機熱點),或檢查防火墻 / 安全軟件是否攔截了資源加載。

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

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

相關文章

HTML 顏色值

HTML 顏色值 引言 在網頁設計和開發中,顏色是一個重要的元素,它能夠幫助用戶更好地理解內容,提升視覺效果。HTML 顏色值是用于指定網頁中元素顏色的一種標準表示方法。本文將詳細介紹 HTML 顏色值的種類、表示方法以及在實際應用中的使用技巧。 HTML 顏色值種類 HTML 顏…

關于記錄一下“bug”,在做圖片上傳的時候出現的小問題

項目場景:之前的話寫過csdn,最近出現了一些小事情,所以耽誤了好久沒有更新,最近把以前的項目拿出來然后改了下環境就出現了一些問題,該項目使用SpringBoot3.5 SpringMVC Mybatis-Plus3.5.0,然后權限控制采…

數據結構:基礎知識和鏈表①

一、概念程序數據結構算法1.描述數據存儲和操作的結構 2.操作數據對象的方法二、衡量代碼的質量和效率 無論代碼操作數據量多大,希望程序代碼的運行時間保持恒定 隨著數據的增長,程序運行時間緩慢增長隨著數據的增長,程序運…

進階向:自動化天氣查詢工具(API調用)

自動化天氣查詢工具(API調用)完全指南天氣數據是日常生活中經常需要查詢的信息之一。本教程將介紹如何使用Python編寫一個自動化天氣查詢工具,通過調用開放的天氣API獲取實時天氣數據。這個工具適合完全不懂編程的新手學習,將從最…

【ROS2】常用命令

1、目錄結構在 ROS 2 包中,launch、urdf、rviz(通常指 RViz 配置文件)、config 等文件夾應直接放在包的根目錄下(與 robot_arm/ Python 模塊目錄同級)。這是 ROS 2 社區的通用約定,便于工具(如 …

基礎組件(三):mysql連接池

文章目錄一、MySQL連接池設計1. 連接池解決了什么問題?連接池的作用 (好處)為什么不創建多條連接而用連接池2. 同步和異步連接池的區別同步連接池(場景局限,應用服務器啟動時初始化資源)異步連接池&#xf…

FI文件包含漏洞

本地文件包含(LFI)文件包含開發人員將可重復使用的內容寫到單個文件中,使用時直接調用此文件,無需再次編寫,這種調用文件的過程一般被稱為文件包含。這樣編寫代碼能減少代碼冗余,降低代碼后期維護難度&…

rapidocr_web v1.0.0發布了

建立RapidOCRWeb獨立倉庫 終于將web這塊代碼移了出來,成立了獨立倉庫RapidOCRWeb (https://github.com/RapidAI/RapidOCRWeb )。這樣以來,RapidOCR倉庫下的各個衍生項目均有自己的獨立倉庫,可以單獨控制發版和維護。這也算是為RapidOCR減負了…

Arduino IDE離線安裝ESP8266板管理工具

文章目錄概要官網地址開發板管理地址安裝ESP8266開發板支持離線安裝額外記錄NODE啟動服務概要 Arduino IDE離線安裝ESP8266板管理工具&#xff0c;在線安裝因為網絡或者https的問題不能安裝 官網地址 Adruino&#xff1a;https://www.arduino.cc/ ESP8266項目&#xff1a;<…

兩款免費數據恢復軟件介紹,Win/Mac均可用

數據已成為我們生活與工作中不可或缺的重要組成部分。無論是珍貴的家庭照片、關鍵的工作文檔&#xff0c;還是重要的學習資料&#xff0c;都以數據的形式存儲在各類設備中。然而&#xff0c;數據丟失的情況卻時常發生&#xff0c;可能是誤操作刪除&#xff0c;可能是設備意外損…

Java開發中敏感信息加密存儲全解析:筑牢數據安全防線

Java開發中敏感信息加密存儲全解析&#xff1a;筑牢數據安全防線 一、引言 1.1 敏感信息存儲的現狀與挑戰 在數字化時代&#xff0c;數據已然成為企業和組織的核心資產之一&#xff0c;而敏感信息的存儲更是重中之重。從日常的用戶登錄密碼、身份證號碼&#xff0c;到金融領域…

list的使用和模擬

(一)list的了解 (1)簡單了解 list的文檔介紹 list是基于雙向鏈表的序列式容器&#xff0c;支持雙向迭代和任意位置的常數時間插入刪除&#xff0c;相比 array、vector 等容器在這類操作上更高效&#xff0c;但不支持隨機訪問&#xff08;訪問需線性遍歷&#xff09;且因額外…

Docker 初學者需要了解的幾個知識點 (五):建容器需要進一步了解的概念

之前在《Docker 初學者需要了解的幾個知識點》幾篇文章里&#xff0c;我們梳理了 Docker 的核心概念&#xff08;如鏡像、容器、網絡等&#xff09;&#xff0c;但在實際搭建 ThinkPHP 容器環境時&#xff0c;又遇到了一些更具體的術語和配置場景。這些內容和實操結合緊密&…

【數據結構】棧的順序存儲(整型棧、字符棧)

【數據結構】棧的順序存儲&#xff08;整型棧、字符棧&#xff09;一、棧的結構定義二、字符棧的初始化、入棧、出棧、判斷是否棧為空、獲取棧頂元素、獲取棧的當前元素個數等操作三、整型棧的初始化、入棧、出棧、判斷是否棧為空、獲取棧頂元素、獲取棧的當前元素個數等操作一…

【大模型實戰】向量數據庫實戰 - Chroma Milvus

在 RAG&#xff08;檢索增強生成&#xff09;場景中&#xff0c;非結構化數據&#xff08;文本、圖像等&#xff09;的高效檢索是核心需求。傳統關系型數據庫難以勝任&#xff0c;而向量數據庫通過將數據轉化為向量、基于相似度快速匹配&#xff0c;成為 RAG 的關鍵支撐。本文聚…

pytorch程序語句固定開銷分析

深入探索PyTorch與Python的性能微觀世界&#xff1a;量化基礎操作的固定開銷 在深度學習的性能優化工作中&#xff0c;開發者通常將目光聚焦于模型結構、算法效率和并行計算策略。然而&#xff0c;在這些宏觀優化的背后&#xff0c;構成我們代碼的每一條基礎語句——無論是PyTo…

ABP VNext + CloudEvents:事件驅動微服務互操作性

ABP VNext CloudEvents&#xff1a;事件驅動微服務互操作性 &#x1f680; &#x1f4da; 目錄ABP VNext CloudEvents&#xff1a;事件驅動微服務互操作性 &#x1f680;一、引言 ??? TL;DR&#x1f4da; 背景與動機&#x1f3d7;? 整體架構圖二、環境準備與依賴安裝 &am…

軟件測試測評公司關于HTTP安全頭配置與測試?

瀏覽器和服務器之間那幾行看不見的HTTP安全頭配置&#xff0c;往往是抵御網絡攻擊的關鍵防線。作為軟件測試測評公司&#xff0c;我們發現超過六成的高危漏洞源于安全頭缺失或誤配。別小看這些響應頭&#xff0c;它們能直接掐斷跨站腳本、點擊劫持、數據嗅探的攻擊路徑。五條命…

Mysql集成技術

目錄 mysql的編譯安裝與部署 1.編譯安裝mysql 2.部署mysql mysql主從復制 什么是mysql主從復制&#xff1f; 1.配置master 2.配置slave 3.存在數據時添加slave2 4.GTID模式 什么是GTID模式&#xff1f; 配置GTID 5.延遲復制 6.慢查詢日志 核心作用 開啟慢查詢日志…

《MySQL進階核心技術剖析(一): 存儲引擎》

目錄 一、存儲引擎 1.1 MySQL體系結構 1.2 存儲引擎介紹 1). 建表時指定存儲引擎 2). 查詢當前數據庫支持的存儲引擎 1.3 存儲引擎特點 1.3.1 InnoDB 1.3.2 MyISAM 1.3.3 Memory 1.3.4 區別及特點 1.4 存儲引擎選擇 一、存儲引擎 1.1 MySQL體系結構 1). 連接層 最上…