感谢拥抱的脸!
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组