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

Метод называют по-разному: генерация речи, Text-to-Voice (T2V), Text-to-Speech (TTS), — но суть остается та же. Основная цель TTS — озвучить текст голосом, чтобы его можно было слушать, вместо того чтобы читать. 

Вместе с Григорием Стерлингом, лидом команды TTS в SberDevices, разбираемся, как устроена технология, как разрабатывают синтезаторы речи и что нужно знать, чтобы работать в этой сфере. 

Как развивался синтез речи

Технология появилась еще в 18 веке, когда австро-венгерский ученый-механик Вольфганг фон Кемпелен создал «говорящую машину». Это была система из мехов, трубок и мембран, которая воспроизводила звуки, напоминающие речь. 

Точная копия «говорящей машины», созданная в 2007–2009 году в Саарском университете в Германии. Источник 
Точная копия «говорящей машины», созданная в 2007–2009 году в Саарском университете в Германии. Источник 

В 1937 году инженер Гомер Дадли из Bell Labs разработал Voder — первое электронное устройство для синтеза речи на основе электрических сигналов. 

К 1960-м годам TTS начала переходить в цифровую эпоху. В MIT сделали одну из первых компьютерных систем — DECtalk, основанную на цифровых методах. Однако из-за ограниченных вычислительных мощностей синтезированная речь звучала искусственно. Лишь в 1990-х, с появлением более производительных компьютеров, получилось улучшить качество голосов и сделать их приближенными к человеческой речи.

Для синтеза речи использовали два основных подхода: 

  1. Конкатенативный синтез. Основан на соединении фрагментов записанной речи (например, отдельных звуков, слогов или слов). Они «склеивались» в нужном порядке для создания целых слов и предложений. 

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

    Этот вид синтеза начал устаревать с появлением нейросетевых методов в середине 2010-х годов.

Например, у нас есть запись, где диктор говорит «Привет». Эта аудиодорожка делится на кусочки — звуки, из которых можно сложить слово «Ветер». Чем больше данных в нашем каталоге звуков и чем более подходящие кусочки звуков будут вставляться в нужное место, тем лучше будет результат. 

Григорий Стерлинг, лид команды TTS в SberDevices

  1. Параметрический синтез. Задача синтеза решается в два этапа: акустическая модель и вокодер. Сначала по тексту предсказываются некоторые параметры речи — чаще всего спектрограмма. Затем она превращается в звук с помощью другой модели — вокодера.

    Долгое время этот метод создавал «бубнящие» и «звенящие» звуковые дорожки. Но в 2016 году генеративная модель WaveNet, которая использовала параметрический подход, смогла синтезировать речь, максимально приближенную к человеческой.

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

Новые модели, такие как ChatGPT-4o, умеют подражать «человечным» действиям, например напевать мелодии и сюсюкаться с собачками.

Григорий Стерлинг, лид команды TTS в SberDevices

Какие возможности у технологии TTS

Синтез речи не ограничивается простым преобразованием текста в звук. Существуют разные задачи, которые расширяют возможности этой технологии, такие как:

  • клонирование голоса (voice cloning) — с использованием короткого образца голоса, который может быть любого размера, вплоть до нескольких секунд;

  • эмоциональный синтез — с добавлением разных эмоциональных оттенков и стилей;

  • многоязычный синтез — с учетом особенностей каждого языка: грамматики, интонаций, ударений, а также сложных фонетических правил; 

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

  • персонализированный синтез — создание голоса под конкретные потребности и предпочтения. В отличие от клонирования, этот синтез может основываться не на образце конкретного человека, а на заранее выбранных характеристиках голоса (тембр, интонация, скорость речи). Его часто используют для озвучки разных персонажей в аудиокнигах;

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

Где используют синтез речи

Вот несколько основных направлений, в которых используют TTS:

  • Виртуальные ассистенты: например, Салют от Сбера, Siri от Apple, Алиса от Яндекса, которые озвучивают ответы пользователю.

  • Озвучивание аудиокниг.

  • Помощь при навигации в GPS-системах.

  • Инклюзивные технологии для людей с нарушениями зрения (озвучивание интерфейсов, экранные читалки).

  • Контакт-центры и голосовые боты для автоматизации общения с клиентами.

  • Видео, реклама и игры, где нужно сделать озвучку реплик. 

