HackWare.ru

Программа для озвучивания текстов любой длины на своём компьютере с помощью ИИ в графическом интерфейсе

Оглавление

1. Программа для озвучивания текстов на любом языке нейросетью

2. Установка Hy-MT2 с графическим интерфейсом

3. Как пользоваться VoxCPM2 с графическим интерфейсом для озвучивания текстов

3.1 Audio file voice cloning (клонирование голоса из аудио файла пользователя)

3.2 Preset voice cloning (встроенные голоса для клонирования)

3.3 Create voice from description (создание голоса по описанию)

3.4 Record voice with microphone (запись голоса с микрофона)

3.5 Saved voice presets (сохранённые образцы голоса)

4. Автоматическое транскрибирование речи

5. Сохранение образцов голоса

6. Настройки MiAl AI Text-to-Speech (VoxCPM2)

7. Как запустить озвучивание текста на своём компьютере


1. Программа для озвучивания текстов на любом языке нейросетью

Это статья расскажет как запускать локальную нейросеть прямо на своём компьютере для озвучивания текстов. Это бесплатно и без ограничений на длину текстов. Поддерживается создание новых голосов по описанию, а также клонирование имеющихся голосов.

Это описание ИИ может напомнить вам об уже имеющейся на HackWare.ru статье под названием «Локальный TTS на 30 языках с клонированием голоса (инструкция по использованию VoxCPM2)». В той статье мы делали всё из перечисленного выше, но работали исключительно в командной строке.

Данная статья опять посвящена VoxCPM2, но теперь мы будем работать в удобном графическом интерфейсе (веб-интерфейсе, если быть точным). Причём это не просто какая-то простая обёртка — серверный код теперь более 5 тысяч строк, а клиентский код почти 7 тысяч строк — огромное количество усилий было затрачено именно на удобство пользователя: теперь вам не нужно заботиться ни о каких подготовительных действиях связанных с озвучиванием текста — всё вы можете делать в одном интерфейсе. Вы теперь можете нажатием кнопки в веб-браузере записать свой голос с микрофона, другой кнопкой транскрибировать текст и, наконец, запустить озвучивание текста вашим голосом. Чтобы второй раз так не напрягаться и не записывать голос и не делать транскрибирование, следующей кнопкой вы можете сохранить ваш голос как готовый пресет для озвучивания. Либо можете выбрать аудиофайл с любым голосом и также в несколько кликов запустить озвучивание. Все настройки VoxCPM2, и даже те которых у этой нейросети нет, теперь там же в веб-интерфейсе.

В общей сложности теперь программа может использовать 6 нейросетей для тех или иных задач. Но это не означает, что теперь выше требования к ресурсам — скрипт сам при необходимости выгружает не нужные в данный момент нейросети и загружает нужные.

И добавлена очень важная разработка: в прошлой статье я говорил, что невозможно нормально клонировать голос на одном языке и затем озвучить этим голосом текст на другом языке. Я сумел это побороть: буквально несколькими кликами мыши в веб-интерфейсе вы теперь можете голосом на любом языке озвучивать текст на другом любом языке!

Пример оригинального голоса на английском языке:

А это озвучивание текста на русском языке тем же самым голосом:

Я назвал новую программу MiAl AI Text-to-Speech. Вы можете скачать архив с серверным и клиентским кодом, а также образцами голосов по следующей ссылке: https://hackware.ru/files/MiAl_AI_Text-to-Speech.zip

