Спасибо обнимающемуся лицу!
Колаб ноутбук
Обратите внимание, что разные идентификаторы могут поддерживать разные языки. Speakers
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 , чтобы включить ручной режим загрузки.
Вы можете изменить tts_config.models в config.yaml или внести изменения на панели администратора в браузере.
Примечание. После версии 0.6.6 путь загрузки модели был изменен. Пожалуйста, следуйте приведенным ниже шагам, чтобы снова настроить путь модели!
Путь может быть абсолютным путем или относительным путем. Если это относительный путь, он начинается с папки data/models в каталоге Project Root.
Например, если папка 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.1:23456
*Порт модифицируется в соответствии с настройкой по умолчанию порта 23456.
Адрес по умолчанию http://127.0.0.1:23456/admin.
Первоначальное имя пользователя и пароль можно найти путем поиска «администратора» в файле config.yaml после первого запуска.
Бэкэнд администратора позволяет загружать и разгружать модели, и, хотя он имеет аутентификацию входа в систему, для дополнительной безопасности вы можете отключить бэкэнд администратора в config.yaml :
' IS_ADMIN_ENABLED ' : !!bool 'false'Эта дополнительная мера помогает обеспечить абсолютную безопасность при создании бэкэнда администратора недоступной для публичной сети.
Начиная с Bert-Vits2 v2.0, модель требует загрузки трех различных языковых моделей BERT. Если вам нужно использовать только один или два языка, вы можете добавить параметр lang в файл config.json в разделе данных модели. Значение ["zh"] указывает, что модель использует только китайский и будет загружать китайские модели BERT. Значение ["zh", "ja"] указывает на использование как китайских, так и японских двуязычных моделей, и будут загружены только китайские и японские модели BERT. Точно так же эта модель продолжается для других языковых комбинаций.
Пример:
"data" : {
"lang" : [ " zh " , " ja " ],
"training_files" : " filelists/train.list " ,
"validation_files" : " filelists/val.list " ,
"max_wav_value" : 32768.0 ,
... Если вы сталкиваетесь с проблемами с неправильным произношением полифонических символов, вы можете попытаться разрешить его, используя следующий метод.
Создать и открыть фразы_dict.txt в каталоге data , чтобы добавить полифонические слова.
{
"一骑当千" : [[ "yí" ], [ "jì" ], [ "dāng" ], [ "qiān" ]],
}Найдите конфигурацию для GPT-Sovits в файле config.yaml. Добавьте предустановки в разделе пресетов. Могут быть добавлены несколько пресетов, с ключами, служащими в качестве предустановленных имен. Ниже приведены две предустановки по умолчанию, по умолчанию и по умолчанию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
Протестировано в Легадо
Для чтения можно использовать несколько моделей, включая VIT, Bert-Vits2, GPT-Sovits. Параметры, начинающиеся in настройки динамика текста в кавычках, а параметры, начинающиеся с nr настраивают рассказчик.
Чтобы использовать GPT-Sovits, необходимо заранее настроить эталонный звук в разделе presets в файле config.yaml и изменить предустановку в URL-адресу ниже.
IP в URL может быть найдена после запуска API, как правило, используя 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, измените файл config.json, добавив параметр версии «версия»: «XXX». Например, если версия модели составляет 1.0.1, файл конфигурации должен быть записан как:
{
"version" : " 1.0.1 " ,
"train" : {
"log_interval" : 10 ,
"eval_interval" : 100 ,
"seed" : 52 ,
... Обратите внимание, что для китайской дополнительной версии версия должна быть изменена на extra или zh-clap , а для дополнительной версии Fix версия должна быть 2.4 или extra-fix .
Получите http://127.0.0.1:23456/voice/speakers
Возвращает таблицу отображения идентификаторов ролей на имена говорящих.
Получите http://127.0.0.1:23456/voice/vits?text=text
Значения по умолчанию используются, когда другие параметры не указаны.
Получите http://127.0.0.1:23456/voice/vits?text=*
Когда lang = mix, текст должен быть аннотирован.
Получите http://127.0.0.1:23456/voice/vits?text=text&id=142&format=wav&lang=zh&length=1.4
Текст - «текст», идентификатор роли составляет 142, аудиоформат - это wav, текстовый язык - ZH, длина речи составляет 1,4, а другие параметры - по умолчанию.
api_test.py Установите api_key_enabled: true in config.yaml чтобы включить аутентификацию клавиши API. Ключ API- api_key: api-key . После того, как он включил, вам необходимо добавить параметр api_key в запросы get и добавить параметр X-API-KEY в заголовок для запросов POST.
| Имя | Параметр | Обязан | По умолчанию | Тип | Инструкция |
|---|---|---|---|---|---|
| Синтезированный текст | текст | истинный | стр | Текст, необходимый для синтеза голоса. | |
| Идентификатор спикера | идентификатор | ЛОЖЬ | От config.yaml | инт | Идентификатор динамика. |
| Аудио формат | формат | ЛОЖЬ | От config.yaml | стр | Поддержка WAV, OGG, Silk, MP3, FLAC |
| Текстовый язык | ланг | ЛОЖЬ | От config.yaml | стр | Язык текста должен быть синтезирован. Доступные варианты включают Auto, ZH, JA и Mix. Когда LANG = MIX, текст должен быть завернут в [ZH] или [JA]. Режим по умолчанию - AUTO, который автоматически обнаруживает язык текста |
| Длина звука | длина | ЛОЖЬ | От config.yaml | плавать | Регулирует длину синтезированной речи, которая эквивалентна регулировке скорости речи. Чем больше значение, тем медленнее скорость. |
| Шум | шум | ЛОЖЬ | От config.yaml | плавать | Образец шума, контролируя случайность синтеза. |
| Шум SDP | шумоподавление | ЛОЖЬ | От config.yaml | плавать | Стохастическая продолжительность предиктора шума, контролируя длину произношения фонем. |
| Размер сегмента | segment_size | ЛОЖЬ | От config.yaml | инт | Разделите текст на параграфы на основе знаков препинания и объедините их в один абзац, когда длина превышает segment_size. Если segment_size <= 0, текст не будет разделен на параграфы. |
| Потоковой ответ | потоковая передача | ЛОЖЬ | ЛОЖЬ | буль | Стоированная синтезированная речь с более быстрым начальным ответом. |
| Имя | Параметр | Обязан | По умолчанию | Тип | Инструкция |
|---|---|---|---|---|---|
| Загружено аудио | загрузить | истинный | файл | Аудиофайл будет загружен. Это должно быть в wav или ogg | |
| Идентификация роли источника | Original_id | истинный | инт | Идентификатор роли, используемой для загрузки аудиофайла. | |
| Целевая роль идентификатора | target_id | истинный | инт | Идентификатор целевой роли для преобразования звука в. |
| Имя | Параметр | Обязан | По умолчанию | Тип | Инструкция |
|---|---|---|---|---|---|
| Загружено аудио | загрузить | истинный | файл | Аудиофайл будет загружен. Это должно быть в формате WAV или OGG. | |
| Целевой динамик идентификатор | идентификатор | истинный | инт | Целевой динамик идентификатор. | |
| Аудио формат | формат | истинный | стр | Wav, Ogg, шелк | |
| Длина звука | длина | истинный | плавать | Регулирует длину синтезированной речи, которая эквивалентна регулировке скорости речи. Чем больше значение, тем медленнее скорость. | |
| Шум | шум | истинный | плавать | Образец шума, контролируя случайность синтеза. | |
| Шум SDP | шумоподавление | истинный | плавать | Стохастическая продолжительность предиктора шума, контролируя длину произношения фонем. |
| Имя | Параметр | Обязан | По умолчанию | Тип | Инструкция |
|---|---|---|---|---|---|
| Синтезированный текст | текст | истинный | стр | Текст, необходимый для синтеза голоса. | |
| Идентификатор спикера | идентификатор | ЛОЖЬ | От config.yaml | инт | Идентификатор динамика. |
| Аудио формат | формат | ЛОЖЬ | От config.yaml | стр | Поддержка WAV, OGG, Silk, MP3, FLAC |
| Текстовый язык | ланг | ЛОЖЬ | От config.yaml | стр | Язык текста должен быть синтезирован. Доступные варианты включают Auto, ZH, JA и Mix. Когда LANG = MIX, текст должен быть завернут в [ZH] или [JA]. Режим по умолчанию - AUTO, который автоматически обнаруживает язык текста |
| Длина звука | длина | ЛОЖЬ | От config.yaml | плавать | Регулирует длину синтезированной речи, которая эквивалентна регулировке скорости речи. Чем больше значение, тем медленнее скорость. |
| Шум | шум | ЛОЖЬ | От config.yaml | плавать | Образец шума, контролируя случайность синтеза. |
| Шум SDP | шумоподавление | ЛОЖЬ | От config.yaml | плавать | Стохастическая продолжительность предиктора шума, контролируя длину произношения фонем. |
| Размер сегмента | segment_size | ЛОЖЬ | От config.yaml | инт | Разделите текст на параграфы на основе знаков препинания и объедините их в один абзац, когда длина превышает segment_size. Если segment_size <= 0, текст не будет разделен на параграфы. |
| Размерные эмоции | эмоция | ЛОЖЬ | 0 | инт | Диапазон зависит от ссылочного файла эмоций в формате NPY, такого как диапазон модели Innnky All_emotions.npy, которая составляет 0-5457. |
| Имя | Параметр | Обязан | По умолчанию | Тип | Инструкция |
|---|---|---|---|---|---|
| Загружено аудио | загрузить | истинный | файл | Верните файл NPY, в котором хранятся размерные векторы эмоций. |
| Имя | Параметр | Обязан | По умолчанию | Тип | Инструкция |
|---|---|---|---|---|---|
| Синтезированный текст | текст | истинный | стр | Текст, необходимый для синтеза голоса. | |
| Идентификатор спикера | идентификатор | ЛОЖЬ | От config.yaml | инт | Идентификатор динамика. |
| Аудио формат | формат | ЛОЖЬ | От config.yaml | стр | Поддержка WAV, OGG, Silk, MP3, FLAC |
| Текстовый язык | ланг | ЛОЖЬ | От config.yaml | стр | «Авто» - это режим для автоматического обнаружения языка, а также режим по умолчанию. Тем не менее, в настоящее время он поддерживает обнаружение языка всего текста и не может различать языки на основе предложения. Другие доступные языковые варианты - «ZH» и «JA». |
| Длина звука | длина | ЛОЖЬ | От config.yaml | плавать | Регулирует длину синтезированной речи, которая эквивалентна регулировке скорости речи. Чем больше значение, тем медленнее скорость. |
| Шум | шум | ЛОЖЬ | От config.yaml | плавать | Образец шума, контролируя случайность синтеза. |
| Шум SDP | шумоподавление | ЛОЖЬ | От config.yaml | плавать | Стохастическая продолжительность предиктора шума, контролируя длину произношения фонем. |
| Размер сегмента | segment_size | ЛОЖЬ | От config.yaml | инт | Разделите текст на параграфы на основе знаков препинания и объедините их в один абзац, когда длина превышает segment_size. Если segment_size <= 0, текст не будет разделен на параграфы. |
| Отношение смеси SDP/DP | sdp_ratio | ЛОЖЬ | От config.yaml | инт | Чем теоретическая доля SDP во время синтеза, чем выше соотношение, тем больше дисперсия синтезированного тона голоса. |
| Эмоция | эмоция | ЛОЖЬ | От config.yaml | инт | Доступно для Bert-Vits2 v2.1, от 0 до 9 |
| Эмоции ссылка на аудио | reference_audio | ЛОЖЬ | Никто | Bert-Vits2 v2.1 использует эталонный звук для управления синтезированными эмоциями аудио | |
| Текстовое приглашение | text_prompt | ЛОЖЬ | От config.yaml | стр | Берт-Vits2 v2.2 Текстовая подсказка, используемая для контроля эмоций |
| Стиль текст | style_text | ЛОЖЬ | От config.yaml | стр | Текстовая подсказка Bert-Vits2 v2.3 используется для контроля эмоций |
| Вес текста стиля | style_weight | ЛОЖЬ | От config.yaml | плавать | BERT-VITS2 v2.3 Текстовая приглашение веса используется для быстрого взвешивания |
| Потоковой ответ | потоковая передача | ЛОЖЬ | ЛОЖЬ | буль | Стоированная синтезированная речь с более быстрым начальным ответом. |
| Имя | Параметр | Обязан | По умолчанию | Тип | Инструкция |
|---|---|---|---|---|---|
| Синтезированный текст | текст | истинный | стр | Текст, необходимый для синтеза голоса. | |
| Идентификатор спикера | идентификатор | ЛОЖЬ | От config.yaml | инт | Идентификатор спикера. В GPT-Sovits каждая модель служит идентификатором динамика, а голос переключается с помощью эталонных аудиозаводов. |
| Аудио формат | формат | ЛОЖЬ | От config.yaml | стр | Поддержка WAV, OGG, Silk, MP3, FLAC |
| Текстовый язык | ланг | ЛОЖЬ | От config.yaml | стр | «Авто» - это режим автоматического обнаружения языка, который также является режимом по умолчанию. Тем не менее, в настоящее время он поддерживает только распознавание языка всего текста и не может различить каждое предложение. |
| Справочный аудио | reference_audio | ЛОЖЬ | Никто | reference_audio требуется, но его можно заменить на PRESET. | |
| Справочный аудио текст | rasfor_text | ЛОЖЬ | От config.yaml | плавать | Необходимо соответствовать фактическому тексту справочного аудио. |
| Справочный аудио язык | rasfor_lang | ЛОЖЬ | От config.yaml | стр | По умолчанию автоматическое распознавание языка текстового языка. Если признание не удается, заполните вручную, ZH для китайского, JA для японского, EN для английского. |
| Справочный аудиосаду | предустановка | ЛОЖЬ | по умолчанию | стр | Замените эталонный звук на предварительные предустановки, можно установить несколько пресетов. |
Поддерживаемые элементы и атрибуты
speak элемент
| Атрибут | Инструкция | Обязан |
|---|---|---|
| идентификатор | Значение по умолчанию получено из config.yaml | ЛОЖЬ |
| ланг | Значение по умолчанию получено из config.yaml | ЛОЖЬ |
| длина | Значение по умолчанию получено из config.yaml | ЛОЖЬ |
| шум | Значение по умолчанию получено из config.yaml | ЛОЖЬ |
| шумоподавление | Значение по умолчанию получено из config.yaml | ЛОЖЬ |
| segment_size | Разбивает текст на сегменты на основе знаков препинания. Когда сумма длины сегмента превышает segment_size , она рассматривается как один сегмент. segment_size<=0 означает отсутствие сегментации. Значение по умолчанию составляет 0. | ЛОЖЬ |
| model_type | По умолчанию это VITS. Варианты: W2V2-Vits, Bert-Vits2 | ЛОЖЬ |
| эмоция | Эффективен только при использовании w2v2-vits. Диапазон зависит от ссылочного файла эмоций NPY. | ЛОЖЬ |
| sdp_ratio | Эффективен только при использовании Bert-Vits2. | ЛОЖЬ |
voice элемент
Более высокий приоритет, чем speak .
| Атрибут | Инструкция | Обязан |
|---|---|---|
| идентификатор | Значение по умолчанию получено из config.yaml | ЛОЖЬ |
| ланг | Значение по умолчанию получено из config.yaml | ЛОЖЬ |
| длина | Значение по умолчанию получено из config.yaml | ЛОЖЬ |
| шум | Значение по умолчанию получено из config.yaml | ЛОЖЬ |
| шумоподавление | Значение по умолчанию получено из config.yaml | ЛОЖЬ |
| segment_size | Разбивает текст на сегменты на основе знаков препинания. Когда сумма длины сегмента превышает segment_size , она рассматривается как один сегмент. segment_size<=0 означает отсутствие сегментации. Значение по умолчанию составляет 0. | ЛОЖЬ |
| model_type | По умолчанию это VITS. Варианты: W2V2-Vits, Bert-Vits2 | ЛОЖЬ |
| эмоция | Эффективен только при использовании w2v2-vits. Диапазон зависит от ссылочного файла эмоций NPY. | ЛОЖЬ |
| sdp_ratio | Эффективен только при использовании Bert-Vits2. | ЛОЖЬ |
break элемент
| Атрибут | Инструкция | Обязан |
|---|---|---|
| сила | x-weak, слабый, средний (по умолчанию), сильный, x-стринг | ЛОЖЬ |
| время | Абсолютная продолжительность паузы за секунды (например, 2s ) или миллисекунд (например, 500ms ). Допустимые значения варьируются от 0 до 5000 миллисекунд. Если вы установите значение больше, чем поддерживаемый максимум, служба будет использовать 5000ms . Если атрибут time установлен, атрибут strength игнорируется. | ЛОЖЬ |
| Сила | Относительная продолжительность |
|---|---|
| X-Weak | 250 мс |
| слабый | 500 мс |
| середина | 750 мс |
| сильный | 1000 мс |
| X-Strong | 1250 мс |
| Имя | Параметр | Обязан | По умолчанию | Тип | Инструкция |
|---|---|---|---|---|---|
| Синтез текст | текст | истинный | стр | Текст, который должен быть синтезирован в речь. | |
| Тип промежуточной модели | in_model_type | ЛОЖЬ | Получен из config.yaml | стр | |
| Идентификатор интертокутора | in_id | ЛОЖЬ | Получен из config.yaml | инт | |
| Справочный аудио -предваритель | предустановка | ЛОЖЬ | по умолчанию | стр | Замените эталонный звук на предустановленные настройки, которые могут быть установлены на несколько пресетов заранее. |
| Тип модели рассказчика | nr_model_type | ЛОЖЬ | Получен из config.yaml | стр | |
| Идентификатор рассказчика | nr_id | ЛОЖЬ | Получен из config.yaml | инт | |
| Рассказчик ссылка на аудио предваритель | предустановка | ЛОЖЬ | по умолчанию | стр | Замените эталонный звук на предустановленные настройки, которые могут быть установлены на несколько пресетов заранее. |
| Аудио формат | формат | ЛОЖЬ | Получен из config.yaml | стр | Поддерживает WAV, OGG, Silk, MP3, FLAC |
| Текстовый язык | ланг | ЛОЖЬ | Получен из config.yaml | стр | «Авто» для режима автоматического обнаружения языка, который также является режимом по умолчанию. Однако в настоящее время он поддерживает только распознавание языка всего текста и не может различить каждое предложение. |
| Справочный аудиосаду | предустановка | ЛОЖЬ | по умолчанию | стр | Замените эталонный звук на предустановленные настройки, которые могут быть установлены на несколько пресетов заранее. |
Другие параметры модели будут использовать параметры по умолчанию соответствующей модели в файле config.yaml.
Смотрите api_test.py
Обучение и общение, теперь есть только китайская группа QQ