С помощью технологий синтеза можно создавать не только речь, но и музыку. Например, стартап Suno AI генерирует музыку в разных жанрах, таких как рэп и поп. Пример российской разработки — модель SymFormer для генерации музыкальных произведений, разработанная SberDevices. Она обучалась на датасете из 160 тысяч композиций: от классики до современной электронной музыки и рока. 

На YouTube и TikTok есть много примеров нейросетевой музыки. Технологии синтеза речи и музыки схожи, потому что обе используют нейросети для преобразования дискретных элементов (букв или нот) в звук. Однако в каждом случае применяются свои специфические подходы. Но особенности у задач все-таки разные: в синтезе речи важно учитывать биологию речевого тракта, а в музыке — теорию и структуру композиций.

Григорий Стерлинг, лид команды TTS в SberDevices

Как устроен процесс синтеза речи

Процесс включает несколько этапов, разберем подробнее каждый из них. 

Этап 1 — нормализация текста

Текст, который подается в модель, нужно привести в нормализованный вид, то есть раскрыть числа и сокращения, а также проставить ударения во всех словах. 

  • Нормализация. Записанные в обычном виде числа и сокращения раскрываются буквами целиком, как они произносились бы голосом. Например «Я родился в 1992 г. в г. СПб» трансформируется в «Я родился в тысяча девятьсот девяносто втором году в городе Санкт-Петербурге». Обычно эту задачу решают правилами, но современные NLP-технологии позволяют применять нейронные сети.

  • Простановка ударений. Для всех слов в предложении нужно поставить ударения. Обычно для этого используют фонетические словари, но для редких или новых слов нужна отдельная модель. В русском языке также есть омографы — слова, которые пишутся одинаково, но в зависимости от контекста у них разное ударение. Например: «когда вы посмОтрите в окно» и «посмотрИте в окно». Для постановки ударений есть открытые Python-библиотеки, например ruaccent.

  • Для некоторых движков TTS нужна фонемизация текста, то есть запись букв в звуковой форме. Например, «январь» → «й а н в А р’». Фонетический алфавит — это термин из лингвистики, и какого-то одного устоявшегося не существует. Рекомендуется использовать IPA — international phonetic alphabet — и работающие в нем open-source фонемизаторы.

  • Моделирование просодии. Просодией называется интонация, с которой произносится какой-нибудь текст. Например, на какие слова делается логическое ударение (эмфаза) или паузы в речи. Синтез речи будет более качественным и контролируемым, если за расстановку этих или других параметров будет отвечать отдельная NLP-модель. 

Этап 2 — преобразование элементов через текстовый энкодер

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

В нем содержатся данные о голосе, эмоциональном контексте, ударениях.

Методы:

  • Рекуррентные нейронные сети (RNN). Модели обрабатывают текст последовательно, передавая информацию о предыдущих элементах на каждом шаге. Это помогает лучше сохранять контекст, особенно в длинных текстах. 

    Стандартные RNN могут терять важные связи на больших промежутках, поэтому применяют усовершенствованные версии, такие как долгая краткосрочная память (LSTM) и управляемые рекуррентные блоки (GRU).

    Пример применения таких сетей — архитектура Tacotron 2, которая использует последовательную обработку для синтеза речи.

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

  • Трансформеры (Transformers). Модели, такие как BERT, используют механизм внимания (self-attention) для параллельной обработки текста. Так они могут учитывать как локальные, так и глобальные зависимости в данных — это ускоряет обучение и синтез речи по сравнению с RNN.

Этап 3 — прогнозирование длительности

Duration Predictor — это компонент моделей синтеза речи, который отвечает за прогнозирование времени звучания каждой фонемы в тексте. По сути, он «решает», сколько времени нужно на произнесение каждого звука, чтобы речь звучала естественно.

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

Процесс синтеза речи, где модель предсказывает длительность каждого звука: сначала энкодер создает промежуточное представление, затем модуль предсказания длительности (Duration model) определяет, сколько кадров требуется для каждого символа, и повторяет это представление нужное количество раз. Источник
Процесс синтеза речи, где модель предсказывает длительность каждого звука: сначала энкодер создает промежуточное представление, затем модуль предсказания длительности (Duration model) определяет, сколько кадров требуется для каждого символа, и повторяет это представление нужное количество раз. Источник

