感謝擁抱的臉!
COLAB筆記本
請注意,不同的ID可能支持不同的語言。
https://artrajz-vits-simple-api.hf.space/voice/vits?text=你好,こんにちは&id=164https://artrajz-vits-simple-api.hf.space/voice/vits?text=Difficult the first time, easy the second.&id=4https://artrajz-vits-simple-api.hf.space/voice/w2v2-vits?text=こんにちは&id=3&emotion=111https://artrajz-vits-simple-api.hf.space/w2v2-vits?text=こんにちは&id=3&emotion=2077有兩個部署選項可供選擇。無論您選擇哪種選項,部署後都需要導入該模型以使用該應用程序。
運行以下命令以拉出Docker映像。按照腳本中的提示選擇下載必要的文件並提取圖像:
bash -c " $( wget -O- https://raw.githubusercontent.com/Artrajz/vits-simple-api/main/vits-simple-api-installer-latest.sh ) "項目配置文件和模型文件夾的默認路徑是/usr/local/vits-simple-api/ 。
運行以下命令以啟動容器:
docker-compose up -d要更新圖像,請運行以下命令:
docker-compose pull然後,重新啟動容器:
docker-compose up -d使用以下命令克隆項目存儲庫:
git clone https://github.com/Artrajz/vits-simple-api.git建議將使用Python 3.10的虛擬環境用於此項目。運行以下命令以安裝項目所需的python依賴性:
如果您遇到安裝某些依賴關係的問題,請參閱下面概述的常見問題。
pip install -r requirements.txt運行以下命令啟動程序:
python app.py轉到發布頁面並下載最新的部署軟件包。提取下載的文件。
運行start.bat啟動程序。
下載VITS模型文件並將其放置在data/models文件夾中。
從0.6.6版本開始,默認行為可以自動在data/models文件夾中加載所有模型,從而使初學者更容易使用。
初始啟動後,將生成一個config.yaml配置文件。您需要將tts_config.auto_load更改為false ,以啟用手動加載模式。
您可以在config.yaml中修改tts_config.models ,或在瀏覽器中的管理面板中進行修改。
注意:版本0.6.6之後,已修改了模型加載路徑。請按照以下步驟再次配置模型路徑!
該路徑可以是絕對路徑或相對路徑。如果是相對路徑,則從項目根目錄中的data/models夾開始。
例如,如果data/models文件夾具有以下文件:
├─model1
│ │─G_1000.pth
│ └─config.json
└─model2
│─G_1000.pth
└─config.json
在YAML文件中填寫這樣的配置:
tts_config :
auto_load : false
models :
- config_path : model1/config.json
model_path : model1/G_1000.pth
- config_path : model2/config.json
model_path : model2/G_1000.pth
# GPT-SoVITS
- sovits_path : gpt_sovits1/model1_e8_s11536.pth
gpt_path : gpt_sovits1/model1-e15.ckpt
- sovits_path : gpt_sovits2/model2_e8_s11536.pth
gpt_path : gpt_sovits2/model2-e15.ckpt通過管理面板加載模型很方便,但是如果要在data/models文件夾之外加載模型,則只能通過修改config.yaml配置文件來進行。該方法是直接提供絕對路徑。
絕對路徑示例:
tts_config :
auto_load : false
models :
- config_path : D://model3/config.json
model_path : D://model3/G_1000.pth下載BERT模型和情感模型後,將它們分別放入data/bert和data/emotional文件夾中。找到相應的名稱並相應地插入。
檢查圖形卡支持的最高版本的CUDA:
nvidia-smi
以Cuda 11.7為例,從官方網站下載
https://pytorch.org/
pip install torch --index-url https://download.pytorch.org/whl/cu118
安裝過程相似,但我沒有測試環境。
http://127.0.0.0.1:23456
*端口在端口23456的默認設置下進行修改。
默認地址是http://127.0.0.1:23456/admin。
可以通過在第一個啟動之後在config.yaml文件中搜索“ admin”來找到初始的用戶名和密碼。
管理員後端允許加載和卸載模型,並且在具有登錄身份驗證時,為了增加安全性,您可以在config.yaml中禁用管理員的後端:
' IS_ADMIN_ENABLED ' : !!bool 'false'當使管理員後端無法訪問公共網絡時,此額外措施有助於確保絕對安全。
從Bert-Vits2 v2.0開始,一個模型需要加載三種不同的語言BERT模型。如果您只需要使用一種或兩種語言,則可以在模型數據部分的config.json文件中添加lang參數。值["zh"]表示該模型僅使用中文並將加載中文模型。值["zh", "ja"]表示使用中國和日本雙語模型,並且只有中國和日本的BERT模型才會加載。同樣,對於其他語言組合,這種模式仍在繼續。
例子:
"data" : {
"lang" : [ " zh " , " ja " ],
"training_files" : " filelists/train.list " ,
"validation_files" : " filelists/val.list " ,
"max_wav_value" : 32768.0 ,
... 如果您遇到了多相字符發音不正確的問題,則可以嘗試使用以下方法來解決它。
在data目錄中創建並打開thrases_dict.txt,以添加多形單詞。
{
"一骑当千" : [[ "yí" ], [ "jì" ], [ "dāng" ], [ "qiān" ]],
}在config.yaml文件中查找GPT-Sovits的配置。在“預設”部分下添加預設。可以添加多個預設,其中鍵用作預設名稱。以下是兩個默認預設,默認和默認設備2:
gpt_sovits_config:
hz: 50
is_half: false
id: 0
lang: auto
format: wav
segment_size: 50
presets:
default:
refer_wav_path: null
prompt_text: null
prompt_lang: auto
default2:
refer_wav_path: null
prompt_text: null
prompt_lang: auto
在Legado進行了測試
多種模型可用於閱讀,包括VIT,BERT-VITS2,GPT-SOVITS。參數以引號in配置文本的揚聲器開頭,而參數以nr開頭配置敘述者。
要使用GPT-sovits,有必要在config.yaml文件的presets部分中配置參考音頻,並在下面的URL中修改預設。
在啟動API之後,可以找到URL中的IP,通常使用局部網絡IP從192.168開始。
修改後,選擇閱讀引擎,添加閱讀引擎,粘貼源並啟用閱讀引擎。
{
"concurrentRate" : "1" ,
"contentType" : "audio/wav" ,
"enabledCookieJar" : false ,
"header" : "" ,
"id" : 1709643305070 ,
"lastUpdateTime" : 1709821070082 ,
"loginCheckJs" : "" ,
"loginUi" : "" ,
"loginUrl" : "" ,
"name" : "vits-simple-api" ,
"url" : "http://192.168.xxx.xxx:23456/voice/reading?text={{java.encodeURI(speakText)}}&in_model_type=GPT-SOVITS&in_id=0&in_preset=default&nr_model_type=BERT-VITS2&nr_id=0&nr_preset=default&format=wav&lang=zh"
}為了確保與Bert-Vits2模型的兼容性,請通過添加版本參數“版本”:“ XXX”來修改Config.json文件。例如,如果模型版本為1.0.1,則應將配置文件寫為:
{
"version" : " 1.0.1 " ,
"train" : {
"log_interval" : 10 ,
"eval_interval" : 100 ,
"seed" : 52 ,
...請注意,對於中文額外版本,該版本應更改為extra或zh-clap ,對於額外的修復版本,該版本應為2.4或extra-fix 。
獲取http://127.0.0.0.1:23456/voice/speakers
將角色ID的映射表返回到揚聲器名稱中。
獲取http://127.0.0.1:23456/voice/vits?text=Text
當未指定其他參數時,使用默認值。
獲取http://127.0.0.0.1:23456/voice/vits?text = [zh]
當lang =混合時,文本需要註釋。
獲取http://127.0.0.1:23456/voice/vits?text = text&id=142&format = wav&lang = zh&lang = zh&length = 1.4
文本是“文本”,角色ID為142,音頻格式為wav,文本語言為zh,語音長度為1.4,其他參數為默認值。
api_test.py 設置api_key_enabled: true in config.yaml中以啟用API密鑰身份驗證。 API鍵是api_key: api-key 。啟用它後,您需要在獲取請求中添加api_key參數,並在標題中添加X-API-KEY參數以供郵政請求。
| 姓名 | 範圍 | 是必須的 | 預設 | 類型 | 操作說明 |
|---|---|---|---|---|---|
| 綜合文本 | 文字 | 真的 | str | 語音綜合所需的文字。 | |
| 揚聲器ID | ID | 錯誤的 | 來自config.yaml | int | 揚聲器ID。 |
| 音頻格式 | 格式 | 錯誤的 | 來自config.yaml | str | 支持WAV,OGG,絲,MP3,Flac |
| 文字語言 | 朗 | 錯誤的 | 來自config.yaml | str | 文本的語言要合成。可用的選項包括自動,ZH,JA和Mix。當lang =混合時,文本應包裹在[zh]或[ja]中。默認模式是自動的,該模式自動檢測文本的語言 |
| 音頻長度 | 長度 | 錯誤的 | 來自config.yaml | 漂浮 | 調整綜合語音的長度,這等同於調整語音速度。值越大,速度就慢了。 |
| 噪音 | 噪音 | 錯誤的 | 來自config.yaml | 漂浮 | 樣品噪聲,控制合成的隨機性。 |
| SDP噪聲 | Noisew | 錯誤的 | 來自config.yaml | 漂浮 | 隨機持續時間預測噪聲,控制音素發音的長度。 |
| 段尺寸 | segment_size | 錯誤的 | 來自config.yaml | int | 根據標點符號將文本分為段落,並在長度超過semgent_size時將其合併為一個段落。如果segment_size <= 0,則文本不會分為段落。 |
| 流響應 | 流 | 錯誤的 | 錯誤的 | 布爾 | 流的綜合語音具有更快的初始響應。 |
| 姓名 | 範圍 | 是必須的 | 預設 | 類型 | 操作說明 |
|---|---|---|---|---|---|
| 上傳音頻 | 上傳 | 真的 | 文件 | 要上傳的音頻文件。它應該在wav或ogg中 | |
| 源角色ID | 原始_id | 真的 | int | 該角色的ID用於上傳音頻文件。 | |
| 目標角色ID | target_id | 真的 | int | 目標角色的ID將音頻轉換為。 |
| 姓名 | 範圍 | 是必須的 | 預設 | 類型 | 操作說明 |
|---|---|---|---|---|---|
| 上傳音頻 | 上傳 | 真的 | 文件 | 要上傳的音頻文件。它應該是WAV或OGG格式。 | |
| 目標揚聲器ID | ID | 真的 | int | 目標揚聲器ID。 | |
| 音頻格式 | 格式 | 真的 | str | wav,ogg,絲綢 | |
| 音頻長度 | 長度 | 真的 | 漂浮 | 調整綜合語音的長度,這等同於調整語音速度。值越大,速度就慢了。 | |
| 噪音 | 噪音 | 真的 | 漂浮 | 樣品噪聲,控制合成的隨機性。 | |
| SDP噪聲 | Noisew | 真的 | 漂浮 | 隨機持續時間預測噪聲,控制音素發音的長度。 |
| 姓名 | 範圍 | 是必須的 | 預設 | 類型 | 操作說明 |
|---|---|---|---|---|---|
| 綜合文本 | 文字 | 真的 | str | 語音綜合所需的文字。 | |
| 揚聲器ID | ID | 錯誤的 | 來自config.yaml | int | 揚聲器ID。 |
| 音頻格式 | 格式 | 錯誤的 | 來自config.yaml | str | 支持WAV,OGG,絲,MP3,Flac |
| 文字語言 | 朗 | 錯誤的 | 來自config.yaml | str | 文本的語言要合成。可用的選項包括自動,ZH,JA和Mix。當lang =混合時,文本應包裹在[zh]或[ja]中。默認模式是自動的,該模式自動檢測文本的語言 |
| 音頻長度 | 長度 | 錯誤的 | 來自config.yaml | 漂浮 | 調整綜合語音的長度,這等同於調整語音速度。值越大,速度就慢了。 |
| 噪音 | 噪音 | 錯誤的 | 來自config.yaml | 漂浮 | 樣品噪聲,控制合成的隨機性。 |
| SDP噪聲 | Noisew | 錯誤的 | 來自config.yaml | 漂浮 | 隨機持續時間預測噪聲,控制音素發音的長度。 |
| 段尺寸 | segment_size | 錯誤的 | 來自config.yaml | int | 根據標點符號將文本分為段落,並在長度超過semgent_size時將其合併為一個段落。如果segment_size <= 0,則文本不會分為段落。 |
| 維度情緒 | 情感 | 錯誤的 | 0 | int | 該範圍取決於NPY格式的情感參考文件,例如Innnky模型all_emotions.npy的範圍,即0-5457。 |
| 姓名 | 範圍 | 是必須的 | 預設 | 類型 | 操作說明 |
|---|---|---|---|---|---|
| 上傳音頻 | 上傳 | 真的 | 文件 | 返回存儲尺寸情感向量的NPY文件。 |
| 姓名 | 範圍 | 是必須的 | 預設 | 類型 | 操作說明 |
|---|---|---|---|---|---|
| 綜合文本 | 文字 | 真的 | str | 語音綜合所需的文字。 | |
| 揚聲器ID | ID | 錯誤的 | 來自config.yaml | int | 揚聲器ID。 |
| 音頻格式 | 格式 | 錯誤的 | 來自config.yaml | str | 支持WAV,OGG,絲,MP3,Flac |
| 文字語言 | 朗 | 錯誤的 | 來自config.yaml | str | “自動”是一種自動語言檢測的模式,也是默認模式。但是,目前僅支持檢測整個文本段落的語言,並且無法以每句話方式區分語言。其他可用的語言選項是“ ZH”和“ JA”。 |
| 音頻長度 | 長度 | 錯誤的 | 來自config.yaml | 漂浮 | 調整綜合語音的長度,這等同於調整語音速度。值越大,速度就慢了。 |
| 噪音 | 噪音 | 錯誤的 | 來自config.yaml | 漂浮 | 樣品噪聲,控制合成的隨機性。 |
| SDP噪聲 | Noisew | 錯誤的 | 來自config.yaml | 漂浮 | 隨機持續時間預測噪聲,控制音素發音的長度。 |
| 段尺寸 | segment_size | 錯誤的 | 來自config.yaml | int | 根據標點符號將文本分為段落,並在長度超過semgent_size時將其合併為一個段落。如果segment_size <= 0,則文本不會分為段落。 |
| SDP/DP混合比 | sdp_ratio | 錯誤的 | 來自config.yaml | int | SDP在合成過程中的理論比例越高,比率越高,合成語音的方差越大。 |
| 情感 | 情感 | 錯誤的 | 來自config.yaml | int | 可用於bert-vits2 v2.1,範圍從0到9 |
| 情感參考音頻 | Reference_audio | 錯誤的 | 沒有任何 | bert-vits2 v2.1使用參考音頻來控制綜合音頻的情緒 | |
| 文本提示 | text_prompt | 錯誤的 | 來自config.yaml | str | bert-vits2 v2.2文本提示用於情緒控制 |
| 樣式文字 | style_text | 錯誤的 | 來自config.yaml | str | bert-vits2 v2.3文本提示用於情緒控制 |
| 樣式文字重量 | style_weight | 錯誤的 | 來自config.yaml | 漂浮 | bert-vits2 v2.3文本提示權重,用於及時加權 |
| 流響應 | 流 | 錯誤的 | 錯誤的 | 布爾 | 流的綜合語音具有更快的初始響應。 |
| 姓名 | 範圍 | 是必須的 | 預設 | 類型 | 操作說明 |
|---|---|---|---|---|---|
| 綜合文本 | 文字 | 真的 | str | 語音綜合所需的文字。 | |
| 揚聲器ID | ID | 錯誤的 | 來自config.yaml | int | 揚聲器ID。在GPT-Sovits中,每個型號都用作揚聲器ID,並且語音通過參考音頻預設進行切換。 |
| 音頻格式 | 格式 | 錯誤的 | 來自config.yaml | str | 支持WAV,OGG,絲,MP3,FLAC |
| 文字語言 | 朗 | 錯誤的 | 來自config.yaml | str | “自動”是自動語言檢測模式,它也是默認模式。但是,它目前僅支持識別整個文本段落的語言,並且無法區分每個句子。 |
| 參考音頻 | Reference_audio | 錯誤的 | 沒有任何 | 需要Reference_audio,但可以用預設代替。 | |
| 參考音頻文本 | 提示_text | 錯誤的 | 來自config.yaml | 漂浮 | 需要與參考音頻的實際文本保持一致。 |
| 參考音頻語言 | 提示_lang | 錯誤的 | 來自config.yaml | str | 默認為自動文本語言識別。如果識別失敗,請手動填寫,ZH,for Chinese,JA for Japanese,EN英語。 |
| 參考音頻預設 | 預設 | 錯誤的 | 預設 | str | 用預設預設替換參考音頻,可以設置多個預設。 |
支持的元素和屬性
speak元素
| 屬性 | 操作說明 | 是必須的 |
|---|---|---|
| ID | 默認值是從config.yaml檢索的 | 錯誤的 |
| 朗 | 默認值是從config.yaml檢索的 | 錯誤的 |
| 長度 | 默認值是從config.yaml檢索的 | 錯誤的 |
| 噪音 | 默認值是從config.yaml檢索的 | 錯誤的 |
| Noisew | 默認值是從config.yaml檢索的 | 錯誤的 |
| segment_size | 根據標點符號將文本分成細分。當段長度的總和超過segment_size時,將其視為一個段。 segment_size<=0表示無分段。默認值為0。 | 錯誤的 |
| model_type | 默認值為VIT。選項:w2v2-vits,bert-vits2 | 錯誤的 |
| 情感 | 僅在使用W2V2-VIT時有效。範圍取決於NPY情緒參考文件。 | 錯誤的 |
| sdp_ratio | 僅在使用bert-vits2時有效。 | 錯誤的 |
voice元素
優先級比speak要高。
| 屬性 | 操作說明 | 是必須的 |
|---|---|---|
| ID | 默認值是從config.yaml檢索的 | 錯誤的 |
| 朗 | 默認值是從config.yaml檢索的 | 錯誤的 |
| 長度 | 默認值是從config.yaml檢索的 | 錯誤的 |
| 噪音 | 默認值是從config.yaml檢索的 | 錯誤的 |
| Noisew | 默認值是從config.yaml檢索的 | 錯誤的 |
| segment_size | 根據標點符號將文本分成細分。當段長度的總和超過segment_size時,將其視為一個段。 segment_size<=0表示無分段。默認值為0。 | 錯誤的 |
| model_type | 默認值為VIT。選項:w2v2-vits,bert-vits2 | 錯誤的 |
| 情感 | 僅在使用W2V2-VIT時有效。範圍取決於NPY情緒參考文件。 | 錯誤的 |
| sdp_ratio | 僅在使用bert-vits2時有效。 | 錯誤的 |
break元素
| 屬性 | 操作說明 | 是必須的 |
|---|---|---|
| 力量 | X弱,弱,中等(默認),強,X-Strong | 錯誤的 |
| 時間 | 在幾秒鐘內(例如2s )或毫秒(例如500ms )暫停的絕對持續時間。有效值範圍為0到5000毫秒。如果設置一個大於受支持的最大值的值,則該服務將使用5000ms 。如果設置了time屬性,則strength屬性將被忽略。 | 錯誤的 |
| 力量 | 相對持續時間 |
|---|---|
| X弱 | 250毫秒 |
| 虛弱的 | 500毫秒 |
| 中等的 | 750毫秒 |
| 強的 | 1000毫秒 |
| X-Strong | 1250毫秒 |
| 姓名 | 範圍 | 是必須的 | 預設 | 類型 | 操作說明 |
|---|---|---|---|---|---|
| 綜合文本 | 文字 | 真的 | str | 要合成的文本。 | |
| 對話者模型類型 | in_model_type | 錯誤的 | 從config.yaml獲得 | str | |
| 對話者ID | in_id | 錯誤的 | 從config.yaml獲得 | int | |
| 對話者參考音頻預設 | 預設 | 錯誤的 | 預設 | str | 用預設設置替換參考音頻,可以提前設置為多個預設。 |
| 敘述者模型類型 | nr_model_type | 錯誤的 | 從config.yaml獲得 | str | |
| 敘述者ID | nr_id | 錯誤的 | 從config.yaml獲得 | int | |
| 敘述者參考音頻預設 | 預設 | 錯誤的 | 預設 | str | 用預設設置替換參考音頻,可以提前設置為多個預設。 |
| 音頻格式 | 格式 | 錯誤的 | 從config.yaml獲得 | str | 支持WAV,OGG,絲,MP3,FLAC |
| 文字語言 | 朗 | 錯誤的 | 從config.yaml獲得 | str | 自動語言檢測模式的“自動”,這也是默認模式。但是,目前,它僅支持識別整個文本的語言,並且無法區分每個句子。 |
| 參考音頻預設 | 預設 | 錯誤的 | 預設 | str | 用預設設置替換參考音頻,可以提前設置為多個預設。 |
模型的其他參數將使用config.yaml文件中相應模型的默認參數。
請參閱api_test.py
學習和溝通,現在只有中國QQ組