Нейро Психолог
Генерация голоса с помощью ComfyUI

Введение. Что такое ComfyUI: особенности визуального программирования для AI

Суть подхода: ComfyUI реализует парадигму визуального программирования – вместо написания кода пользователь соединяет «ноды» (узлы) в графической среде, формируя рабочий процесс (workflow).

Ключевые преимущества:

наглядность: вся логика обработки видна на схеме;

модульность: ноды можно переиспользовать и комбинировать;

низкий порог входа: не требуется глубокое знание Python;

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

Архитектура:

ядро на Python веб‑интерфейс (React);

поддержка CUDA/ROCm для GPU‑ускорения;

расширяемость через кастомные ноды (Python‑скрипты).

2. Почему ComfyUI подходит для синтеза речи

Гибкость пайплайнов:

легко комбинировать TTS‑модели, вокодеры и постобработку;

возможность встраивать предобработку текста (NLP‑ноды);

интеграция с аудиоэффектами (реверберация, эквализация).

Ресурсная эффективность:

контроль загрузки GPU/CPU через настройки нод;

кэширование промежуточных результатов;

поддержка квантованных моделей (int8, fp16).

Сообщество и экосистема:

большой набор готовых нод для аудио (через ComfyUI Manager);

шаблоны рабочих процессов для TTS/voice cloning;

активная разработка плагинов.

3. Обзор возможностей: от базового TTS до продвинутого клонирования голоса

Базовый синтез речи (TTS):

подключение моделей типа Tacotron2, FastSpeech2;

настройка интонации и темпа через параметры нод;

экспорт аудио в WAV/MP3.

Клонирование голоса (Voice Cloning):

работа с моделями YourTTS, VITS;

обучение на малом датасете (5–10 минут аудио);

перенос стиля диктора на новый текст.

Продвинутые сценарии:

многоголосный синтез (диалоги);

добавление эмоций (радость, грусть, гнев);

имитация акцентов и возрастных характеристик;

генерация фоновых звуков (шёпот, смех).

Интеграция с другими AI‑инструментами:

подача текста из LLM (например, через API ChatGPT);

синхронизация аудио с видео (через ноды для FFmpeg);

обработка голоса стилями (например, «робот», «призрак»).

4. Установка и настройка ComfyUI для работы с голосовыми моделями

Системные требования:

ОС: Windows 10/11, Linux, macOS (Apple Silicon);

GPU: NVIDIA (рекомендуется) или AMD с поддержкой ROCm;

ОЗУ: минимум 8 ГБ (для малых моделей), 16 ГБдля крупных;

место на диске: 15 ГБ(модели кэш).

Способы установки:

1. ComfyUI Desktop (рекомендуется для новичков):

скачать установщик с официального сайта;

запустить .exe/.dmg, следовать инструкциям;

после установки – ярлык на рабочем столе.

2. Ручная установка через Python:

установить Python 3.10и Git;

клонировать репозиторий:

```

git clone https://github.com/comfyanonymous/ComfyUI

```

установить зависимости:

```

pip install -r requirements.txt

```

запустить:

```

python main.py

```

Первоначальная настройка:

запуск ComfyUI (через ярлык или командную строку);

проверка доступности GPU (в логах должно быть «Using CUDA»);

установка менеджера нод:

в браузере открыть `http://127.0.0.1:8188`;

перейти в «Manager» → «Install Custom Nodes»;

найти и установить пакеты для аудио (например, `comfyui-audio`).

Загрузка моделей:

скачать TTS‑модели (например, из Hugging Face);

поместить в папку `ComfyUI/models/tts`;

перезапустить ComfyUI для индексации.

Тестовый запуск:

загрузить шаблон рабочего процесса (пример: `tts_basic.json`);

подключить ноду «Text Input» → «TTS Model» → «Vocoder» → «Audio Output»;

нажать «Queue Prompt» и проверить аудио в выходной папке.

Примечание: Для стабильной работы рекомендуется:

обновлять ComfyUI и ноды через «Manager»;

использовать виртуальные окружения Python (venv/conda);

хранить модели на SSD для ускорения загрузки.

Глава 1. Интерфейс и принципы построения рабочих процессов

1.1. Структура нод (узлов) и их взаимосвязи

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

Ключевые элементы ноды:

Заголовок – название ноды и её тип (например, Text Input, TTS Model).

Входы (слева) – поля для подключения данных от других нод.