Возможности MiAl AI Text-to-Speech:

  • 5 источников аудио и голоса: выбор аудио файла на диске; выбор голоса из списка пресетов; создание нового голоса по своему описанию или выбор из имеющихся описаний; запись голоса с микрофона; выбор сохранённых голосов записанных с микрофона или сохранённых аудио файлов
  • автоматическая обрезка слишком длинных аудио и автоматическая транскрибация. Для транскрибации 3 модели ИИ на выбор
  • выбор модификаторов клонирования из списка пресетов или указание собственного для любого режима клонирования голоса (выбранного пресета, аудиофайла, записи с микрофона, сохранённых пользователем записей)
  • запись с микрофона с использованием двух режимов на выбор: MediaRecorder (пытается использовать lossless, есть возможность отключить шумоподавление, автоматическую подстройку громкости и подавление эха — всё это даёт самую близкую к реальности запись голоса), а также AudioWorklet с гарантированным lossless и без обработок аудио влияющих на характеристики голоса
  • прослушивание выбранного аудио прямо в веб-интерфейсе независимо от источника аудиозаписи
  • удобная настройка основных параметров модели: CFG Scale, Inference Timesteps, нормализация аудио, денойзинг
  • возможность использовать динойзинг до озвучивания — уменьшает пиковое потребление видеопамяти
  • настройки производительности: выбор устройства для инференса (Auto, CUDA, MPS, CPU), включение и отключение torch.compile оптимизации
  • сохранение аудио в любой популярный аудио формат
  • межязыковое клонирование голоса
  • вывод подробной статистики (количество обработанных параграфов, слов и символов, время обработки, скорость обработки символов/с, размер сгенерированного аудио
  • автоматическое создание группы озвучек по одинаковым настройкам (чтобы выбрать самый удачный вариант)
  • автоматическая разбивка слишком больших параграфов по предложениям (чтобы не допустить деградацию качества), поочерёдное озвучивание этих фрагментов и их объединение без длинной паузы — на слух получается как будто бы параграф был озвучен за один раз
  • использование первого параграфа в качестве референса — эта наработка импортирована из предыдущей версии скрипта, подробнее о ней рассказывалось в первой части
  • интеллектуальная загрузка и выгрузка моделей ИИ. То есть за одну сессию вы можете использовать все 6 моделей (1 основная и 5 вспомогательных), но это не увеличивает требование к видеопамяти — всё остаётся так, как если бы использовали только 1 модель
  • возможность принудительно выгрузить вспомогательные модели или основную модель из веб-интерфейса для освобождения ресурсов без остановки сервера
  • возможно прослушивать сгенерированную речь прямо в веб-браузере, а также автоматическое скачивание файла на диск после генерации
  • сервер использует подключения к внешней сети только для первоначального скачивания моделей. Код построен так, что если файлы моделей уже сохранены в кеше, то сервер не делает ни одного онлайн запроса. Файлы с весами моделей скачиваются автоматически (и сохраняются в кеше) — вам не нужно об этом беспокоиться

Ну и разные другие оптимизации по мелочи, которые мало на что влияют и которые оценят разве что другие разработчики, например, минимизирование запросов от клиента к локальной серверной части путём кеширования полученных данных.

2. Установка Hy-MT2 с графическим интерфейсом

Запуск моделей и сопутствующего программного обеспечения успешно протестирован в Linux и Windows — вы можете использовать любую из этих операционных систем. Начните с этих статей:

Если вы пользователь Windows, то запустите WSL:

wsl

Дальше процесс установки идентичный на обоих этих операционных системах:

mkdir ~/ai/VoxCPM2/
cd ~/ai/VoxCPM2/
python -m venv venv
source venv/bin/activate
pip install voxcpm qwen-asr
wget -U Chrome https://hackware.ru/files/MiAl_AI_Text-to-Speech.zip
unzip MiAl_AI_Text-to-Speech.zip

Запуск:

uvicorn MiAl-VoxCPM2:app --host localhost --port 8002

При успешном запуске должна появится надпись:

INFO: Uvicorn running on http://localhost:8002 (Press CTRL+C to quit)

Веб-интерфейс доступен по адресу: http://localhost:8002

Обратите внимание, что при первом использовании будут скачены файлы моделей — это примерно 4-5 гигабайт на основную модель и 2-6 гигабайта на второстепенные. Скорость скачивания может зависеть от вашего интернет соединения и может быть довольно долгой.

Показанные выше команды нужно выполнить только один раз, при дальнейших запусках достаточно выполнить только:

cd ~/ai/VoxCPM2/
source venv/bin/activate
uvicorn MiAl-VoxCPM2:app --host localhost --port 8002

3. Как пользоваться VoxCPM2 с графическим интерфейсом для озвучивания текстов

Текст для озвучивания введите в поле «Text to read aloud». Программа сама заботится о правильной предварительной обработке текста перед озвучиванием, но вы всё равно можете разбить текст на абзацы в тех местах, где должна быть небольшая пауза.

Затем выберите один источник голоса:

3.1 Audio file voice cloning (клонирование голоса из аудио файла пользователя)

Загрузите аудио файл с голосом. Сразу появится проигрыватель в котором вы можете прослушать этот файл.

Настройкой «Trim files longer than 50 seconds» вы включаете автоматическую обрезку файла при его обработке на сервере.

Кнопкой Audio Pre-Transcription запускается транскрибирование аудио — если вы не понимаете для чего это нужно, то читайте первую часть, в которой дано объяснение.

По желанию вы можете изменить характеристики голоса с помощью Cloning modifier. Описание каждого пресета показано в Modifier style. Кроме выбора готовых вариантов, вы можете отредактировать каждый из вариантов под свои нужды, либо написать свой собственный вариант.

Если вы планируете использовать этот голос снова, то вы можете сохранить его кнопкой «Save Voice».

3.2 Preset voice cloning (встроенные голоса для клонирования)

Здесь собрано несколько голосов чтобы вы могли проверить работу программы без необходимости искать голос для клонирования. Просто выберите интересующий вас голос (вы также можете ознакомиться с ним прямо на странице) и озвучьте этим голосом текст.

Если вы хотите что-то изменить в голосе, то используйте Cloning modifier.

Примечание: Эти голоса собраны в переменной VOICE_DB в исходном коде сервера.

3.3 Create voice from description (создание голоса по описанию)

Выберите описание голоса и озвучьте им ваш текст. Вы можете ввести ваше собственное описание или модифицировать имеющееся.

Длинный текст будет озвучен одним голосом благодаря методике использования первого абзаца в качестве референса.

3.4 Record voice with microphone (запись голоса с микрофона)

Вы можете записать голос используя микрофон вашей гарнитуры, ноутбука или телефона.

Имеется два метода записи:

1) MediaRecorder пытается использовать lossless (но не гарантирует это в некоторых браузерах). Также по умолчанию отключает 3 настройки:

  • Echo Cancellation — подавление эха
  • Noise Suppression — шумоподавление
  • Automatic Gain Control (AGC) — автоматическая подстройка громкости

