Стенд подбора
Условия
Цифры стенда — ориентиры на нашем оборудовании, а не замер вашего репозитория. Первым шагом работы мы меряем именно то, что стоит у вас, и подставляем ваши числа в эту же таблицу.
То же решение машиночитаемо (JSON для отчёта)
Распознавание речи: все кандидаты и отсев
WER — доля ошибочных слов на русской спонтанной речи: 15 % значит, что каждое седьмое слово придётся править. RTF — доля реального времени на выбранном железе: 0,3 значит «10 секунд звука за 3 секунды». «Старт» — холодная загрузка модели в память, её пользователь чувствует как задержку первого нажатия.
Синтез речи: все кандидаты и отсев
MOS — субъективная оценка естественности голоса по пятибалльной шкале (3 — «понятно, но робот», 4 — «похоже на человека»). Считается на слепом прослушивании, поэтому сравнивать её можно только внутри одного прогона одного стенда.
План внедрения
Риски и что с ними делать
Как это меряется
Точность — WER и CER
Берём один набор записей и считаем долю ошибочных слов (WER) и символов (CER) относительно ручной расшифровки. Отдельно — на чистой речи, на шуме улицы и на телефонном канале: модель, лучшая на студии, часто проигрывает на улице.
Скорость — RTF и задержка
RTF отвечает «успеваем ли за речью», но пользователь чувствует другое — задержку первого слова и паузу после конца фразы. Обе меряем отдельно, на реальном телефоне, а не на эмуляторе.
Голос — MOS и разборчивость
Естественность — слепое прослушивание по пятибалльной шкале. Разборчивость — доля верно записанных на слух слов. Отдельно проверяем числа, даты, ударения и аббревиатуры: на них синтез и падает.
Цена в приложении
Вес файлов модели, пик ОЗУ, холодный старт, нагрев и расход батареи за 10 минут непрерывной работы. Модель, которая греет телефон, не доживёт до второго дня использования.
Лицензия
Главная ловушка офлайн-моделей: самые приятные на слух русские модели часто идут под CC BY-NC-SA — в платном приложении их использовать нельзя. Копилефт (GPL/LGPL) — отдельный разговор с юристом.
Цена интеграции в RN
JS-поток React Native не считает — всё уходит в нативный модуль. Считаем реальную работу: готовая обёртка, C API с мостом или полностью свой препроцессинг признаков.
Ответы на три вопроса из задания
С какими офлайн-моделями для русского работали
Распознавание: Vosk (ru-small и полная ru), whisper.cpp от tiny до small в квантовании q5, sherpa-onnx zipformer, модели семейства GigaAM в onnx. Синтез: Piper (голоса ru_RU), VITS в sherpa-onnx, RHVoice, системный TTS. Рабочий контур у нас постоянный: своя ферма распознавания на GPU, через которую проходит поток записей, и стенд сравнения, из которого собрана таблица на этой странице.
Какие метрики говорят о качестве
Распознавание — WER и CER на едином наборе, отдельно по условиям записи; плюс задержка первого слова, RTF, пик ОЗУ и холодный старт. Синтез — MOS на слепом прослушивании и разборчивость, отдельно на числах, датах и ударениях; RTF синтеза и время до первого звука.
Метрика без общего набора записей бессмысленна: сравнивать можно только числа, полученные одним прогоном на одних данных. Поэтому вторым шагом работы всегда идёт стенд, а не смена модели.
Что критично в React Native и мобильных ОС
Счёт не живёт в JS-потоке: нужен нативный модуль (JSI или старый мост) и передача звука без копирования буферов туда-обратно. На Android — фоновая запись и ограничения на работу свёрнутого приложения, разные ABI в сборке, лимит размера установщика в сторе. На iOS — аудиосессия и прерывания звонком, фоновые режимы, требования App Review к тому, что и куда уходит.
И главное для офлайна: модель должна лежать в приложении или докачиваться заранее, а не «при первом использовании, если будет сеть» — иначе офлайн-режим сломается ровно там, где он нужен.
Нужен такой разбор для вашего репозитория?
Первый шаг — замер того, что уже стоит: сегодняшние WER, RTF, ОЗУ и холодный старт ваших моделей на реальных телефонах, и та же таблица с вашими числами вместо стендовых. Дальше — отчёт со сравнением, рекомендациями, планом внедрения и рисками.
Обсудить разбор