惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
SegmentFault 最新的问题
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
博客园 - 【当耐特】
月光博客
月光博客
Vercel News
Vercel News
D
Docker
I
InfoQ
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 叶小钗
MongoDB | Blog
MongoDB | Blog
GbyAI
GbyAI
有赞技术团队
有赞技术团队
雷峰网
雷峰网
博客园 - 聂微东
小众软件
小众软件
Y
Y Combinator Blog
腾讯CDC
L
LangChain Blog
The GitHub Blog
The GitHub Blog
宝玉的分享
宝玉的分享
Stack Overflow Blog
Stack Overflow Blog
大猫的无限游戏
大猫的无限游戏
T
The Blog of Author Tim Ferriss

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Неочевидные проблемы в Text‑to‑Speech, о которых редко го...
Iskander Falyakhov · 2026-06-18 · via Все публикации подряд на Хабре

Когда приходишь в Text‑to‑Speech из классического ML (или даже из CV/NLP), кажется, что всё знакомо: датасет, модель, loss, валидация, поехали. А потом довольно быстро ловишь себя на мысли, что что‑то тут не так.

В TTS есть набор проблем, которые:

  • не очевидны на старте;

  • почти не обсуждаются;

  • и при этом регулярно бьют по разработке.

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

Пытаюсь понять, какая модель звучит лучше

Пытаюсь понять, какая модель звучит лучше


Метрики, которым не очень хочется верить

Наверное, самое болезненное место. Если коротко: в TTS нет одной нормальной метрики, на которую можно спокойно опереться и сказать «всё, модель стала лучше». Точнее опереться то можно, но с оговорками.

WER / CER — вроде всё ок, но не совсем

Самое очевидное — взять Word Error Rate (WER) и Character Error Rate (CER).
Схема простая:

  1. синтезируем аудио;

  2. прогоняем через модель распознавания речи;

  3. сравниваем с исходным текстом, считая долю слов (WER) и символов (CER), где допущена ошибка.

Получаем долю ошибок. Всё красиво. Проблема в том, что это проверяет только правильность текста, но не качество звука. Модель может звучать неестественно, иметь странную интонацию, звучать как робот. Но показывать хороший WER и CER.

Для раннего фильтра и sanity check подходит, но не как финальная метрика качества.

Инструкции для асессоров

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

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

Я лично переписывал наши инструкции для асессоров. Оказалось, что до этого они были длиной буквально в несколько строчек, из‑за чего мы не могли поймать, например, «ненатуральные» интонации, или неестественные паузы и плохую работу с пунктуацией (в некоторых случаях паузы должны быть короче, чем в других). Моя новая инструкция была размером в 3–4 страницы. Пришлось ввести систему баллов, разные типы ошибок, иерархию критичности каждого типа и подробное описание каждого с примерами.

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

Асессор, который не вчитался в инструкции

Асессор, который не вчитался в инструкции

Side‑by‑side — работает, но с нюансами

Side‑by‑side (SBS) — попарное сравнение. Из названия понятен смысл — берем тексты, генерим их двумя разными моделями, просим асессора проголосовать за лучшую из пары (либо указать, что качество одинаково).

Спойлер — самая качественная метрика на моей практике. Основная сложность — она относительная. Она дает понимание только в контексте 2 конкретных моделей. Если у вас есть N моделей примерно равного качества, то в худшем случае вам придется посчитать SBS для N*(N-1)/2 пар (модель 1 сравнить с моделями 2,..., N; модель 2 с моделями 3,..., N; и так далее).

Конечно на практике до такого редко доходит, но чтобы найти лучшую модель почти всегда придется посчитать >N метрик. А это — лишние деньги на разметку и время.

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

MOS — любимая всеми и при этом странная

Казалось бы, после всех проблем SBS хочется иметь абсолютную метрику качества. И такая метрика есть!

Mean Opinion Score (MOS) — очень часто используемая метрика. Считается просто: даешь аудио разметчику, он ставит оценку от 1 до 5, считаешь среднее.

MOS очень любят. Ведь он:

  • абсолютный;

  • понятный;

  • красиво смотрится в отчетах и докладах.

Звучит очень хорошо. В чем проблема? Много шума, большая дисперсия (иногда больше 1.5 при максимальной оценке = 5). На практике нашей команды люди очень плохо оценивают качество аудио «независимо».

Аналогия для понимания:

  • пусть у нас есть 2 колонки с разными голосовыми моделями;

  • если поставить две колонки и включить друг‑за‑другом аудио с первой и второй — человек скажет, какая лучше;

  • если дать первую колонку на неделю, потом вторую — разницу он заметит только если она разительна.

Причем аналогия эта возникла не на пустом месте. По слухам, один из топ менеджеров в нашей компании с завидной регулярностью ставил рядом с нашей колонкой колонку конкурента и гонял их по своим представлениям «запросов пользователей». Было очень сложно объяснить, что такой тест почти не имеет статистической силы. Общее качество ответа устройства зависит от множества факторов, а не только от TTS. Но ещё сложнее было объяснить, что при независимом прослушивании разница ощущалась бы намного слабее. Повторять эксперимент по второму сценарию он, конечно же, не хотел.

Поэтому ситуация, что Модель А имеет MOS ≈ 4.0, а Модель B имеет MOS ≈ 4.4, на практике может не сказать ничего. Эта разница может оказаться статистически незначимой.

Меньше loss ≠ лучше качество

В конце поговорим про loss, который мы оптимизируем непосредственно во время обучения модели.

Если сильно упростить, пайплайн ТТС выглядит таким образом:
Текст → Нормализация → Мел‑спектрограммы → Аудио
Основная работа и инновации происходят на шаге получения Мел‑спектрограммы.

Мы предсказываем эту Мел‑спектрограмму либо как задачу регрессии, либо как классификации на аудио токены (в более новых подходах). И оптимизируем обычный Loss (MSE в случае регрессии, кросс энтропию в случае классификации).

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

  • checkpoint на шаге 120.000;

  • checkpoint на шаге 150.000;

  • у второго loss лучше.

Но на слух качество аудио либо одинаково, а иногда у первого даже звучит приятнее.
Из‑за этого стандартный пайплайн: берем лучший checkpoint по loss'у на валидации, в TTS часто не работает.

Приходится сохранять несколько чекпоинтов, генерить ими несколько аудио (обычно 10–20) и слушать.

Да, руками (ушами). Я переслушал столько вариаций «озвучки» абзацев из Википедии про А.С. Пушкина, что мог повторять их наизусть. То есть, валидация становится частично ручной, как минимум при выборе чекпоинтов для подсчета метрик и сравнения с продом.

Часто встречаешь такие графики. Общий тренд на снижение виден, но быстрое плато. А на графике (с) вообще придется сэмплить чекпоинты за последние 50k эпох, чтобы с уверенностью найти лучший.

Часто встречаешь такие графики. Общий тренд на снижение виден, но быстрое плато. А на графике © вообще придется сэмплить чекпоинты за последние 50k эпох, чтобы с уверенностью найти лучший.

Итог

Когда я начинал работать с TTS, ожидал обычный ML‑пайплайн с нюансами. Интересно было именно разбираться во внутренностях моделей и копаться под капотом torch. По факту оказалось, что значительная часть времени уходит не на обучение и построение модели, а на попытку ответить на вопрос: «Она реально стала лучше или мне кажется?».

В какой‑то момент в TTS начинаешь доверять своим ушам больше, чем метрикам.