Выходы (справа) – результаты работы ноды, передаваемые дальше.

Параметры (в центре) – настраиваемые опции (ползунки, выпадающие списки, текстовые поля).

Статус – индикатор выполнения (цветной кружок: зелёный – готово, жёлтый – в процессе, красный – ошибка).

Типы связей между нодами:

Данные – передача аудио, текста, параметров.

Управление – условные переходы (например, ветвление по качеству аудио).

Ссылки – повторное использование результатов (кэширование).

Принцип построения workflow:

1. Размещаете ноды на холсте.

2. Соединяете выходы одной ноды со входами другой (перетаскиванием мыши).

3. Настраиваете параметры каждой ноды.

4. Запускаете процесс кнопкой Queue Prompt.

1.2. Базовые ноды для обработки аудио

Ниже – ключевые ноды для синтеза и обработки голоса.

1. Text Input

Функция: ввод текстового сценария для синтеза.

Вход: отсутствует.

Выход: строка текста (тип STRING).

Параметры: поле для ручного ввода или загрузки из файла.

2. TTS Model

Функция: преобразование текста в мел‑спектрограмму.

Вход: текст (STRING) от Text Input.

Выход: мел‑спектрограмма (SPECTROGRAM).

Параметры:

выбор модели (Tacotron2, FastSpeech2 и др.);

скорость речи (speed);

интонация (pitch).

3. Vocoder

Функция: перевод спектрограммы в аудиосигнал.

Вход: спектрограмма (SPECTROGRAM) от TTS Model.

Выход: аудиофайл (AUDIO).

Параметры:

тип вокодера (WaveNet, MelGAN);

частота дискретизации (sample rate).

4. Audio Output

Функция: сохранение аудио на диск.

Вход: аудио (AUDIO) от Vocoder.

Выход: путь к файлу (PATH).

Параметры:

формат (WAV, MP3);

папка для сохранения.

5. Audio Effect

Функция: постобработка звука (эквализация, реверберация).

Вход: аудио (AUDIO).

Выход: обработанное аудио (AUDIO).

Параметры:

тип эффекта (reverb, eq, compression);

интенсивность.

6. Voice Cloner

Функция: клонирование голоса по референсному аудио.

Входы:

текст (STRING);

референсное аудио (AUDIO).

Выход: синтезированное аудио (AUDIO) в стиле диктора.

Параметры:

модель (YourTTS, VITS);

степень переноса стиля (style strength).

1.3. Сохранение и экспорт рабочих процессов

Сохранение workflow:

1. В меню File выберите Save или Save As.

2. Файл сохраняется в формате JSON (например, `tts_workflow.json`).

3. В файле хранятся:

позиции нод на холсте;

связи между нодами;

значения параметров.

Экспорт для повторного использования:

Шаблоны: сохраняйте типовые цепочки (например, «Базовый TTS») как шаблоны.

Обмен: передавайте JSON‑файл коллегам – они откроют его в своём ComfyUI через Load.

Резервное копирование:

Храните копии JSON‑файлов в облаке или системе контроля версий (Git).

Для критичных проектов дублируйте модели и настройки.

Импорт чужого workflow:

1. Скачайте JSON‑файл.

2. В ComfyUI нажмите Load и выберите файл.

3. Проверьте:

наличие всех требуемых моделей (могут быть указаны в комментариях к нодам);

корректность путей к файлам.

Советы:

Используйте комментарии (Note Node) для описания логики workflow.

Группируйте ноды в логические блоки (через Ctrl + G).

Тестируйте workflow поэтапно (запускайте отдельные подграфы через Right‑click → Execute).

Глава 2. Подготовка данных для синтеза

2.1. Требования к аудиозаписям

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

Основные форматы:

WAV (без сжатия) – предпочтительный вариант;

FLAC (сжатие без потерь) – допустимый альтернативный формат;

MP3/OGG (сжатие с потерями) – не рекомендуются из‑за артефактов.

Ключевые параметры:

Частота дискретизации:

минимум – 16 кГц (базовое качество);

оптимально – 44,1 кГц или 48 кГц (студийное качество);

для профессиональных моделей – 96 кГц (редко, из‑за роста объёма данных).

Глубина квантования: 16 бит (стандарт) или 24 бит (для высокоточных моделей).

Количество каналов: моно (1 канал) – обязательно (стерео создаёт артефакты).

Длительность фрагмента:

для TTS – до 30 секунд;

для клонирования голоса – от 30 секунд до 5 минут на один пример.

