Диагностика Mock-интервью
Главная · Мультимодальные модели

Звук: распознавание и синтез речи

Как звук превращается в текст и обратно: волна, мел-спектрограмма, ASR-модели вроде Whisper, CTC-лосс, TTS с вокодером и аудиотокены, которые делают звук «языком» для LLM. Плюс метрика WER.

Интуиция

Звук — это волна: микрофон измеряет давление воздуха и записывает амплитуду во времени. Стандартная частота дискретизации для речи — 16 000 отсчётов в секунду (16 кГц). То есть одна минута речи — почти миллион чисел. Подать такую последовательность напрямую в трансформер нельзя: внимание квадратично по длине, и даже рекуррентная сеть захлебнётся. Нужен компактный вид.

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

Как это работает: спектрограмма

Волну режут на короткие окна (~25 мс, с шагом ~10 мс) и в каждом окне считают спектр — насколько сильно представлена каждая частота (математически — преобразование Фурье, по сути скалярные произведения окна с синусоидами разных частот). Столбики-спектры выстраивают друг за другом — получается спектрограмма (spectrogram): «картинка» время×частота, где яркость точки — энергия частоты в этот момент.

Дальше частотную ось сжимают по мел-шкале (mel scale): человеческое ухо различает низкие частоты гораздо лучше высоких, поэтому низким частотам выделяют больше «полосок», высоким — меньше. Итог — мел-спектрограмма (mel spectrogram), стандартный вход почти всех речевых моделей:

волна (16 000 чисел/с) → окна → спектры → мел-фильтры → кадры (~100 векторов/с по 80 чисел)

Последовательность стала в сотни раз короче, а каждый кадр — осмысленный вектор. Теперь это обычная задача seq2seq: последовательность кадров → последовательность букв.

💡 Ключевая мысль Речевые модели почти никогда не видят «сырой звук»: волну сначала превращают в мел-спектрограмму (картинку время×частота) или в дискретные аудиотокены — а дальше работают обычные архитектуры.

ASR: из речи в текст

Распознавание речи (ASR, automatic speech recognition) сегодня — это чаще всего подход в духе Whisper: мел-спектрограмма подаётся в трансформер encoder-decoder, и декодер авторегрессионно выводит текст, как обычная языковая модель. Секрет качества Whisper — не архитектура, а данные: обучение на сотнях тысяч часов пар «аудио — текст», собранных из интернета с субтитрами (weak supervision — разметка шумная, но её очень много). Поэтому модель устойчива к акцентам, шуму и разным языкам.

Классика до этого — CTC-лосс (connectionist temporal classification). Проблема: в записи «привет» никто не разметил, где кончается «п» и начинается «р». CTC решает её так: модель для каждого кадра спектрограммы предсказывает букву или специальный пустой токен (blank, «∅»), а потом выход схлопывается — повторы склеиваются, blank выбрасывается. Кадры «ппр-и-ввв-е-т» превращаются в «привет»: буква «в» звучала три кадра, но в слове она одна. Blank нужен, чтобы отличать настоящие двойные буквы: «вв∅вв» схлопнется в «вв», а «вввв» — в «в». Так модель учится выравниванию сама, без разметки границ.

Качество ASR меряют метрикой WER (word error rate) — доля ошибок на уровне слов:

WER = (S + D + I) / N

где S — замены, D — удаления, I — вставки слов, N — число слов в эталоне. WER может быть больше 100%, если модель навставляла лишнего.

TTS и аудиотокены: звук как язык

Синтез речи (TTS, text-to-speech) — обратный конвейер: текст → мел-спектрограмма → волна. Последний шаг делает отдельная сеть — вокодер (vocoder): спектрограмма хранит только энергии частот и не содержит фазы, поэтому «просто развернуть» её в волну нельзя — вокодер учится дорисовывать правдоподобную волну по спектрограмме.

Современный тренд — аудиотокены. Нейрокодек (идея EnCodec) сжимает волну в короткую последовательность дискретных токенов: энкодер → квантизация RVQ (residual vector quantization: несколько «словарей», каждый следующий кодирует остаток предыдущего) → декодер восстанавливает звук. Звук становится последовательностью токенов из конечного словаря — то есть языком. Дальше и ASR, и TTS, и голосовой диалог — это генерация токенов той же LLM, как обычный текст после токенизации. Это мост к omni-моделям, которые слушают и говорят напрямую.

В голосовых ассистентах добавляются инженерные детали: streaming ASR (модель выдаёт частичные гипотезы по мере поступления звука, не дожидаясь конца фразы — иначе диалог невозможен) и диаризация (speaker diarization) — разметка «кто и когда говорит» в записи с несколькими людьми.

⚠️ Подводный камень ASR-декодер — это языковая модель, и она галлюцинирует: на тишине, музыке или шуме Whisper может уверенно «услышать» связный текст, которого не было. В продакшне помогают VAD (voice activity detection — отрезать тишину до модели) и проверка уверенности. И помни: низкий WER на чистом бенчмарке ничего не говорит о телефонном звонке с шумом и акцентом — меряй на своём домене.
🎤 На собеседовании
  • «Как звук попадает в нейросеть?» — волна → окна → спектры → мел-спектрограмма (картинка время×частота); современная альтернатива — дискретные аудиотокены через нейрокодек.
  • «Что делает CTC-лосс?» — учит выравнивание кадров и букв без разметки границ: предсказание на каждый кадр, blank-токен, схлопывание повторов («ппр-и-ввв-е-т» → «привет»).
  • «Что такое WER?» — (замены + удаления + вставки) / число слов эталона; главная метрика ASR, может превышать 100%.
  • «Почему Whisper так хорош?» — масштаб данных (weak supervision на сотнях тысяч часов), а не хитрая архитектура.