Данные, аугментация и метрики (WER, MOS)

Без данных и метрик нет моделей: учимся готовить данные и измерять качество.

WER (Word Error Rate) — доля ошибок распознавания: сколько слов вставлено, удалено или заменено относительно эталонной расшифровки.

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

Откуда берут данные

Для речи есть открытые датасеты: LibriSpeech (аудиокниги), Common Voice (краудсорсинг Mozilla, много языков, включая русский), а также доменные наборы. Whisper обучался на слабо размеченных данных из интернета. Главная боль — качество разметки: расшифровки должны точно соответствовать звуку.

Аугментация: больше данных из имеющихся

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

АугментацияЧто делаетУчит модель
Добавление шумаподмешивает фонработать в шуме
Изменение скоростичуть быстрее/медленнееразному темпу речи
Сдвиг высотыменяет тонразным голосам
SpecAugmentмаскирует полосы спектрограммыне зависеть от деталей

WER: метрика распознавания

Качество ASR меряют долей ошибок на уровне слов. WER считает минимальное число правок (вставок, удалений, замен), чтобы из распознанного текста получить эталон, делённое на число слов эталона. WER = 0 — идеально, WER = 0.1 — 10% слов с ошибкой.

def wer(ref, hyp):
    r = ref.split()
    h = hyp.split()
    # расстояние Левенштейна по словам
    d = [[0] * (len(h) + 1) for _ in range(len(r) + 1)]
    for i in range(len(r) + 1):
        d[i][0] = i
    for j in range(len(h) + 1):
        d[0][j] = j
    for i in range(1, len(r) + 1):
        for j in range(1, len(h) + 1):
            cost = 0 if r[i-1] == h[j-1] else 1
            d[i][j] = min(d[i-1][j] + 1, d[i][j-1] + 1, d[i-1][j-1] + cost)
    return round(d[len(r)][len(h)] / len(r), 3)

ref = "сегодня хорошая погода в москве"
hyp = "сегодня хорошая погода москва"
print("WER:", wer(ref, hyp))

Вывод:

WER: 0.4

Из 5 слов эталона 2 правки (удаление «в», замена «москве»→«москва») дают WER = 2/5 = 0.4. Так одной формулой сравнивают любые ASR-системы.

MOS: метрика синтеза

Для TTS объективной формулы недостаточно — важна естественность на слух. Её меряют MOS (Mean Opinion Score): люди слушают и оценивают по шкале 1–5, потом усредняют. MOS около 4.5 — почти как живой голос. Это субъективная, но самая честная оценка качества синтеза.

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

У SpecAugment есть красивая интуиция: вместо того чтобы портить саму волну, он маскирует полосы прямо на спектрограмме — закрашивает горизонтальные (частотные) и вертикальные (временные) полосы нулями. Это заставляет модель не цепляться за отдельную частоту или мгновение, а восстанавливать смысл по контексту, как человек разбирает речь, даже если часть слов заглушил кашель. Приём оказался настолько эффективным и дешёвым (он работает уже на готовых признаках, без перегенерации аудио), что стал стандартом обучения почти всех современных ASR-систем.

Важно понимать, что у WER и MOS принципиально разная природа, и это не случайность. Распознавание имеет объективный эталон — точную расшифровку, с которой можно механически сравнить выход, поэтому WER считается формулой. А у синтеза «правильного» ответа нет: естественность голоса нельзя свести к числу, её можно только спросить у людей, отсюда субъективный MOS. Эта асимметрия объясняет, почему прогресс ASR измеряют автоматически и быстро, а прогресс TTS приходится подтверждать дорогими прослушиваниями — и почему вокруг автоматических предсказателей MOS идёт столько исследований.

Как работает под капотом

WER не идеален: он одинаково штрафует за критичную и неважную ошибку, не учитывает смысл. Поэтому смотрят и CER (по символам, удобно для языков без пробелов), и доменные метрики. Для TTS вдобавок к MOS используют автоматические оценки (PESQ, нейросетевые предсказатели MOS), чтобы не гонять людей на каждом эксперименте. Метрику всегда выбирают под задачу.

Частые ошибки

  • Сравнивать WER на разных тестах. WER честен только на одном и том же наборе данных.
  • Аугментировать бессмысленно. Сдвиг высоты на октаву или адский шум учат модель ерунде.
  • Доверять одному MOS-прогону. Нужны достаточная выборка слушателей и контроль условий.

Итоги

  • Данные берут из открытых датасетов (LibriSpeech, Common Voice) и веба.
  • Аугментация (шум, скорость, SpecAugment) повышает устойчивость модели.
  • WER — доля ошибок ASR на уровне слов; считается через правки до эталона.
  • MOS — субъективная оценка естественности TTS по шкале 1–5.
Проверьте себя
1. Что измеряет WER?
AЕстественность синтеза
BДолю ошибок распознавания: вставки, удаления и замены слов относительно эталона
CГромкость
DСкорость модели
2. Чем измеряют качество синтеза речи (TTS)?
AWER
BMOS — субъективной оценкой естественности людьми по шкале 1–5
CЧастотой сэмплирования
DЧислом каналов
3. Зачем нужна аугментация аудиоданных?
AЧтобы уменьшить датасет
BЧтобы размножить данные преобразованиями и сделать модель устойчивее (к шуму, темпу, голосам)
CЧтобы перевести речь
DЭто не нужно