Уровень громкости:

средний уровень – −18 дБ до −12 дБ;

пики не выше −6 дБ (во избежание клиппинга).

Дополнительные требования:

отсутствие фоновых шумов (уровень шума < −40 дБ);

паузы в начале и конце записи – 100–200 мс;

чёткое произношение без запинок и повторов;

стабильная интонация в пределах одного фрагмента.

2.2. Очистка и предобработка звука

Этапы обработки для устранения артефактов и приведения аудио к стандартному виду.

1. Удаление тишины и пауз

Инструменты:

`sox` (команда `silence`);

библиотеки Python: `pydub`, `librosa`.

Параметры:

порог обнаружения тишины – −40 дБ;

минимальная длительность паузы – 300 мс.

2. Нормализация громкости

Цель: привести уровень к −14 LUFS (стандарт для медиа).

Методы:

пиковая нормализация (peak normalization);

RMS‑нормализация (по среднеквадратичному уровню).

Инструменты:

`ffmpeg` (`-af loudnorm`);

`pysox` (Python).

3. Подавление шума

Алгоритмы:

спектральное вычитание (spectral subtraction);

вейвлет‑фильтрация;

нейросети (например, `noisereduce`).

Параметры:

полоса подавления – 20 Гц–20 кГц;

глубина подавления – 10–20 дБ.

4. Эквализация

Коррекция частотного баланса:

усиление диапазона 1–4 кГц (разборчивость речи);

ослабление ниже 80 Гц (низкочастотный гул).

Инструменты:

`sox` (`equalizer`);

`scipy.signal` (Python).

5. Ресамплинг

Приведение к единой частоте дискретизации (например, 48 кГц).

Метод:

линейная интерполяция (быстро, но с артефактами);

Sinc‑интерполяция (качественно, медленнее).

Инструменты:

`ffmpeg` (`-ar 48000`);

`librosa.resample()`.

6. Удаление кликов и щелчков

Алгоритмы:

медианная фильтрация;

замена аномалий линейной интерполяцией.

Инструменты:

`audacity` (ручной режим);

скрипты на `numpy`.

2.3. Создание текстовых скриптов для синтеза

Требования к текстам:

Грамматическая корректность – отсутствие ошибок и опечаток.

Длина фразы:

максимум – 250 символов (включая пробелы);

оптимально – 10–50 слов.

Полнота предложений – без обрывов на полуслове.

Разнообразие интонаций:

повествовательные предложения;

вопросы (не менее 30% от общего объёма);

восклицания (5–10%).

Фонетическое покрытие:

включение всех фонем языка;

баланс гласных и согласных;

примеры слов с редкими звукосочетаниями.

Особые правила для русского языка:

Обязательное использование буквы «ё» (не заменять на «е»).

Указание ударений в омографах (например, «за́мок» vs «замо́к») через символ `+`.

Разделение сложных числительных (например, «двадцать один» вместо «21»).

Структура датасета:

1. Аудиофайлы:

формат – WAV, 48 кГц, 16 бит, моно;

имена файлов – уникальные идентификаторы (например, `sample_001.wav`).

2. Текстовые расшифровки:

формат – TSV или CSV;

колонки:

`file_name` (имя аудиофайла);

`text` (дословная расшифровка).

кодировка – UTF‑8 без BOM.

Пример TSV‑файла:

```

file_name text

sample_001 Книга собирает жемчужины человеческой мысли.

sample_002 Мы предлагаем вам замечательную книгу!

sample_003 Книга рекомендована школьникам от пяти лет.

```

Рекомендации по сбору данных:

Объём:

минимальный – 30 минут чистого аудио;

рекомендуемый – 60 минут;

оптимальный – 90 минут и более.

Диктор:

один человек для одного амплуа;

естественная манера речи (без актёрской игры, если не требуется).

Запись:

в тихой комнате с акустической обработкой;

микрофон на расстоянии 15–30 см от рта;

отключение уведомлений и фоновых звуков.

Проверка качества:

Прослушать каждый фрагмент на наличие артефактов.

Сверять текст с аудио (ошибки снижают качество модели).

Использовать метрики:

WER (Word Error Rate) для распознавания речи;

MOS (Mean Opinion Score) для субъективной оценки.

Глава 3. Простые TTS‑решения в ComfyUI

3.1. Подключение стандартных моделей (Tacotron2, FastSpeech)