Эти настройки на первый взгляд как бы улучшают запись — она становится более громкой и менее шумной, но если прислушаться как следует, то получится что из-за обработок выходит что эта запись не совсем вашего голоса. Например, автоматическая подстройка громкости стирает такую особенность вашего голоса как понижение тона в конце фраз. А подавление эха и шума меняют тембр. Тем не менее, вы всё равно можете включить эти настройки если вам нравится результат, но по умолчанию они отключены.

2) AudioWorklet — это более радикальный вариант записать максимально естественный голос. При включении «Use AudioWorklet for uncompressed PCM recording» будет гарантировано записан lossless без обработок «улучшающих» качество звучания.

После записи голоса вы можете прослушать полученный результат прямо в интерфейсе, вы можете сделать автоматическое транскрибирование (либо ввести произнесённый текст вручную) и можете сохранить голос для дальнейшего использования.

Прямо отсюда вы можете запустить озвучивание только что записанным голосом, в том числе изменив его с помощью Cloning modifier.

3.5 Saved voice presets (сохранённые образцы голоса)

Здесь вы найдёте сохранённые записи с микрофона, а также сохранённые аудио файлы с голосами.

Как и в других вкладках, вы можете запустить автоматическое транскрибирование текста (если это не сделано перед сохранением голоса, так как программа сохраняет расшифровку аудио, если она была доступна или если вы выбрали такой пункт при сохранении), а также применить Cloning modifier и запустить озвучивание текста выбранным голосом.

4. Автоматическое транскрибирование речи

Уже многократно упоминалось про транскрибирование речи — эта расшифровка аудио нужна для улучшения качества клонирования.

Если вы хотите воспользоваться этим сервисом, то вам на выбор будет предоставлено 3 нейросети:

1) SenseVoiceSmall — очень лёгкая и быстрая, но поддерживает только китайский, английский, японский, корейский, юэский китайский и nospeech. Русский не поддерживает точно — я проверял.

2) Fun-ASR-MLT-Nano-251 — хороший баланс между качеством и требованиями к ресурсам, поддерживает более 31 языка. В официальном списке русского нет, но на самом деле неплохо расшифровывает речь на русском.

3) Qwen3-ASR-1.7B — самая мощная модель, но и самая ресурсоёмкая. Поддерживает 52 языка и диалекта. Русский поддерживает официально. Лучше справляется с расшифровкой русской речи в трудных случаях.

Кстати, Qwen3-ASR-1.7B посвящена отдельная статья, поскольку это очень стоящая ИИ модель: Локальное распознавание речи на 30 языках (инструкция по использованию Qwen3-ASR-1.7B)

При оценке скорости моделей, помните, что при самом первом запуске модели загружаются из интернета, то есть реальную скорость работы моделей вы узнаете при втором и последующем их использовании. В моём случае хотя размер Fun-ASR-MLT-Nano-251 и Qwen3-ASR-1.7B различается в 2 раза, скорость работы этих двух моделей оказалось одинаковой, поэтому по умолчанию я выбрал Qwen3-ASR-1.7B. Но вы можете выбрать любую из этих трёх моделей. При тестировании этих моделей вам не нужно беспокоиться что они занимают место в видеопамяти: при загрузке любой из этих моделей все остальные выгружаются из памяти. А при использовании основной модели для озвучивания текста, выгружаются вообще все второстепенные модели.

5. Сохранение образцов голоса

При сохранении образца голоса, вам достаточно придумать имя пресета. Также вы можете сделать другую обработку в соответствии с показанными опциями:

После сохранения (если вы выбрали транскрибирование аудио на этапе сохранения, то это может занять некоторое время) будет показана информации о кодеке сохранённого аудио и используется ли сжатие с потерями или без. Понятно, для имеющихся файлов вы и так знаете эту информацию, но при записи с микрофона в различных браузерах могут использоваться разные кодеки и разные режимы сжатия аудио — lossless или lossy.

