Как сделать своего голосового ассистента
23 сентября 2026 · гайд разработчика · 8 минут чтения
Голосовой ассистент — возможно, самый благодарный pet-проект для разработчика 2026 года: все сложные части уже превращены в API, осталось собрать конвейер. Вот карта маршрута — от первого звука до характера, по опыту Амалии.
Шаг 0. Пойми скелет
Четыре узла: детектор речи → распознавание → языковая модель → синтез. Узлы независимы: каждый можно менять, не трогая соседей. Детально про каждый — в гайде про устройство ассистентов. Дальше — только практика.
Шаг 1. Микрофон и конец фразы
Возьми Silero VAD — офлайн, крошечная, точная. Оберни её в свой «SpeechGate»: пишешь буфер, пока вероятность речи высокая; 600 мс тишины — фраза готова. Не отправляй в сеть тишину: это и этика, и трафик, и деньги. О нюансах порога — разбор VAD.
Шаг 2. Распознавание: Groq Whisper
Фраза → WAV → multipart POST на Groq. Ответ — за ~0,2 с. Нюансы форматов и лимиты бесплатного тарифа я разобрал отдельно: практика Groq Whisper API. Ключ — в local.properties, не в репозиторий.
Шаг 3. Мозг: LLM с tool calling
Тот же Groq, модель Qwen3. Три правила, которые сэкономят тебе неделю:
- JSON-режим включай принудительно — ответ строго вида
{"reply":"...","tools":[...]}. Тогда действия парсятся детерминированно, без регулярок и молитв; - reply никогда не пустой — модель должна всегда возвращать реплику для голоса, даже если действий нет. Иначе ассистент будет молчать при сбоях;
- системный промпт — половина характера. Пропиши, кто ассистент, как говорит, что запрещено говорить. Это больше кода, чем кажется: у Амалии промпт — 40 КБ жизни.
Шаг 4. Голос: Fish Audio + стриминг
Запускай синтез на первых токенах ответа, а не после финальной точки. Принимай сырой PCM 24 кГц стримом и корми AudioTrack по чанкам, с USAGE_ASSISTANT. Не гоняй MP3 — декодирование и буферизация съедят секунду. Почему — разбор стриминга.
Шаг 5. Управление телефоном
Инструменты — обычные функции, обёрнутые в JSON-схемы: Wi-Fi, Bluetooth, яркость, громкость, фонарик, будильники, батарея. Вызывай их параллельно с озвучиванием: человек должен услышать «готово» и увидеть результат одновременно. Список рабочих команд — в справочнике.
Шаг 6. Скорость как фича
Замеряй каждый этап отдельно и оптимизируй сумму: перекрывай этапы, стримь, не жди полных данных. Целевой ориентир — меньше секунды от конца речи до первого звука: анатомия 0,87 с.
Честная оценка трудозатрат
- Рабочий прототип «звук → текст → ответ» — вечер;
- Стриминг, аудио-маршрутизация, устойчивость к обрывам сети — неделя;
- Характер, который не стыдно слушать каждый день, — постоянно.
Хочешь пропустить шаги 1–6 и сразу модифицировать готовое? Амалия открыта под MIT: форкни на GitHub или скачай APK и увидь, к чему стремиться.