ComfyUI позволяет подключать популярные TTS‑модели через специализированные ноды. Ниже – пошаговая инструкция для двух базовых архитектур.

1. Tacotron2

Назначение: генерация мел‑спектрограммы из текста (требует вокодера для финального аудио).

Подключение:

1. Установите ноду `TTS: Tacotron2` через ComfyUI Manager (раздел Custom Nodes).

2. Загрузите предобученную модель (например, из репозитория Hugging Face):

формат: `.pt` или `.ckpt`;

рекомендуемые версии: `tacotron2-lj-v2`, `tacotron2-multi`.

3. Поместите модель в папку:

```

ComfyUI/models/tts/tacotron2/

```

4. В ноде укажите путь к модели через параметр Model Path.

Входные параметры ноды:

`text` – строка текста (подключается от Text Input);

`speaker_id` – идентификатор диктора (для мультидикторных моделей);

`speed` – коэффициент скорости речи (по умолчанию: 1.0).

Выход: `mel_spectrogram` (передаётся в вокодер).

2. FastSpeech2

Преимущества перед Tacotron2:

выше скорость синтеза;

стабильность интонации;

меньше артефактов при длинных текстах.

Подключение:

1. Найдите ноду `TTS: FastSpeech2` в Manager.

2. Скачайте модель (например, `fastspeech2-vctk`) и поместите в:

```

ComfyUI/models/tts/fastspeech2/

```

3. Укажите путь в параметре Model Path ноды.

Входные параметры:

`text` – входной текст;

`pitch_control` – регулировка высоты тона (диапазон: 0.8–1.2);

`energy_control` – контроль громкости слогов (0.8–1.2).

Выход: `mel_spectrogram`.

Важно: Для обеих моделей требуется вокодер (например, WaveGlow или HiFi‑GAN) для преобразования спектрограммы в аудио.

3.2. Настройка параметров: скорость, тон, громкость

1. Скорость речи (Speed)

Где настраивается: в ноде TTS‑модели (параметр `speed`).

Диапазон:

0.5 – замедленная речь (в 2 раза);

1.0 – стандартная скорость;

2.0 – ускоренная речь (в 2 раза).

Рекомендации:

для аудиокниг: 0.9–1.1;

для уведомлений: 1.2–1.4.

2. Тон (Pitch)

Способы регулировки:

через параметр `pitch_control` в FastSpeech2;

с помощью ноды `Audio Effect` (эквализация диапазона 100–500 Гц).

Эффекты:

повышение тона → более «молодой» голос;

понижение тона → более «солидный» голос.

Диапазон: 0.8–1.2 (коэффициент).

3. Громкость

На уровне модели: параметр `energy_control` в FastSpeech2 (влияет на амплитуду слогов).

На уровне аудио:

нода `Audio Effect` → параметр `volume` (в дБ);

нода `Audio Output` → настройка Normalization (LUFS).

Рекомендуемые уровни:

пиковая громкость: не выше −6 дБ;

средняя громкость: −14 LUFS (стандарт для медиа).

4. Дополнительные параметры

Паузы между фразами:

вставляйте символы `…` или `[PAUSE]` в текст;

настраивайте длительность через `pause_duration` (если поддерживается моделью).

Акценты на словах:

используйте разметку: `важное слово`;

регулируйте через `energy_control` для отдельных сегментов.

3.3. Генерация одноголосового аудио

Пошаговый workflow:

1. Ввод текста

Нода: `Text Input`.

Пример текста:

```

Привет! Это пример синтеза речи в ComfyUI.

```

2. Синтез спектрограммы

Нода: `TTS: FastSpeech2` (или `Tacotron2`).

Настройки:

`speed` = 1.0;

`pitch_control` = 1.0;

`energy_control` = 1.0.

3. Преобразование в аудио

Нода: `Vocoder: HiFi-GAN` (или `WaveGlow`).

Параметры:

`sample_rate` = 48000;

`denoiser_strength` = 0.01 (для подавления шума).

4. Постобработка

Нода: `Audio Effect`.

Действия:

эквализация (усиление 1–4 кГц);

нормализация громкости.

5. Экспорт

Нода: `Audio Output`.

Настройки:

`format` = WAV;

`output_path` = `./output/speech.wav`.

Запуск процесса:

1. Соедините ноды в порядке:

```

Text Input → FastSpeech2 → HiFi-GAN → Audio Effect → Audio Output

```

2. Нажмите Queue Prompt.