Этот модуль нужен только для неавторегрессионных моделей (FastSpeech, Vits), а для авторегрессионных (Tacotron 2, Valle) — не нужен. В Tacotron 2 длительность фонем часто контролируется напрямую через механизм внимания — модель решает, когда переходить от одной фонемы к другой, на основе контекста.

Методы:

  • Трансформеры (Transformers). Модели, такие как FastSpeech, предсказывают длительность фонем с использованием механизмов внимания (self-attention). В FastSpeech 2, помимо длительности (duration), также прогнозируются высота тона (pitch) и энергия (громкость и интенсивность). Благодаря этому речь становится более выразительной и естественной.

Этап 4 — генерация визуального представления звука с помощью декодера

Декодер — это часть нейросети, которая преобразует эмбеддинги в мел-спектрограмму. Мел-спектрограмма — это визуальное представление звукового сигнала, отображающее его частоты во времени. Она служит основой для последующего преобразования в аудиосигнал.

Мел-спектрограмма мелодии, построенная с помощью функции melspectrogram() из библиотеки librosa (Python)
Мел-спектрограмма мелодии, построенная с помощью функции melspectrogram() из библиотеки librosa (Python)

Методы: для декодирования применяют те же слои, что и для энкодинга: CNN, RNN и Transformers.

Этап 5 — Генерация звукового сигнала с помощью вокодера

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

Методы:

  • Flow-based-модели. Например, модель WaveGlow использует flow-based (потоковое) программирование для преобразования мел-спектрограмм в аудиосигналы с высоким качеством.

  • Generative Adversarial Networks (GAN). Архитектуры, такие как MelGAN и HiFi-GAN, используют GAN-фреймворк, в котором одна модель генерирует звук, а другая оценивает его качество.

В последнее время стало модно делать end2end-модели, в которых все модули соединены и учатся совместно. Это улучшает качество, но требует больше вычислительных ресурсов.

Какие инструменты и технологии используют для синтеза речи

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

Модели для полного цикла синтеза

  1. VITS (Variational Inference Text-to-Speech). Использует вариационное автокодирование и GAN для единовременной генерации аудиосигнала. 

  2. GradTTS. Одна из первых моделей, где применили denoising diffusion к задаче синтеза речи. Это подход, в котором сильно зашумленная картинка путем многократного применения «расшумляющей» нейросети преобразуется в чистую мел-спектрограмму. В конце она озвучивается вокодером.

  3. Tacotron 2 + WaveGlow. Текстовый ввод передается в модель Tacotron 2. Она выполняет энкодинг текста и преобразует его в эмбеддинг. Декодер Tacotron 2 генерирует мел-спектрограмму из этого представления. WaveGlow озвучивает спектрограмму, преобразуя ее в аудиосигнал.

Модели для отдельных этапов синтеза

  1. FastSpeech 2. Проводит энкодинг и декодинг. Также использует адаптер вариаций, который добавляет к эмбеддингу дополнительную информацию: длительность, высоту тона и энергию.

    Применение: энкодинг, декодинг.

  2. MelGAN. Состоит из генератора и дискриминатора, которые обучаются вместе: генератор создает аудио, пытаясь обмануть дискриминатор, который учится отличать подделки от настоящих аудиосигналов.

    Применение: вокодинг.

  3. HiFi-GAN. Использует два типа дискриминаторов для оценки и улучшения качества сгенерированных аудио: 

  • многомасштабный, который анализирует аудиосигналы на различных временных масштабах;

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

На данный момент одной универсальной модели для синтеза речи нет. Алгоритм параметрического синтеза Tacotron 2, популярный с 2017 года, использует акустическую модель и вокодер для преобразования текста в речь. Однако исследовательские группы разрабатывают и другие подходы, такие как VITS, GradTTS, FastSpeech, NaturalSpeech 2, MatchaTTS и VALL-E, у каждого из которых свои особенности и преимущества.

Григорий Стерлинг, лид команды TTS в SberDevices

Как разрабатывают синтез речи

Для написания кода систем синтеза речи проще всего взять open-source-реализации известных архитектур (FastSpeech, Tacotron 2 и т. д.).

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

В разработке систем синтеза и адаптации данных и моделей под конкретные цели обычно используют Python:

  • для получения мел-спектрограмм применяют библиотеку librosa

  • в библиотеке torchaudio есть почти все необходимое для работы с аудио;

  • для извлечения частоты основного тона используют алгоритм Yin либо библиотеку reaper.