6. Настройки MiAl AI Text-to-Speech (VoxCPM2)

Большинство настроек объяснены в первой части — поэтому если вам что-то непонятно, то можете обратиться к ней, а здесь совсем кратко.

Уменьшая значение Inference Timestep вы ускоряете генерацию озвучки ценой ухудшения качества. 15-25 шагов дают уже хороший результат, поэтому если вы запускаете на слабом железе, то можете уменьшить установленное по умолчанию значение, которое равно 30 шагам.

Из нового — вы можете выбрать формат сгенерированного файла (настройка Output File Format). FLAC — это популярный формат сжатия без потерь, но вы можете выбрать, например, mp3 если вам так больше нравится.

В Use Denoising вы можете выбрать денойзинг перед обработкой основной моделью или во время обработки основной моделью — первый вариант может уменьшать пиковое потребление видеопамяти. По умолчанию денойзинг выключен — используйте его только если образец голоса действительно зашумлён.

Generation Repeats — сколько озвучек одного текста создать по одинаковым настройкам. Речь различается от генерации к генерации, поэтому можно сделать несколько проб и выбрать лучшую.

Enable Cross-Lingual Voice Cloning — если голос относится к одному языку, а озвучиваемый текст к другому, то включите эту опцию и выберите целевой язык.

Этот метод работает лучше если в тексте 2 или больше абзацев.

В начале я приводил пример хорошего переноса, но нужно понимать, что ограничения тоже есть.

Чтобы было понятно, совсем немного теории: кроме иностранного акцента когда не совсем точно произносят отдельные звуки (которых, например, нет в родном языке говорящего на иностранном языке), также выделяют просодический акцент — устойчивый иностранный акцент на уровне интонации и ритма. То есть носители языка могут понять что с ними говорит не носитель даже если он правильно произносит все звуки, но используют неродную просодию — переносит интонацию и ритм из своего языка в иностранный.

Акцент часто первым бросается в уши, но просодический трансфер может быть ещё более сильным маркером неродной речи и выдавать не-носителя даже при почти незаметном сегментном акценте.

В общем, вы вполне можете добиться того, что в сгенерированном тексте все звуки будут произноситься правильно, но при этом сама речь в целом будет создавать очень сильное ощущение что всё-равно что-то не так.

И это нельзя назвать багом нейросети — наоборот, она заточена максимально точно передавать самые разные нюансы речи. В том числе и те, которые передавать в некоторых случаях не хотелось бы.

Экспериментируя с разными фрагментами образцов, выбирая более короткие или длинные фрагменты, используя модификаторы клонирования и клонирвоание в несколько этапов, можно улучшить результаты. Но иногда просто сразу получается хорошо, мой пример получен обычным клонированием + включённой опцией Enable Cross-Lingual Voice Cloning, без особых усилий.

Что касается почему лучше если в тексте есть хотя бы 2 (или более) абзаца для лучшего качества Enable Cross-Lingual Voice Cloning, то дело в том что уже в самом коде используется трёхэтапное клонирование. Я заметил, что первое клонирование голоса на иностранный язык при правильном модификаторе уже даёт неплохой результат, а затем последующее клонирование почти полностью вымывает иностранный акцент.

Так вот, если в тексте всего лишь один абзац, то он становится сам для себя промежуточным в этой цепочке клонирования — из-за этого акцент продолжает протекать в новую озвучку. Если параграфов больше одного, то в качестве промежуточного всегда используется второй или любой другой достаточно длинный для получения промежуточного референса, и затем он клонируется для получения первого абзаца (уже совсем без акцента) и этот первый абзац уже используется в качестве референса для всех остальных. Это моя личная разработка. Возможно, удастся придумать что-то ещё более эффективное, ведь эта нейросеть изначально может принимать 2 аудио файла в качестве референсов и брать из них разные характеристики.

7. Как запустить озвучивание текста на своём компьютере

После ввода текста для озвучивания и выбора образца голоса или его описания, просто нажмите кнопку «Send» или «Generate Speech» (они различаются тем, что одна находится вверху страницы, а вторая внизу страницы — удобно, если вы развернули область с настройками).

Каждый файл озвучки будет автоматически сохранён вашим веб-браузером на диск. Последний сгенерированный файл также доступен для прослушивания прямо в веб-браузере.

Обратите внимания что имеется статистика работы модели.

В консоли сервера выводится подробнейшая информация — вы можете следить за прогрессом, в том числе видеть, на каком этапе находится модель и какой абзац в данный момент озвучивается.


Не забывайте, что донаты мотивируют автора: https://kali.tools/?page_id=292. На очереди очень много интересного!

История обновлений

No update history yet.

Рекомендуется:
↑