Коротко
Автор создал для подруги голосовой тренажёр собеседований, который целиком работает в браузере и не отправляет ответы на сервер. Ключевая идея — оставить небольшой модели только формулировку уточняющих вопросов, а выбор темы и проверку ответа поручить правилам и самому пользователю.
Контекст
Автор — разработчик Interview Room и сопровождаемого им npm-пакета react-ai-voice-avatar. Он начал проект для подруги, инженера-программиста, которой было трудно тренироваться отвечать вслух перед собеседованием; одиночная подготовка не воспроизводила диалог и уточняющие вопросы.
Главное
- Приложение называется Interview Room и предназначено для репетиции технических и поведенческих собеседований вслух.
- Варианты трека: Frontend, Backend и Machine learning; режимы: behavioral, technical, HR и полный цикл из пяти вопросов.
- Поддерживаются два персонажа-интервьюера — Ananya и Aarav — и настройки дружелюбного, нейтрального или строгого стиля.
- Стек: Silero VAD 1,8 МБ, Whisper base 295 МБ, Gemma 3 1B q4 880 МБ, Kokoro 82M 326 МБ и ONNX Runtime Web 67 МБ.
- Правила выбирают, о чём спросить, Gemma только формулирует вопрос, а отдельная проверка блокирует неподходящий вывод; при сбое используется шаблонная реплика.
- В сравнении на MacBook M4 Gemma 3 1B дала 8/12 уточнений по нужному углу, а Gemma 4 E2B — 12/12; генерация у обеих занимала примерно 1–1,6 секунды.
- Ни одна из проверенных моделей не показала надёжной оценки полноты STAR-ответов, поэтому в отчёте нет автоматических баллов.
- Пользователь сверяет ответ с банком из 206 критериев; кодовые метрики включают темп относительно ориентировочных 120–160 слов в минуту и паузы длиннее 3 секунд.
- Система ждёт около 5 секунд тишины перед завершением ответа; при полном молчании напоминает через 12 секунд и переходит дальше через 25 секунд.
- Первый запуск скачивает около 1,6 ГБ и может занять 4–8 минут; благодаря локальному кешу повторный запуск готов за 2–3 секунды.
Как сделано
Пользователь выбирает направление (Frontend, Backend или Machine learning), тип раунда (behavioral, technical, HR либо полный цикл из пяти вопросов), уровень, желаемую длину ответа и стиль интервьюера Ananya или Aarav. Можно пройти видеоинтервью с 3D-аватаром или телефонный формат; камера пользователя включается отдельно и остаётся локальной.
Silero VAD (1,8 МБ) определяет речь и паузы, Whisper base (295 МБ) переводит её в текст, Gemma 3 1B в квантизации q4 (880 МБ) формулирует уточнение, а Kokoro 82M (326 МБ) озвучивает его. ONNX Runtime Web (67 МБ) исполняет модели через WebGPU, а интеграция построена на transformers.js. Кодовые правила выбирают угол уточнения — например, личный вклад вместо расплывчатого «мы» или неуказанный результат. Защитная проверка удаляет похвалу, цитаты и лишний текст, оставляя один вопрос; если результат непригоден или генерация длится более 6 секунд, звучит заранее подготовленная реплика.
После интервью пользователь сам отмечает, насколько ответ удался, и проверяет 3–5 критериев из банка в 206 пунктов. Отчёт также вычисляет темп, длительность ответа, паузы, время до первого слова, некоторые слова-паразиты, соотношение «я» и «мы», а также числа. Модели кешируются в Origin Private File System: это обходит ограничение Chrome Cache API на файлы от 256 МБ. Сайт размещён как статическая страница на Render; для ONNX Runtime заданы заголовки cross-origin isolation в render.yaml.
Результаты
В тесте уточняющих вопросов Gemma 3 1B дала пригодный ответ по нужной теме в 8 случаях из 12; в остальных случаях корректно сработал запасной шаблон. Формулировка обычно занимала около 1–1,5 секунды. На MacBook M4 Gemma 4 E2B показала 12 из 12 по нужному углу и лучше справилась с двумя тестами ревью кода, но автор не включил её в приложение из-за требований к памяти и недостатка тестирования. Для Gemma 3 загрузка при первом посещении составляет около 1,6 ГБ суммарно и занимает 4–8 минут на соединении автора; повторный запуск готов примерно за 2–3 секунды. Подруга прошла интервью от начала до конца на своём ноутбуке и положительно оценила практику и разбор ответов. Проект бесплатен для пользователя, без аккаунта и серверной обработки речи.
Ограничения
Это практический проект и небольшая внутренняя оценка, а не широкое исследование: для основных сравнений использованы 12 уточнений и по два примера проверки кода и STAR-ответов. Gemma 3 1B ненадёжно оценивала STAR-ответы и в ранних тестах допускала неподходящие реплики, поэтому приложение не выставляет баллы и не поручает модели оценивание. Whisper обычно опускает «um» и «uh», поэтому отчёт не считает эти заполнители; некоторые слова и числа также могут классифицироваться ошибочно. Системный дизайн пока не реализован, режим Gemma 4 E2B обозначен как будущий, а для первого запуска нужны современный Chrome или Edge с WebGPU, настольный компьютер и загрузка около 1,6 ГБ. Автор не приводит формальной оценки точности распознавания, долгосрочного эффекта на подготовку или производительности на широком наборе устройств.
Что взять себе
- Для небольших языковых моделей полезно отделять выбор решения от его формулировки: правила могут задать цель, а модель — сделать вопрос естественным.
- Не следует выдавать автоматическую оценку за достоверную, если модель не прошла проверку на соответствующей задаче; здесь оценку оставили пользователю.
- При голосовой практике нужно учитывать паузы и возможность попросить повторить вопрос, иначе тренажёр будет перебивать кандидата.
- Локальное выполнение снижает передачу чувствительных ответов в сеть, но требует WebGPU, места на диске и терпения при первой загрузке.
- Метрики речи могут помогать самоанализу, однако их ограничения — например, пропуск «um» и «uh» распознавателем — нужно явно показывать.
Читать оригинал, если…
Откройте исходник, если нужны репозиторий и демо, подробности реализации, результаты отдельных тестов моделей или планы развития проекта.