При разработке и обучении моделей глубокого обучения применяют фреймворки TensorFlow и PyTorch. Для машинного обучения и обработки данных также используют библиотеку scikit-learn

Совершенствование модели

Любую модель можно улучшать разными способами:

  • Feature engineering (генерация признаков): создание новых признаков из имеющихся данных, их преобразование и нормализация, для того чтобы дать модели больше полезной информации для обучения.

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

  • Подготовка данных: улучшение качества данных, разметка и увеличение их объема. Это включает очистку данных от ошибок и решение проблем с несбалансированными выборками, чтобы модель обучалась на более качественном наборе.

Метрики производительности

При оценке производительности модели часто применяют метрику Real Time Factor (RTF). Она показывает, сколько секунд аудио генерируется за одну секунду реального времени. 

На практике же не менее важной метрикой является First chunk latencyзадержка до начала воспроизведения, которую мы рассмотрим на примере ниже. 

Есть две модели, которые отличаются возможностью делать стриминг и RTF:

  • RTF = 0.1: 10 секунд звука генерируются за одну секунду, но модель не поддерживает стриминг. Пользователь услышит звук через одну секунду.

  • RTF = 0.5: 2 секунды звука за одну секунду, но модель поддерживает возможность стриминга, что позволяет снизить латенси до очень маленьких значений, например 100 мс. Когда модель работает в потоковом режиме, речь генерируется по мере обработки текста: она начинает воспроизводиться еще до того, как весь текст был полностью обработан.

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

Контролируемость синтеза

Контролируемость синтеза — это способность современных TTS-систем управлять интонацией, ударениями и эмоциями, чтобы речь звучала естественно и передавала нужный смысл. Например, фраза «Вы заплатите завтра?» может звучать по-разному в зависимости от контекста. В русском языке за вопросительную интонацию отвечает особый восходящий интонационный контур. Важно уметь управлять этим в движке синтеза речи, чтобы исправлять ошибки.

Также важны инструменты для исправления ошибок и улучшения качества синтеза, такие как Resemble Enhance, которые позволяют устранять артефакты и улучшать звучание речи.

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

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

Небольшим компаниям, которым синтез речи нужен только как способ взаимодействия с пользователями, выгоднее использовать API от внешних вендоров. Более крупные компании могут установить систему SST в свою IT-инфраструктуру.

Григорий Стерлинг, лид команды TTS в SberDevices

Какие перспективы развития синтеза речи

Развитие технологий синтеза речи зависит от того, для кого они предназначены — для бизнеса (B2B) или конечных пользователей (B2C).

  • B2B (business-to-business)
    В бизнес-сегменте синтез речи часто используют в колл-центрах. Главная цель — создать недорогую систему с хорошим качеством. Иногда легкая «роботичность» в голосе допустима, потому что это помогает клиентам сразу понять, что они разговаривают с машиной.

  • B2C (business-to-consumer)
    В сфере B2C, например в голосовых помощниках и озвучке контента, требуется высокое качество речи. Пользователи ожидают, что технологии будут идеально имитировать живой голос, добавлять эмоции и мгновенно генерировать звук. Чтобы достичь такого уровня реализма и качества, требуется много работы: эксперименты, сбор данных и обучение моделей. Часто для работы таких моделей нужны современные GPU, и стоимость синтеза получается выше.

Что нужно изучить для работы с Text-to-Speech

1. Основы Python

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

  • Освойте ключевые конструкции языка: переменные, циклы, функции.

  • Научитесь работать с библиотеками для глубокого обучения, такими как PyTorch или TensorFlow, для создания моделей синтеза.

2. Математика

Глубокие знания математики помогут лучше понять механизмы работы моделей синтеза речи.

  • Изучите линейную алгебру для понимания работы нейронных сетей и преобразований данных.

  • Разберитесь в теории вероятностей и статистике, чтобы оценивать модели и работать с их прогнозами.

  • Освойте численные методы для оптимизации моделей и повышения точности синтеза.

3. Digital Signal Processing (DSP)

Обработка сигналов — очень важный навык для работы с аудио.

  • Научитесь преобразовывать и анализировать звуковые сигналы с помощью методов цифровой обработки сигналов (DSP).

  • Изучите, как звуковые волны можно представить в виде данных для синтеза речи.

4. Deep Learning

