? Aivisspeech Engine: Ai v oice I Mitation System - текст в речевой двигатель
Aivisspeech Engine - это японский двигатель синтеза речи, основанный на двигателе VoiceVox.
Он встроен в Aivispeech, японское программное обеспечение для синтеза речи и может легко генерировать эмоциональные голоса.
AudioQueryMora изменилисьPreset типаЕсли вы хотите использовать Aivisspeech, пожалуйста, посетите официальный сайт Aivisspeech.
Эта страница содержит информацию в основном для разработчиков.
Ниже приведен документ для пользователей:
Совместим с ПК с Windows, MacOS и Linux.
Чтобы запустить двигатель Aivisspeech, ваш ПК нуждается не менее 3 ГБ свободной памяти (ОЗУ).
Кончик
Приложение для настольного компьютера, Aivisspeech, поддерживается только в Windows и MacOS.
Между тем, API -сервер API речи, также доступен API -сервер речи, также доступен для Ubuntu/Debian Linux.
Примечание
Мы не активно проверяли операцию на Macs с помощью процессоров Intel.
Mac с процессорами Intel уже не выходит за рамки производства, и становится все труднее подготовить проверку и построение среды. Мы рекомендуем использовать этот продукт на Mac с яблочным кремнием как можно больше.
Предупреждение
В Windows 10 мы проверяем только работу версии 22H2.
Были сообщения о случаях, когда двигатель Aivisspeech сбои и не начинается с более старых версий Windows 10, которые не имеют поддержки.
С точки зрения безопасности, мы настоятельно рекомендуем вам использовать среды Windows 10 только для минимальной версии 22H2 перед использованием службы.
Двигатель Aivisspeech поддерживает файлы модели синтеза речи в формате AIVMX ( AI vis v oice m ODEL для onn x ) ( .aivmx ).
AIVM ( AI Vis V OICE M ODEL) / AIVMX ( AI VIS VOICE M ODEL для ONN X )-это открытый формат файлов для моделей синтеза речи AI, которые объединяют предварительно обученные модели, гиперпараметры, векторы стиля, метаданные динамики (имена, обзоры, лицензии, иконки, голосовые выборки и т. Д.) В один файл .
Для получения дополнительной информации о спецификациях AIVM и файлах AIVM/AIVMX, пожалуйста, обратитесь к спецификациям AIVM, разработанным в проекте AIVIS.
Примечание
«AIVM» также является общим термином как для спецификаций формата AIVM/AIVMX, так и для спецификаций метаданных.
В частности, файл AIVM представляет собой модельный файл в «Safetensors Format с добавлением метаданных AIVM», а файл AIVMX - это модельный файл в «Format Onnx с добавленными метадатами AIVM».
«Метаданные AIVM» относится к различным метаданным, которые связаны с обученной моделью, как это определено в спецификации AIVM.
Важный
Двигатель Aivisspeech также является эталонной реализацией спецификации AIVM, но он преднамеренно предназначен для поддержки только файлов AIVMX.
Это устраняет зависимость от Pytorch, уменьшает размер установки и обеспечивает быстрый вывод ЦП со временем выполнения ONNX.
Кончик
Генератор AIVM позволяет генерировать файлы AIVM/AIVMX из существующих моделей синтеза речи и редактировать метаданные существующих файлов AIVM/AIVMX!
Доступны файлы AIVMX для следующих архитектур модели:
Style-Bert-VITS2Style-Bert-VITS2 (JP-Extra) Примечание
Спецификация метаданных AIVM позволяет вам определять многоязычные динамики, но двигатель Aivisspeech, такой как двигатель VoiceVox, только поддерживает японский синтез речи.
Следовательно, даже если вы используете модель синтеза речи, которая поддерживает английский или китайский, не может быть выполнен синтез речи, кроме японского.
Поместите файлы AIVMX в следующие папки для каждой ОС:
C:Users(ユーザー名)AppDataRoamingAivisSpeech-EngineModels~/Library/Application Support/AivisSpeech-Engine/Models~/.local/share/AivisSpeech-Engine/Models Фактический путь папки будет отображаться в качестве Models directory: в журналах сразу после запуска двигателя Aivisspeech.
Кончик
При использовании aivispeech вы можете легко добавить модели синтеза речи с экрана пользовательского интерфейса Aivisspeech!
Для конечных пользователей мы рекомендуем добавить модель синтеза речи, используя этот метод.
Важный
Папка развертывания для версии разработки (если она работает без построения с Pyinstaller) не является AivisSpeech-Engine или ниже AivisSpeech-Engine-Dev .
Aivisspeech Engine предлагает полезные варианты командной строки, такие как:
--host 0.0.0.0 позволяет получить доступ к двигателю Aivisspeech от других устройств в той же сети.--cors_policy_mode all чтобы разрешить Cors запросы из всех доменов.--load_all_models , чтобы предварительно загружать все установленные модели синтеза речи, когда начинается двигатель Aivisspeech.--help для отображения списка и описания всех доступных параметров. Есть много других доступных вариантов. Для получения подробной информации, пожалуйста, обратитесь к опции --help .
Кончик
При выполнении с опцией --use_gpu он может использовать DirectML в GPU Windows и NVIDIA (CUDA) на Linux для высокоскоростного синтеза речи.
Кроме того, в средах Windows вывод DirectML может быть выполнен на ПК с только с помощью графических процессоров (IGPU) со встроенными процессорами, но в большинстве случаев он намного медленнее, чем вывод ЦП, так что это не рекомендуется.
Для получения дополнительной информации см. Часто задаваемые вопросы.
Примечание
Двигатель Aivisspeech работает с номером 10101 порта 10101 по умолчанию.
Если это противоречит другими приложениями, вы можете изменить его на любой номер порта, используя опцию --port .
Предупреждение
В отличие от двигателя VoiceVox, некоторые варианты не реализованы в двигателе Aivisspeech.
В Windows/MacOS вы можете установить самостоятельный двигатель Aivisspeech, но легче запустить двигатель Aivisspeech, который поставляется с консоли Aivisspeech, самостоятельно.
Путь к исполняемому файлу Engine Engine Aivisspeech ( run.exe / run ), который поставляется с aivispeech, выглядит следующим образом:
C:Program FilesAivisSpeechAivisSpeech-Enginerun.exeC:Users(ユーザー名)AppDataLocalProgramsAivisSpeechAivisSpeech-Enginerun.exe ./Applications/AivisSpeech.app/Contents/Resources/AivisSpeech-Engine/run~/Applications/AivisSpeech.app/Contents/Resources/AivisSpeech-Engine/run . Примечание
Модель по умолчанию (около 250 МБ) и модель BERT (около 1,3 ГБ), необходимые для вывода, автоматически загружаются при первом запуске, поэтому для завершения запуска займет несколько минут.
Пожалуйста, подождите некоторое время, пока стартап не будет завершен.
Чтобы добавить модель синтеза речи в двигатель Aivisspeech, см., Где разместить модель файла.
Вы также можете добавить его, нажав «Настройки»> «Модель синтеза речи» в Aivisspeech.
При запуске в среде GPU Linux + NVIDIA версия CUDA/Cudnn, которую поддержка Onnx Runtimes должна соответствовать версии Cuda/Cudnn среды хоста, а условия работы являются строгими.
В частности, время выполнения ONNX, используемое двигателем Aivisspeech, требует CUDA 12.x / cudnn 9.x или выше.
Docker работает независимо от среды хост ОС, поэтому мы рекомендуем установить его с Docker.
При запуске контейнера Docker всегда установите ~/.local/share/AivisSpeech-Engine to /home/user/.local/share/AivisSpeech-Engine-Dev в контейнере.
Таким образом, даже после того, как вы остановили или перезапустили контейнер, вы все равно можете поддерживать установленную модель синтеза речи и модель BERT (приблизительно 1,3 ГБ).
Чтобы добавить модель синтеза речи в двигатель Aivisspeech в среде Docker, поместите модельный файл (.aivmx) в ~/.local/share/AivisSpeech-Engine/Models в среде хоста.
Важный
Обязательно установите его против /home/user/.local/share/AivisSpeech-Engine-Dev .local/share/aivisspeech-engine-dev.
Поскольку двигатель Aivisspeech на изображении Docker не построен с Pyinstaller, имя папки данных дается суффикс -Dev и AivisSpeech-Engine-Dev .
docker pull ghcr.io/aivis-project/aivisspeech-engine:cpu-latest
docker run --rm -p ' 10101:10101 '
-v ~ /.local/share/AivisSpeech-Engine:/home/user/.local/share/AivisSpeech-Engine-Dev
ghcr.io/aivis-project/aivisspeech-engine:cpu-latestdocker pull ghcr.io/aivis-project/aivisspeech-engine:nvidia-latest
docker run --rm --gpus all -p ' 10101:10101 '
-v ~ /.local/share/AivisSpeech-Engine:/home/user/.local/share/AivisSpeech-Engine-Dev
ghcr.io/aivis-project/aivisspeech-engine:nvidia-latest Когда вы запускаете следующую одну строку в Bash, речевой файл WAV, синтезированный WAV, будет выведен в audio.wav .
Важный
Предполагается, что двигатель Aivisspeech был запущен заранее и что Models directory: в следующем каталоге содержится модель синтеза речи (.aivmx), которая соответствует идентификатору стиля.
# STYLE_ID は音声合成対象のスタイル ID 、別途 /speakers API から取得が必要
STYLE_ID=888753760 &&
echo -n "こんにちは、音声合成の世界へようこそ! " > text.txt &&
curl -s -X POST " 127.0.0.1:10101/audio_query?speaker= $STYLE_ID " --get --data-urlencode [email protected] > query.json &&
curl -s -H " Content-Type: application/json " -X POST -d @query.json " 127.0.0.1:10101/synthesis?speaker= $STYLE_ID " > audio.wav &&
rm text.txt query.jsonКончик
Для получения подробных спецификаций API и ответа, пожалуйста, обратитесь к документации API и совместимости с API VoiceVox. Документация API всегда отражает изменения в последней версии разработки.
Вы можете просмотреть документацию API (Swagger UI) для работающего двигателя Aivisspeech, получив доступ к http://127.0.0.1:10101/docs с помощью двигателя Aivisspeech или редактора Aivisspeech.
Двигатель Aivisspeech, как правило, совместим с HTTP API VoiceVox двигателя.
Если у вас есть программное обеспечение, которое поддерживает HTTP API VoiceVox Engine, вы должны иметь возможность поддерживать двигатель AivissPeech, просто заменив URL API на http://127.0.0.1:10101 .
Важный
Однако, если вы редактируете контент AudioQuery , полученный из API /audio_query на клиенте API, а затем передаете его /synthesis API, может быть невозможно правильно синтезировать речь из -за различий в спецификациях (см. Ниже).
Благодаря этому редактор Aivisspeech может использовать как двигатель Aivisspeech, так и двигатель VoiceVox (при использовании функций с несколькими двигателями), но вы не можете использовать двигатель Aivisspeech из редактора VoiceVox.
Использование двигателя Aivisspeech в редакторе VoiceVox значительно снижает качество синтеза речи из -за ограничений в реализации редактора. В дополнение к тому, что они не могут использовать уникальные параметры двигателя Aivisspeech, существует вероятность, что при вызове не совместимых функций ошибка.
Мы настоятельно рекомендуем использовать его с редактором Aivisspeech, чтобы получить лучшие результаты синтеза речи.
Примечание
Хотя он должен быть в целом совместимы в общих случаях использования API, могут быть несовместимые API, кроме следующих, поскольку системы синтеза речи с принципиально различными архитектурами модели насильно включены в одни и те же спецификации API.
Если вы сообщите об этом через проблему, мы установим любые улучшения совместимости.
Ниже приведены изменения в спецификациях API от двигателя VoiceVox:
Локальные идентификаторы в стиле динамика в манифесте AIVM, содержащемся в файле AIVMX, управляются в серийных номерах, начиная с 0 для каждого динамика.
В модели синтеза речи архитектуры Style-Bert-Vits2 это значение соответствует значению data.style2id гиперпараметра модели. STYLE2ID.
С другой стороны, API VoiceVox Engine не указывает на динамик UUID ( speaker_uuid ), и только идентификатор стиля ( style_id ) передается в API речи, возможно, по историческим причинам.
GoiceVox Engine имеет фиксированные динамики и стили, поэтому команда разработчиков смогла уникально управлять «удостоверением личности стиля».
Между тем, aivispeech Engine позволяет пользователям свободно добавлять модели синтеза речи.
Следовательно, совместимый с API VoiceVox «идентификатор стиля» должен быть уникальным, независимо от того, какая модель синтеза речи добавлена.
Это связано с тем, что если значение не является уникальным, идентификаторы стиля динамика и идентификаторы стиля, включенные в существующую модель, могут перекрываться, когда добавляется новая модель синтеза речи.
Поэтому двигатель Aivisspeech объединяет динамик UUID и идентификатор стиля на манифесте AIVM, чтобы генерировать глобально уникальный «идентификатор стиля», совместимый с API VoiceVox.
Специфический метод генерации заключается в следующем:
Предупреждение
Из-за этого могут возникнуть неожиданные проблемы с помощью программного обеспечения с поддержкой API-VoiceVox, которое не предполагает, что 32-разрядное подписанное целое число включено в «идентификатор стиля».
Предупреждение
В чрезвычайно низкой вероятности, что разные идентификаторы стиля динамиков могут перекрываться (столкновение), потому что они жертвуют глобальной уникальностью динамиков UUID, чтобы соответствовать 32-разрядным целочисленным диапазону.
На данный момент нет обходного пути для дублирующих идентификаторов стиля, но на самом деле это не проблема в большинстве случаев.
Кончик
API VoiceVox, совместимые с «идентификаторами стилей», автоматически генерируемым двигателем Aivisspeech можно получить из API /speakers .
Этот API возвращает список докладчиков, установленной на двигателе Aivisspeech.
AudioQuery AudioQuery Type - это запрос для выполнения синтеза речи путем указания текста или последовательностей фонем.
Основные изменения от типа AudioQuery в двигателе VoiceVox заключаются в следующем:
intonationScale отличается.intonationScale в двигателе Aivisspeech:intonationScale составляет от 0,0 до 1,0, Style-Bert-Vits2 соответствует диапазону от 0,0 до 1,0.intonationScale составляет от 1,0 до 2,0, Style-Bert-Vits2 соответствует диапазону от 1,0 до 10,0.tempoDynamicsScale .tempoDynamicsScale в двигателе Aivisspeech:tempoDynamicsScale составляет от 0,0 до 1,0, Style-Bert-Vits2 соответствует диапазону от 0,0 до 0,2.tempoDynamicsScale составляет от 1,0 до 2,0, Style-Bert-Vits2 соответствует диапазону от 0,2 до 1,0.pitchScale разные.pauseLength и pauseLengthScale не поддерживаются.kana разные.Для получения дополнительной информации об изменениях см. Model.py.
Mora изменились Тип Mora - это структура данных, которая представляет мауру речевого текста.
Кончик
Мора - это наименьшая единица звуковой группировки, когда она действительно произносится (например, «а», «ka» или «o»).
Типы Mora не используются отдельно для ответов на запросы API и всегда используются косвенно через AudioQuery.accent_phrases[n].moras или AudioQuery.accent_phrases[n].pause_mora .
Основные изменения от типа Mora в двигателе VoiceVox заключаются в следующем:
pause_mora , но в двигателе Aivisspeech он рассматривается как нормальные Moras.text - это тот же символ, а vowel установлен на «pau».consonant / vowel только для чтения.text поля всегда используется для чтения текста во время синтеза речи.consonant_length / vowel_length / pitch не поддерживаются.Для получения дополнительной информации об изменениях см. TTS_PIPELEN/MODEL.PY.
Preset типа Preset тип - это заданная информация для определения начального значения запроса синтеза речи в редакторе.
Изменения в целом соответствуют изменениям в спецификации полей для intonationScale , энтузиазма / tempoDynamicsScale / pitchScale / pauseLength / pauseLengthScale описанных в типах AudioQuery .
Для получения дополнительной информации об изменениях см. Preset/model.py.
Предупреждение
Пение и отмену API -интерфейсов речи не поддерживаются.
Он существует в качестве конечной точки для целей совместимости, но всегда возвращает 501 Not Implemented .
Для получения дополнительной информации, пожалуйста, проверьте приложение/routers/farmation.py/app/routers/tts_pipeline.py.
/singers/singer_info/cancellable_synthesis/sing_frame_audio_query/sing_frame_volume/frame_synthesis Предупреждение
API /synthesis_morphing , который обеспечивает функциональность морфинга, не поддерживается.
Поскольку время голоса отличается для каждого динамика, его невозможно реализовать (оно работает, но не может слушать), поэтому 400 Bad Request всегда возвращается.
Возвращает, доступно ли морфинг для каждого динамика /morphable_targets API Disallows Morphing для всех динамиков.
Для получения дополнительной информации, пожалуйста, проверьте приложение/маршрутизаторы/morphing.py.
/synthesis_morphing/morphable_targetsПредупреждение
Он существует как параметр для целей совместимости, но всегда игнорируется.
Для получения дополнительной информации, пожалуйста, проверьте приложение/routers/farmation.py/app/routers/tts_pipeline.py.
core_versionenable_interrogative_upspeak Параметрどうですか…? Просто добавьте "?" До конца текста, чтобы читать вслух, как это, и вы можете прочитать его с сомнительной интонацией. Кончик
Пожалуйста, также посмотрите на часто задаваемые вопросы/Q & A редактора Aivisspeech.
intonationScale ) вызовет всплеск речи. Это текущая спецификация модельной архитектуры Style-Bert-Vits2, поддерживаемой двигателем Aivisspeech.
В зависимости от динамика и стиля, если вы слишком сильно поднимаете intonationScale , ваш голос может стать странным, или вы можете прочитать неестественный голос.
Верхний предел значения intonationScale , который позволяет правильно говорить, будет варьироваться в зависимости от динамика и стиля. Настройте значение соответствующим образом.
В двигателе Aivisspeech мы стараемся убедиться, что правильное чтение и акцент верны за один раз, но бывают случаи, когда это неизбежно, что это неверно.
Слова, которые не зарегистрированы в встроенном словаре, такие как правильные существительные и имена людей (особенно игристые имена), часто не читаются правильно.
Вы можете изменить способ прочитанного эти слова, зарегистрировав словарь. Попробуйте зарегистрировать слова от редактора Aivispeech или API.
Кроме того, для составных слов и английских слов содержание, зарегистрированное в словаре, не может быть отражен независимо от приоритета слова. Это текущая спецификация.
Двигатель Aivisspeech предназначен для синтеза речи в относительно коротких предложениях, таких как предложения или группы значения.
Следовательно, отправка длинных предложений, которые превышают 1000 символов одновременно в API /synthesis может вызвать такие проблемы, как следующие:
При синтезе длинных предложений мы рекомендуем разделить предложения на следующих позициях и отправить их в API речи.
Там нет жестких ограничений, но желательно иметь до 500 символов на синтез речи.
Кончик
Разделительные предложения с семантическими перерывами имеют тенденцию производить более естественные интонационные звуки.
Это связано с тем, что эмоциональные выражения и интонации, соответствующие содержанию текста, применяются ко всему предложению, отправленному к API синтеза речи сразу.
Правильно разделяя предложения, вы можете сбросить эмоциональное выражение и интонацию каждого предложения, что приведет к более естественному чтению.
Доступ к Интернету требуется только при запуске Aivisspeech -Sech в первый раз, потому что данные модели загружаются.
Вы можете использовать ПК в автономном режиме на второй или более позднем этапе.
Это можно сделать на экране конфигурации двигателя Aivisspeech, который в настоящее время работает.
Когда вы получаете доступ к http://127.0.0.1:[AivisSpeech Engine のポート番号]/setting из браузера при запуске двигателя Aivisspeech, откроется экран конфигурации двигателя Aivisspeech.
Номер порта по умолчанию для двигателя Aivisspeech составляет 10101 .
--use_gpu ) и по -прежнему производит голос медленнее, чем режим ЦП.Режим GPU может использоваться только на ПК только со встроенным процессором (IGPU), но в большинстве случаев он намного медленнее, чем режим ЦП, поэтому он не рекомендуется.
Это связано с тем, что графические процессоры со встроенными процессорами имеют более низкую производительность, чем независимые графические процессоры (DGPU), и не очень хороши в тяжелой обработке, как синтез речи AI.
С другой стороны, производительность процессоров в наши дни была значительно улучшена, и один процессор может генерировать аудио с высокой скоростью.
Поэтому мы рекомендуем использовать режим процессора на ПК, которые не имеют DGPU.
Если вы используете ПК с 12-м поколением Intel или более позднее ЦП (гибридная конфигурация P-Core/E-Core), производительность генерации звука может резко измениться в зависимости от настройки питания Windows.
Это связано с тем, что режим «баланса» по умолчанию облегчает назначение задач генерации голоса для энергосберегающих электронных язв.
Измените настройки, используя приведенные ниже шаги, чтобы максимально использовать обоих ядер P и E и быстрее генерировать голос.
*«План мощности» на панели управления также имеет настройку «высокой производительности», но настройки разные.
Для CPU 12 -го поколения Intel или более позднего дня мы рекомендуем изменить «режим питания» на экране настроек Windows 11.
Aivisspeech стремится быть бесплатным программным обеспечением для синтеза речи AI, которое не связано с его использованием.
(Это зависит от лицензии модели синтеза речи, используемой в результатах). По крайней мере, само программное обеспечение не требует кредита и может использоваться свободно, будь то для физических лиц, корпораций, коммерческих или некоммерческих целей.
... однако, я также хочу, чтобы больше людей знали об Aivisspeech.
Если хотите, я был бы счастлив, если бы вы могли отдать должное Aivisspeech где -то в результате. (Кредитный формат остается вам.)
Это сохраняется в следующей папке:
C:Users(ユーザー名)AppDataRoamingAivisSpeech-EngineLogs~/Library/Application Support/AivisSpeech-Engine/Logs~/.local/share/AivisSpeech-Engine/LogsЕсли вы найдете проблему, сообщите об этом, используя один из следующих методов:
Выпуск GitHub (рекомендуется)
Если у вас есть учетная запись GitHub, сообщите о нашей проблеме GitHub, и мы можем ответить рано.
Twitter (x)
Вы можете ответить на официальный аккаунт проекта Aivis, DM или твит с хэштегом #aivisspeech.
Контактная форма
Вы также можете сообщить о контактной форме проекта AIVIS.
Пожалуйста, сообщите о следующей информации как можно больше, и мы сможем реагировать быстрее.
VoiceVox - это огромное программное обеспечение, которое все еще активно развивается сегодня.
Таким образом, Aivisspeech Engine разрабатывает последнюю версию двигателя VoiceVox в соответствии с следующей политикой:
voicevox_engine , и разница в изменениях импорта будет огромной, поэтому ребрендинг не выполняется. Процедура значительно отличается от оригинального двигателя VoiceVox.
У вас должен быть установлен Python 3.11 заранее.
# Poetry と pre-commit をインストール
pip install poetry poetry-plugin-export pre-commit
# pre-commit を有効化
pre-commit install
# 依存関係をすべてインストール
poetry installПроцедура значительно отличается от оригинального двигателя VoiceVox.
# 開発環境で AivisSpeech Engine を起動
poetry run task serve
# AivisSpeech Engine のヘルプを表示
poetry run task serve --help
# コードフォーマットを自動修正
poetry run task format
# コードフォーマットをチェック
poetry run task lint
# typos によるタイポチェック
poetry run task typos
# テストを実行
poetry run task test
# テストのスナップショットを更新
poetry run task update-snapshots
# ライセンス情報を更新
poetry run task update-licenses
# AivisSpeech Engine をビルド
poetry run task buildИз базовых двойных лицензий двигателя VoiceVox только LGPL-3.0 будет унаследован независимо.
Ниже и документы/ следующие документы переносятся из оригинального документа VoiceVox Engine без модификации. Не гарантируется, что содержание этих документов также будет работать с двигателем Aivisspeech.
Это двигатель VoiceVox.
В действительности это HTTP -сервер, поэтому вы можете синтезировать текст и речь, отправив запрос.
(Редактор - это VoiceVox, ядро - ядро VoiceVox, и общая структура можно найти здесь.)
Вот гид, адаптированный к вашим потребностям.
Загрузите соответствующий двигатель здесь.
Пожалуйста, обратитесь к документации API.
С запуском двигателя VoiceVox или редактора вы также можете просмотреть документацию для запуска двигателя.
Для планов на будущее сотрудничество с двигателем синтеза VoiceVox также может быть полезным.
docker pull voicevox/voicevox_engine:cpu-latest
docker run --rm -p ' 127.0.0.1:50021:50021 ' voicevox/voicevox_engine:cpu-latestdocker pull voicevox/voicevox_engine:nvidia-latest
docker run --rm --gpus all -p ' 127.0.0.1:50021:50021 ' voicevox/voicevox_engine:nvidia-latest При использовании версии GPU могут возникнуть ошибки в зависимости от среды. В этом случае вы можете решить проблему, добавив --runtime=nvidia в docker run .
echo -n "こんにちは、音声合成の世界へようこそ" > text.txt
curl -s
-X POST
" 127.0.0.1:50021/audio_query?speaker=1 "
--get --data-urlencode [email protected]
> query.json
curl -s
-H " Content-Type: application/json "
-X POST
-d @query.json
" 127.0.0.1:50021/synthesis?speaker=1 "
> audio.wavСгенерированная аудио имеет немного особое количество отбора проб 24 000 Гц, поэтому некоторые аудиоплееры, возможно, не смогут сыграть в нее.
Значение, указанное для speaker - это style_id полученный в конечной точке /speakers . Он назван speaker для совместимости.
Вы можете настроить звук, редактируя параметры запроса синтеза речи, полученного с /audio_query .
Например, попробуйте говорить со скоростью в 1,5 раза быстрее.
echo -n "こんにちは、音声合成の世界へようこそ" > text.txt
curl -s
-X POST
" 127.0.0.1:50021/audio_query?speaker=1 "
--get --data-urlencode [email protected]
> query.json
# sed を使用して speedScale の値を 1.5 に変更
sed -i -r ' s/"speedScale":[0-9.]+/"speedScale":1.5/ ' query.json
curl -s
-H " Content-Type: application/json "
-X POST
-d @query.json
" 127.0.0.1:50021/synthesis?speaker=1 "
> audio_fast.wav « Нотация ветра Aquestalk » - это нотация, которая указывает, как читать, используя только катакана и символы. Aquestalk Это отчасти отличается от первоначальной нотации.
Стили Aquestalk следуют следующим правилам:
/ 、 . Тихий интервалы вставляются только 、 разделены._ перед Каной, то Кана будет молчать.' . Все акцентные фразы должны иметь определенную позицию акцента.? Вы можете произносить вопросы, добавив (полная ширина) Ответ на /audio_query описывает чтение, которое судьи двигателя.
Изменив это, вы можете управлять чтением звука и акцентом.
# 読ませたい文章をutf-8でtext.txtに書き出す
echo -n "ディープラーニングは万能薬ではありません" > text.txt
curl -s
-X POST
" 127.0.0.1:50021/audio_query?speaker=1 "
--get --data-urlencode [email protected]
> query.json
cat query.json | grep -o -E " " kana " : " .* " "
# 結果... "kana":"ディ'イプ/ラ'アニングワ/バンノオヤクデワアリマセ'ン"
# "ディイプラ'アニングワ/バンノ'オヤクデワ/アリマセ'ン"と読ませたいので、
# is_kana=trueをつけてイントネーションを取得しnewphrases.jsonに保存
echo -n "ディイプラ'アニングワ/バンノ'オヤクデワ/アリマセ'ン" > kana.txt
curl -s
-X POST
" 127.0.0.1:50021/accent_phrases?speaker=1&is_kana=true "
--get --data-urlencode [email protected]
> newphrases.json
# query.jsonの"accent_phrases"の内容をnewphrases.jsonの内容に置き換える
cat query.json | sed -e " s/[{.*}]/ $( cat newphrases.json ) /g " > newquery.json
curl -s
-H " Content-Type: application/json "
-X POST
-d @newquery.json
" 127.0.0.1:50021/synthesis?speaker=1 "
> audio.wavВы можете просмотреть пользовательский словарь, добавить, редактировать и удалять слова из API.
Вы можете получить список пользовательского словаря, отправив запрос GET на /user_dict .
curl -s -X GET " 127.0.0.1:50021/user_dict " Вы можете добавить слова в свой пользовательский словарь, отправив запрос POST на /user_dict_word .
Требуются следующие параметры URL -адреса:
Эта статья будет полезна для расположения ядра акцента.
Числовая часть с типом 〇 становится позицией ядра акцента.
https://tdmelodic.readthedocs.io/ja/latest/pages/introduction.html
Возвращаемое значение на успехе - это строка UUID, назначенного слову.
surface= " test "
pronunciation= "テスト"
accent_type= " 1 "
curl -s -X POST " 127.0.0.1:50021/user_dict_word "
--get
--data-urlencode " surface= $surface "
--data-urlencode " pronunciation= $pronunciation "
--data-urlencode " accent_type= $accent_type " Вы можете изменить слова в пользовательском словаре, отправив запрос PUT на /user_dict_word/{word_uuid} .
Требуются следующие параметры URL -адреса:
Word_uuid можно проверить при добавлении слов, а также можно проверить, ссылаясь на пользовательский словарь.
В случае успеха, возвращаемое значение составляет 204 No Content .
surface= " test2 "
pronunciation= "テストツー"
accent_type= " 2 "
# 環境によってword_uuidは適宜書き換えてください
word_uuid= " cce59b5f-86ab-42b9-bb75-9fd3407f1e2d "
curl -s -X PUT " 127.0.0.1:50021/user_dict_word/ $word_uuid "
--get
--data-urlencode " surface= $surface "
--data-urlencode " pronunciation= $pronunciation "
--data-urlencode " accent_type= $accent_type " Вы можете удалить слова в пользовательском словаре, отправив запрос Delete на /user_dict_word/{word_uuid} .
Word_uuid можно проверить при добавлении слов, а также можно проверить, ссылаясь на пользовательский словарь.
В случае успеха, возвращаемое значение составляет 204 No Content .
# 環境によってword_uuidは適宜書き換えてください
word_uuid= " cce59b5f-86ab-42b9-bb75-9fd3407f1e2d "
curl -s -X DELETE " 127.0.0.1:50021/user_dict_word/ $word_uuid " Вы можете импортировать и экспортировать пользовательские словаря в разделе «Экспорт и импорт пользовательского словаря» на странице «Настройки двигателя».
Вы также можете импортировать и экспортировать пользовательские словаря, используя API.
インポートにはPOST /import_user_dict 、エクスポートにはGET /user_dictを利用します。
引数等の詳細は API ドキュメントをご覧ください。
ユーザーディレクトリにあるpresets.yamlを編集することでキャラクターや話速などのプリセットを使うことができます。
echo -n "プリセットをうまく活用すれば、サードパーティ間で同じ設定を使うことができます" > text.txt
# プリセット情報を取得
curl -s -X GET " 127.0.0.1:50021/presets " > presets.json
preset_id= $( cat presets.json | sed -r ' s/^.+"id":s?([0-9]+?).+$/1/g ' )
style_id= $( cat presets.json | sed -r ' s/^.+"style_id":s?([0-9]+?).+$/1/g ' )
# 音声合成用のクエリを取得
curl -s
-X POST
" 127.0.0.1:50021/audio_query_from_preset?preset_id= $preset_id "
--get --data-urlencode [email protected]
> query.json
# 音声合成
curl -s
-H " Content-Type: application/json "
-X POST
-d @query.json
" 127.0.0.1:50021/synthesis?speaker= $style_id "
> audio.wavspeaker_uuidは、 /speakersで確認できますidは重複してはいけません/synthesis_morphingでは、2 種類のスタイルでそれぞれ合成された音声を元に、モーフィングした音声を生成します。
echo -n "モーフィングを利用することで、2種類の声を混ぜることができます。 " > text.txt
curl -s
-X POST
" 127.0.0.1:50021/audio_query?speaker=8 "
--get --data-urlencode [email protected]
> query.json
# 元のスタイルでの合成結果
curl -s
-H " Content-Type: application/json "
-X POST
-d @query.json
" 127.0.0.1:50021/synthesis?speaker=8 "
> audio.wav
export MORPH_RATE=0.5
# スタイル2種類分の音声合成+WORLDによる音声分析が入るため時間が掛かるので注意
curl -s
-H " Content-Type: application/json "
-X POST
-d @query.json
" 127.0.0.1:50021/synthesis_morphing?base_speaker=8&target_speaker=10&morph_rate= $MORPH_RATE "
> audio.wav
export MORPH_RATE=0.9
# query、base_speaker、target_speakerが同じ場合はキャッシュが使用されるため比較的高速に生成される
curl -s
-H " Content-Type: application/json "
-X POST
-d @query.json
" 127.0.0.1:50021/synthesis_morphing?base_speaker=8&target_speaker=10&morph_rate= $MORPH_RATE "
> audio.wav追加情報の中の portrait.png を取得するコードです。
(jqを使用して json をパースしています。)
curl -s -X GET " 127.0.0.1:50021/speaker_info?speaker_uuid=7ffcb7ce-00ec-4bdc-82cd-45a8889e43ff "
| jq -r " .portrait "
| base64 -d
> portrait.png/cancellable_synthesisでは通信を切断した場合に即座に計算リソースが開放されます。
( /synthesisでは通信を切断しても最後まで音声合成の計算が行われます)
この API は実験的機能であり、エンジン起動時に引数で--enable_cancellable_synthesisを指定しないと有効化されません。
音声合成に必要なパラメータは/synthesisと同様です。
echo -n ' {
"notes": [
{ "key": null, "frame_length": 15, "lyric": "" },
{ "key": 60, "frame_length": 45, "lyric": "ド" },
{ "key": 62, "frame_length": 45, "lyric": "レ" },
{ "key": 64, "frame_length": 45, "lyric": "ミ" },
{ "key": null, "frame_length": 15, "lyric": "" }
]
} ' > score.json
curl -s
-H " Content-Type: application/json "
-X POST
-d @score.json
" 127.0.0.1:50021/sing_frame_audio_query?speaker=6000 "
> query.json
curl -s
-H " Content-Type: application/json "
-X POST
-d @query.json
" 127.0.0.1:50021/frame_synthesis?speaker=3001 "
> audio.wav楽譜のkeyは MIDI 番号です。
lyricは歌詞で、任意の文字列を指定できますが、エンジンによってはひらがな・カタカナ1モーラ以外の文字列はエラーになることがあります。
フレームレートはデフォルトが 93.75Hz で、エンジンマニフェストのframe_rateで取得できます。
1つ目のノートは無音である必要があります。
/sing_frame_audio_queryで指定できるspeakerは、 /singersで取得できるスタイルの内、種類がsingかsinging_teacherなスタイルのstyle_idです。
/frame_synthesisで指定できるspeakerは、 /singersで取得できるスタイルの内、種類がframe_decodeのstyle_idです。
引数がspeakerという名前になっているのは、他の API と一貫性をもたせるためです。
/sing_frame_audio_queryと/frame_synthesisに異なるスタイルを指定することも可能です。
VOICEVOX ではセキュリティ保護のためlocalhost・127.0.0.1・app://・Origin なし以外の Origin からリクエストを受け入れないようになっています。 そのため、一部のサードパーティアプリからのレスポンスを受け取れない可能性があります。
これを回避する方法として、エンジンから設定できる UI を用意しています。
実行時引数--disable_mutable_apiか環境変数VV_DISABLE_MUTABLE_API=1を指定することで、エンジンの設定や辞書などを変更する API を無効にできます。
リクエスト・レスポンスの文字コードはすべて UTF-8 です。
エンジン起動時に引数を指定できます。詳しいことは-h引数でヘルプを確認してください。
$ python run.py -h
usage: run.py [-h] [--host HOST] [--port PORT] [--use_gpu] [--voicevox_dir VOICEVOX_DIR] [--voicelib_dir VOICELIB_DIR] [--runtime_dir RUNTIME_DIR] [--enable_mock] [--enable_cancellable_synthesis]
[--init_processes INIT_PROCESSES] [--load_all_models] [--cpu_num_threads CPU_NUM_THREADS] [--output_log_utf8] [--cors_policy_mode {CorsPolicyMode.all,CorsPolicyMode.localapps}]
[--allow_origin [ALLOW_ORIGIN ...]] [--setting_file SETTING_FILE] [--preset_file PRESET_FILE] [--disable_mutable_api]
VOICEVOX のエンジンです。
options:
-h , --help show this help message and exit
--host HOST 接続を受け付けるホストアドレスです。
--port PORT 接続を受け付けるポート番号です。
--use_gpu GPUを使って音声合成するようになります。
--voicevox_dir VOICEVOX_DIR
VOICEVOXのディレクトリパスです。
--voicelib_dir VOICELIB_DIR
VOICEVOX COREのディレクトリパスです。
--runtime_dir RUNTIME_DIR
VOICEVOX COREで使用するライブラリのディレクトリパスです。
--enable_mock VOICEVOX COREを使わずモックで音声合成を行います。
--enable_cancellable_synthesis
音声合成を途中でキャンセルできるようになります。
--init_processes INIT_PROCESSES
cancellable_synthesis機能の初期化時に生成するプロセス数です。
--load_all_models 起動時に全ての音声合成モデルを読み込みます。
--cpu_num_threads CPU_NUM_THREADS
音声合成を行うスレッド数です。指定しない場合、代わりに環境変数 VV_CPU_NUM_THREADS の値が使われます。VV_CPU_NUM_THREADS が空文字列でなく数値でもない場合はエラー終了します。
--output_log_utf8 ログ出力をUTF-8でおこないます。指定しない場合、代わりに環境変数 VV_OUTPUT_LOG_UTF8 の値が使われます。VV_OUTPUT_LOG_UTF8 の値が1の場合はUTF-8で、0または空文字、値がない場合は環境によって自動的に決定されます。
--cors_policy_mode {CorsPolicyMode.all,CorsPolicyMode.localapps}
CORSの許可モード。allまたはlocalappsが指定できます。allはすべてを許可します。localappsはオリジン間リソース共有ポリシーを、app://.とlocalhost関連に限定します。その他のオリジンはallow_originオプションで追加できます。デフォルトはlocalapps。このオプションは--
setting_fileで指定される設定ファイルよりも優先されます。
--allow_origin [ALLOW_ORIGIN ...]
許可するオリジンを指定します。スペースで区切ることで複数指定できます。このオプションは--setting_fileで指定される設定ファイルよりも優先されます。
--setting_file SETTING_FILE
設定ファイルを指定できます。
--preset_file PRESET_FILE
プリセットファイルを指定できます。指定がない場合、環境変数 VV_PRESET_FILE、ユーザーディレクトリのpresets.yamlを順に探します。
--disable_mutable_api
辞書登録や設定変更など、エンジンの静的なデータを変更するAPIを無効化します。指定しない場合、代わりに環境変数 VV_DISABLE_MUTABLE_API の値が使われます。VV_DISABLE_MUTABLE_API の値が1の場合は無効化で、0または空文字、値がない場合は無視されます。エンジンディレクトリ内にあるファイルを全て消去し、新しいものに置き換えてください。
VOICEVOX ENGINE は皆さんのコントリビューションをお待ちしています!
詳細は CONTRIBUTING.md をご覧ください。
また VOICEVOX 非公式 Discord サーバーにて、開発の議論や雑談を行っています。気軽にご参加ください。
なお、Issue を解決するプルリクエストを作成される際は、別の方と同じ Issue に取り組むことを避けるため、Issue 側で取り組み始めたことを伝えるか、最初に Draft プルリクエストを作成することを推奨しています。
Python 3.11.9を用いて開発されています。 インストールするには、各 OS ごとの C/C++ コンパイラ、CMake が必要になります。
# 実行環境のインストール
python -m pip install -r requirements.txt
# 開発環境・テスト環境・ビルド環境のインストール
python -m pip install -r requirements-dev.txt -r requirements-build.txtコマンドライン引数の詳細は以下のコマンドで確認してください。
python run.py --help # 製品版 VOICEVOX でサーバーを起動
VOICEVOX_DIR= " C:/path/to/voicevox " # 製品版 VOICEVOX ディレクトリのパス
python run.py --voicevox_dir= $VOICEVOX_DIR # モックでサーバー起動
python run.py --enable_mock # ログをUTF8に変更
python run.py --output_log_utf8
# もしくは VV_OUTPUT_LOG_UTF8=1 python run.py CPU スレッド数が未指定の場合は、論理コア数の半分が使われます。(殆どの CPU で、これは全体の処理能力の半分です)
もし IaaS 上で実行していたり、専用サーバーで実行している場合など、
エンジンが使う処理能力を調節したい場合は、CPU スレッド数を指定することで実現できます。
python run.py --voicevox_dir= $VOICEVOX_DIR --cpu_num_threads=4 export VV_CPU_NUM_THREADS=4
python run.py --voicevox_dir= $VOICEVOX_DIR VOICEVOX Core 0.5.4 以降のコアを使用する事が可能です。
Mac での libtorch 版コアのサポートはしていません。
製品版 VOICEVOX もしくはコンパイル済みエンジンのディレクトリを--voicevox_dir引数で指定すると、そのバージョンのコアが使用されます。
python run.py --voicevox_dir= " /path/to/voicevox " Mac では、 DYLD_LIBRARY_PATHの指定が必要です。
DYLD_LIBRARY_PATH= " /path/to/voicevox " python run.py --voicevox_dir= " /path/to/voicevox " VOICEVOX Core の zip ファイルを解凍したディレクトリを--voicelib_dir引数で指定します。
また、コアのバージョンに合わせて、libtorchやonnxruntime (共有ライブラリ) のディレクトリを--runtime_dir引数で指定します。
ただし、システムの探索パス上に libtorch、onnxruntime がある場合、 --runtime_dir引数の指定は不要です。
--voicelib_dir引数、 --runtime_dir引数は複数回使用可能です。
API エンドポイントでコアのバージョンを指定する場合はcore_version引数を指定してください。(未指定の場合は最新のコアが使用されます)
python run.py --voicelib_dir= " /path/to/voicevox_core " --runtime_dir= " /path/to/libtorch_or_onnx " Mac では、 --runtime_dir引数の代わりにDYLD_LIBRARY_PATHの指定が必要です。
DYLD_LIBRARY_PATH= " /path/to/onnx " python run.py --voicelib_dir= " /path/to/voicevox_core " 以下のディレクトリにある音声ライブラリは自動で読み込まれます。
<user_data_dir>/voicevox-engine/core_libraries/<user_data_dir>/voicevox-engine-dev/core_libraries/ <user_data_dir>は OS によって異なります。
C:Users<username>AppDataLocal/Users/<username>/Library/Application Support//home/<username>/.local/share/ pyinstallerを用いたパッケージ化と Dockerfile を用いたコンテナ化によりローカルでビルドが可能です。
手順の詳細は 貢献者ガイド#ビルド を御覧ください。
GitHub を用いる場合、fork したリポジトリで GitHub Actions によるビルドが可能です。
Actions を ON にし、workflow_dispatch でbuild-engine-package.ymlを起動すればビルドできます。 成果物は Release にアップロードされます。 ビルドに必要な GitHub Actions の設定は 貢献者ガイド#GitHub Actions を御覧ください。
pytestを用いたテストと各種リンターを用いた静的解析が可能です。
手順の詳細は 貢献者ガイド#テスト, 貢献者ガイド#静的解析 を御覧ください。
依存関係はpoetryで管理されています。また、導入可能な依存ライブラリにはライセンス上の制約があります。
詳細は 貢献者ガイド#パッケージ を御覧ください。
VOICEVOX エディターでは、複数のエンジンを同時に起動することができます。 この機能を利用することで、自作の音声合成エンジンや既存の音声合成エンジンを VOICEVOX エディター上で動かすことが可能です。
VOICEVOX API に準拠した複数のエンジンの Web API をポートを分けて起動し、統一的に扱うことでマルチエンジン機能を実現しています。 エディターがそれぞれのエンジンを実行バイナリ経由で起動し、EngineID と結びつけて設定や状態を個別管理します。
VOICEVOX API 準拠エンジンを起動する実行バイナリを作ることで対応が可能です。 VOICEVOX ENGINE リポジトリを fork し、一部の機能を改造するのが簡単です。
改造すべき点はエンジン情報・キャラクター情報・音声合成の3点です。
エンジンの情報はルート直下のマニフェストファイル( engine_manifest.json )で管理されています。 この形式のマニフェストファイルは VOICEVOX API 準拠エンジンに必須です。 マニフェストファイル内の情報を見て適宜変更してください。 音声合成手法によっては、例えばモーフィング機能など、VOICEVOX と同じ機能を持つことができない場合があります。 その場合はマニフェストファイル内のsupported_features内の情報を適宜変更してください。
キャラクター情報はresources/character_infoディレクトリ内のファイルで管理されています。 ダミーのアイコンなどが用意されているので適宜変更してください。
音声合成はvoicevox_engine/tts_pipeline/tts_engine.pyで行われています。 VOICEVOX API での音声合成は、エンジン側で音声合成用のクエリAudioQueryの初期値を作成してユーザーに返し、ユーザーが必要に応じてクエリを編集したあと、エンジンがクエリに従って音声合成することで実現しています。 クエリ作成は/audio_queryエンドポイントで、音声合成は/synthesisエンドポイントで行っており、最低この2つに対応すれば VOICEVOX API に準拠したことになります。
VVPP ファイルとして配布するのがおすすめです。 VVPP は「VOICEVOX プラグインパッケージ」の略で、中身はビルドしたエンジンなどを含んだディレクトリの Zip ファイルです。 拡張子を.vvppにすると、ダブルクリックで VOICEVOX エディターにインストールできます。
エディター側は受け取った VVPP ファイルをローカルディスク上に Zip 展開したあと、ルートの直下にあるengine_manifest.jsonに従ってファイルを探査します。 VOICEVOX エディターにうまく読み込ませられないときは、エディターのエラーログを参照してください。
また、 xxx.vvppは分割して連番を付けたxxx.0.vvpppファイルとして配布することも可能です。 これはファイル容量が大きくて配布が困難な場合に有用です。 インストールに必要なvvppおよびvvpppファイルはvvpp.txtファイルにリストアップしています。
voicevox-client @voicevox-client ・・・ VOICEVOX ENGINE の各言語向け API ラッパー
LGPL v3 と、ソースコードの公開が不要な別ライセンスのデュアルライセンスです。 別ライセンスを取得したい場合は、ヒホに求めてください。
X アカウント: @hiho_karuta