Как Facebook разогнали синтез речи в 160 раз на стандартном CPU

Yannic Kilcher 6,4 тыс. 21 мин 4 мин 16.05.2020
Главное

Современные системы синтеза речи (Text-to-Speech, TTS) совершили огромный скачок в качестве, научившись имитировать тончайшие нюансы человеческого голоса. Однако за это приходится платить колоссальной вычислительной мощностью: генерация всего одной секунды аудио требует вывода до 24 000 отдельных семплов, что традиционно заставляет разработчиков полагаться на мощные графические процессоры (GPU) или специализированное серверное оборудование. Янник Килхер разбирает техническое решение от Facebook AI, которое позволяет запускать высококачественный TTS в реальном времени на обычных центральных процессорах (CPU), сокращая время обработки в десятки раз.

🎙️ Проблема вычислительной сложности синтеза речи 0:00

Традиционно системы TTS считаются одними из самых «тяжелых» нейросетевых моделей. По словам Янника Килхера, для создания естественного звучания, а не «роботизированного» голоса старых телефонных систем, нейросеть должна работать авторегрессионно, генерируя одну точку данных за другой .

Сложность задачи описывается следующими фактами:

Facebook удалось сломать эту парадигму: их система способна генерировать секунду аудио на обычном четырехъядерном CPU всего за полсекунды . Данная технология уже внедрена в устройство для видеозвонков Portal и планируется к использованию во множестве приложений — от поддержки слабовидящих до виртуальной реальности .

🧩 Архитектура системы: от текста к звуковой волне 3:27

Янник Килхер подчеркивает, что инженеры Facebook отказались от идеи одной гигантской «сквозной» (end-to-end) нейросети. Вместо этого система разделена на модули, что критически важно для производительности и корректной обработки разных модальностей (текста и звука) .

Процесс разделен на несколько ключевых этапов:

  1. Linguistic Front-end (Лингвистический интерфейс): Преобразует входное предложение в последовательность лингвистических признаков (фонем) и определяет тип предложения .
  2. Двухканальный вывод: Система разделяет информацию на «что» должно быть сказано (фонемы) и «как» это должно быть сказано (просодия, интонация) . Например, если фраза является вопросом, лингвистический блок подает сигнал в последующие модули, чтобы в конце аудио поднялся тон голоса .
  3. Acoustic Model (Акустическая модель): На основе лингвистических признаков и метаданных (голос конкретного диктора, язык) создает спектрограмму звука .
  4. Neural Vocoder (Нейронный вокодер): Превращает спектрограмму в финальный WAV-файл.

Вокодер в системе Facebook базируется на архитектуре WaveRNN и WaveNet . Килхер объясняет принцип работы WaveNet через аналогию с памятью: модель детально «смотрит» на только что сгенерированные образцы, но чем дальше в прошлое уходит контекст, тем более «размытым» и менее детализированным становится его восприятие нейросетью .

⚡ Оптимизация: как ускорить нейросеть в 160 раз 15:05

Самая интересная часть доклада посвящена тому, как инженеры Facebook заставили систему «летать» на CPU. Изначально на одном ядре процессора генерация одной секунды аудио занимала 80 секунд . Путем последовательных оптимизаций это время удалось сократить до 0,5 секунды.

Основные шаги оптимизации:

🎭 Эмоции, стили и будущее ассистентов 19:09

Технология Facebook позволяет не просто генерировать голос, но и адаптировать его под контекст. Модель просодии (Prosody model) использует так называемые «эмбеддинги стиля» . По утверждению разработчиков, для обучения новому стилю (например, быстрому, официальному или шепоту) требуется всего 30–60 минут дополнительных аудиоданных .

Янник Килхер выделяет несколько перспективных сценариев использования этой технологии:

Килхер выражает воодушевление этой технологией, полагая, что возможность запускать мощный ИИ на «слабом» железе сделает голосовых помощников гораздо более отзывчивыми и приватными .

💬 Цитаты

«Генерация одной секунды речи может требовать от TTS-системы вывода 24 000 семплов, а иногда и больше.»

Янник Килхер 0:13

«Они могут делать это всего на четырехъядерном процессоре в реальном времени... это впечатляет.»

Янник Килхер 2:48
👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
TTS (Text-to-Speech)
Технология синтеза речи из печатного текста.
Вокодер (Vocoder)
Модуль нейросети, преобразующий математическое представление звука (спектрограмму) в слышимый аудиосигнал.
Sparsification (Разреживание)
Метод оптимизации нейросетей, при котором большинство весов обнуляются для ускорения расчетов.
MFCC
Мел-кепстральные коэффициенты, используемые для представления краткосрочного энергетического спектра звука.
📊 Цифры
⚖️ Другая сторона
Искусственный интеллект Facebook AI Text-to-Speech WaveRNN Sparsification Янник Килхер