Глубокое обучение лежит в основе современных систем TTS.

  • Изучите архитектуры нейронных сетей, такие как CNN и RNN, которые широко применяются для анализа и генерации данных.

  • Ознакомьтесь с конкретными архитектурами, разработанными для синтеза речи, такими как Tacotron 2, FastSpeech и VITS.

  • Изучите современные подходы в генеративных нейросетях. Например, GAN, diffusion, flow, LLM.

5. Лингвистика

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

  • Изучите основы фонетики, включая фонемы, интонации и ритмы.

  • Разберитесь в акцентуации, паузах и ритмах речи для создания более естественных голосов.

6. Физика звука и биология

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

  • Изучите основы акустики — как формируются звуковые волны, как они передаются и воспринимаются.

  • Разберитесь в работе голосовых связок и как различные звуковые сигналы воспринимаются человеческим ухом.

После изучения основ можно приступать к освоению речевых технологий. Рекомендую читать статьи, например, про модели, представленные на TTS Arena. Еще желательно иметь представление о низкоуровневой работе с CUDA, фреймворках для инференса моделей (ONNX, TensorRT) и краудсорсинге разметки данных.

Григорий Стерлинг, лид команды TTS в SberDevices

Синтез речи — что нужно запомнить

  • Синтез речи — это процесс преобразования текста в аудиосигнал с помощью ИИ. 

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

  • Процесс синтеза включает разделение текста и последующую обработку данных энкодером, декодером и вокодером.

  • Энкодер преобразует текст в числовое представление, декодер генерирует мел-спектрограмму, а вокодер превращает ее в звуковой сигнал.

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

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

  • Технологический стек для разработки TTS включает Python с такими библиотеками и фреймворками, как librosa для аудио, NLTK для обработки текста и PyTorch для построения моделей.


Комментарии (4)


  1. Dreablin
    11.10.2024 18:18

    Как раз сейчас занимаюсь одной задачей - сделать TTS для рассказов (генерировать аудиокниги по тексту чтобы было комфортно слушать).Невзирая на большое количество Open source проектов ни один не дает приемлемого качества.
    На простых предложениях может неплохо работать, но очень часто начинаются проглатывания звуков, сильно ускоренная речь. Если в качестве референса задать неторопливое чтение, то в генерации начинаются паузы по несколько секунд между словами.
    Пока что лучший результат, который удалось найти у metavoice-tts.

    Поделитесь опытом, у кого есть, какие проекты еще посмотреть для хорошего результата?


    1. d-sh
      11.10.2024 18:18

      Да вроде нет таких.

      Если бы роботы могли читать книги то на условном рутрекере все книги бы имели озвучку, хотя бы от робота. Но такого нет даже близко.

      У яндекса TTS стоит 1300р за 1млн символов. Книгу можно озвучить рублей за 200. Без напрягов. Вряд ли кто то сможет сделать так же "хорошо" и сильно дешевле.

      Есть ттс от микрософта и гугла, вроде лучшие из того что доступно бесплатно. Если есть возможность самостоятельно расставить ударения и развернуть сокращения то универсальные (это те которые читают на любом языке) голоса от микрософта будут идеально работать, они звучат очень натурально (но плохо разворачивают сокращения и чаще ошибаются с ударениями). https://github.com/rany2/edge-tts


      1. Dreablin
        11.10.2024 18:18

        Насчет "все книги", это немного перебор. RTX 4090 генерирует на той же metavoice-tts секунду текста в секунду времени. При том текст надо подготовить, разбить на куски меньше ~140 символов - 1024 токена (т.е. если какое-то предложение длиннее его надо резать через llm). А еще и прослушать надо на предмет багов, возможно перегенерить часть или все. В итоге на одну книгу уйдет неделя работы

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


      1. Dinxor
        11.10.2024 18:18

        Всё дело в требованиях к качеству такой озвучки. С того же рутрекера качал то ли вторую, то ли третью часть "Астровитянки", как только она появилась в формате аудиокниги (лет 12 назад). Сначала даже не понял в чём дело, но характерные ошибки в ударениях явно дали понять что это TTS. А в самом начале нулевых слушал несколько книг, в реальном времени озвучиваемых движком с голосом Николая Дигало - по нынешним временам трэш, но и комп был даже не пентиум. Помню, ещё движуха какая-то была со словарями ударений, софтом для озвучки и т.п.

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