3. Проверьте результат в указанной папке.

Типичные ошибки и решения:

«Модель не найдена»: убедитесь, что файл модели лежит в правильной папке и указан верный путь.

«Артефакты в аудио»: попробуйте другой вокодер или уменьшите `denoiser_strength`.

«Обрыв звука»: проверьте длину текста (не более 250 символов) и наличие пауз.

Советы по оптимизации:

Для быстрого тестирования используйте малые модели (например, `fastspeech2-small`).

Сохраняйте рабочие процессы как шаблоны (File → Save As Template).

Для серийной генерации создавайте циклы через ноду `Batch Process`.

Глава 4. Работа с предобученными моделями

4.1. Загрузка и интеграция моделей из Hugging Face

Шаг 1. Подготовка окружения

1. Убедитесь, что установлен ComfyUI Manager (через меню Manager → Install Custom Nodes).

2. Установите необходимые зависимости:

`transformers` (для загрузки моделей);

`torch` (PyTorch для инференса);

`soundfile` (для работы с аудио).

```bash

pip install transformers torch soundfile

```

Шаг 2. Поиск модели на Hugging Face

1. Перейдите на [huggingface.co/models](https://huggingface.co/models).

2. Используйте фильтры:

Task: Text-to-Speech, Voice Cloning;

Language: выберите нужный язык (например, Russian, English);

Library: PyTorch.

3. Примеры популярных моделей:

`facebook/fairseq-wav2vec2-large-960h` (английский);

`silero/models` (многоязычные TTS);

`espnet/kan-bayashi_ljspeech_tts_train_tacotron2_raw_phn_tacotron_g2p_en` (английский).

Шаг 3. Загрузка модели

1. В ComfyUI откройте ноду Download Model (из ComfyUI Manager).

2. Укажите:

Model ID: полный путь (например, `silero/models/en_tts`).

Save Path: папка `ComfyUI/models/tts/`.

3. Нажмите Download. Модель сохранится в формате `.pt` или `.ckpt`.

Шаг 4. Подключение модели в ComfyUI

1. Добавьте ноду TTS Model Loader (или аналогичную для вашей модели).

2. В параметре Model Path укажите путь к загруженному файлу.

3. Проверьте совместимость:

модель должна поддерживать вход `text` и выход `mel_spectrogram`;

убедитесь, что версия PyTorch соответствует требованиям модели.

Шаг 5. Тестовый запуск

1. Соедините ноды:

```

Text Input → TTS Model Loader → Vocoder → Audio Output

```

2. Введите короткий текст (например, «Привет!»).

3. Запустите процесс через Queue Prompt.

Ошибки и решения:

«Модель не найдена»: проверьте путь и формат файла.

«Ошибка CUDA»: убедитесь, что GPU доступен и установлен CUDA‑драйвер.

«Неподдерживаемый формат»: конвертируйте модель через `torch.jit.save()`.

4.2. Примеры рабочих процессов для разных языков

1. Английский язык (модель Tacotron2 WaveGlow)

Ноды:

`Text Input`: «Hello, this is a test.»

`TTS: Tacotron2` (модель `tacotron2-lj-v2`).

`Vocoder: WaveGlow` (модель `waveglow-lj-v2`).

`Audio Output` (формат WAV, 22050 Гц).

Настройки:

скорость: `1.0`;

тон: `1.0`.

2. Русский язык (модель VITS HiFi‑GAN)

Ноды:

`Text Input`: «Здравствуйте, это пример синтеза речи.»

`TTS: VITS` (модель `vits-russian`).

`Vocoder: HiFi-GAN` (модель `hifigan-vits-ru`).

`Audio Effect` (эквализация: усиление 1–4 кГц).

`Audio Output` (WAV, 48000 Гц).

Настройки:

язык: `ru`;

стиль: `neutral`.

3. Многоязычный синтез (модель ESPNet)

Ноды:

`Text Input`: текст на нужном языке.

`TTS: ESPNet` (модель `espnet/multi_tts`).

`Vocoder: MelGAN`.

Параметры:

`language_id`: `en`, `ru`, `es` и др.;

`speaker_id`: выбор диктора (если поддерживается).

4. Клонирование голоса (YourTTS)

Ноды:

`Audio Input`: референсное аудио диктора (WAV, 16 бит).

`Text Input`: новый текст для синтеза.

Конец ознакомительного фрагмента.

Текст предоставлен ООО «Литрес».

Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.

Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.