Сколько RAM нужно для Rhasspy
Rhasspy — офлайн-платформа голосового управления для умного дома: распознаёт wake word, переводит речь в текст, дёргает интеграции с Home Assistant или Node-RED — и всё это без единого запроса во внешнее облако. Разработчик даёт минимальные требования вида «1 ГБ RAM», но это цифра для самого скромного набора: один язык, лёгкая модель распознавания, без синтеза речи в ответ. На практике память съедают загруженные модели, а не сам процесс Rhasspy, и это меняет расчёт кардинально. Разберём, из чего складывается расход RAM в разных конфигурациях и как не упереться в OOM на первом же добавленном языке.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Из чего складывается память Rhasspy
Сам процесс Rhasspy — это Python/Flask-сервер с веб-интерфейсом и REST API, который координирует работу отдельных компонентов через MQTT-шину (Hermes-протокол). В покое, без загруженных моделей, сервер занимает 80-150 МБ — немного. Но Rhasspy не делает распознавание речи сам: он оркестрирует внешние движки, и именно они тянут память вверх.
Основные потребители RAM:
- Wake word engine (Porcupine, Snowboy, raven) — держит в памяти небольшую модель ключевого слова, 20-50 МБ, работает постоянно в фоне.
- Speech-to-text (Kaldi, DeepSpeech, Vosk, опционально faster-whisper через кастомную интеграцию) — самый тяжёлый компонент. Модель загружается в память целиком и держится там, пока сервис активен, даже если распознавание не идёт прямо сейчас.
- Intent recognition (Rhasspy NLU / fsticuffs) — лёгкий, обычно укладывается в 30-80 МБ, зависит от количества обученных фраз-шаблонов.
- Text-to-speech (eSpeak, Flite, Larynx, MaryTTS) — от почти бесплатного eSpeak (10-20 МБ) до Larynx с нейросетевыми голосами (300-500 МБ на загруженную модель).
- MQTT-брокер (обычно Mosquitto рядом) — 10-20 МБ, почти не считается.
Ключевой момент: каждый добавленный язык или альтернативная модель распознавания не заменяет предыдущую в памяти, а добавляется поверх, если вы не выгружаете неиспользуемые сателлиты явно. На мультиязычной установке это складывается быстро.
Ориентиры по конфигурациям
Ниже — практические цифры для установки в Docker на VPS. Это не официальные требования разработчика, а ориентир по типовым нагрузкам; у вас может быть немного иначе в зависимости от выбранных движков.
| RAM сервера | Что реально получится |
|---|---|
| 512 МБ | Впритык: только wake word + fsticuffs intent, STT через внешний faster-whisper по HTTP (без локальной Kaldi-модели). Риск OOM при перезапуске контейнера |
| 1 ГБ | Официальный минимум на практике: один язык, Kaldi small-модель STT, eSpeak TTS, до 20-30 голосовых команд |
| 2 ГБ | Комфортная база: Kaldi/Vosk модель среднего размера, Larynx TTS с одним голосом, разумный запас на MQTT-очередь и веб-интерфейс |
| 4 ГБ | Мультиязычная установка (2-3 языка одновременно) или интеграция с faster-whisper base/small локально на CPU для более точного распознавания |
| 8 ГБ+ | Rhasspy как часть большого стека умного дома на одном сервере — рядом Home Assistant, Zigbee2MQTT, Node-RED, несколько сателлитов |
Если Rhasspy — единственная задача сервера и распознавание достаточно одного языка с моделью среднего размера, честный рабочий минимум — 2 ГБ. Ниже возможно, но с постоянным риском, что обновление зависимости или временный всплеск (например, при переобучении intent-модели после правки конфига) уронит процесс по памяти.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверSTT-движок — главный рычаг экономии или расхода
Выбор speech-to-text влияет на память больше всего остального вместе взятого:
- Kaldi — классический выбор Rhasspy, модели небольшие (50-300 МБ в зависимости от языка и размера словаря), но точность на живой речи с акцентом или шумом заметно уступает нейросетевым альтернативам.
- Vosk — модели того же порядка по памяти (40-500 МБ), чуть удобнее в настройке, схожая точность.
- DeepSpeech — устаревший вариант, Mozilla прекратила активную разработку, но модели легковесные (~200 МБ).
- faster-whisper как внешний сателлит — точность заметно выше Kaldi/Vosk, особенно на русском и со смешанной речью, но модель tiny/base занимает 200-500 МБ RAM в процессе, small — уже 1-1.5 ГБ. Плюс: этот сервис можно вынести на отдельный процесс или даже отдельный сервер и дёргать по HTTP, не раздувая память самого Rhasspy.
Если вы уже настраивали faster-whisper для других задач (например, распознавание речи на своём сервере), логично переиспользовать тот же движок и для голосового ассистента — через кастомный intent-сателлит, а не встроенный Kaldi.
Docker Compose: минимальный стек
Rhasspy официально поставляется как Docker-образ, и это самый практичный способ развернуть его на VPS. Пример compose-файла для конфигурации с faster-whisper по HTTP (экономный вариант по памяти для самого Rhasspy):
version: "3.8"
services:
rhasspy:
image: rhasspy/rhasspy
container_name: rhasspy
restart: unless-stopped
ports:
- "12101:12101"
volumes:
- ./profiles:/profiles
command: --user-profiles /profiles --profile ru
mem_limit: 1200m
devices:
- /dev/snd:/dev/snd # если микрофон подключён напрямую к серверу
Для типовой установки, где Rhasspy работает как хаб, а микрофон и динамик стоят на отдельных сателлитах (Raspberry Pi или ESP32 с ESPHome), директива devices не нужна — сервер только координирует и распознаёт, аудио приходит по сети через MQTT.
Обратите внимание на mem_limit — Docker без явного ограничения позволит контейнеру расти неограниченно, и если модель STT вдруг подгрузится дважды (баг перезапуска сателлита), это может утянуть в OOM весь сервер, а не только контейнер. Ставьте лимит с запасом 20-30% над ожидаемым потреблением.
Сателлиты vs один сервер: где считать память
Rhasspy изначально проектировался под распределённую архитектуру: базовая станция (master) с тяжёлыми моделями STT/TTS и лёгкие сателлиты (satellite) с микрофоном и динамиком, которые гоняют только wake word локально, а аудио шлют на master через MQTT.
- Всё на одном VPS — проще администрировать, но вся память ложится на один сервер: master-компоненты + при необходимости эмуляция сателлита для тестов.
- Master на VPS, сателлиты на Raspberry Pi по дому — сервер несёт только тяжёлые модели (расчёт из таблицы выше), сателлиты требуют по 512 МБ-1 ГБ каждый (Raspberry Pi Zero 2 W вытягивает это без проблем).
Для большинства домашних инсталляций разумно тяжёлую часть — STT, TTS, intent recognition, MQTT-брокер — держать на арендованном VPS с гарантированным аптаймом и не привязывать голосовое управление к состоянию домашнего роутера или к тому, включён ли Raspberry Pi под телевизором. Сателлиты остаются лёгкими и дешёвыми, а замена или добавление ещё одной комнаты не требует пересчёта ресурсов сервера.
Rhasspy рядом с Home Assistant на одном сервере
Частый сценарий — Rhasspy как голосовой фронтенд для уже развёрнутого Home Assistant. Если вы уже прикидывали ресурсы для самого Home Assistant (см. сколько RAM нужно Home Assistant), суммируйте требования, не берите по минимуму каждого:
| Компонент | Минимум с запасом |
|---|---|
| Home Assistant Core + база истории | 1-1.5 ГБ |
| Rhasspy (один язык, Kaldi/Vosk) | 1-1.5 ГБ |
| Zigbee2MQTT (если используется) | 300-500 МБ |
| Node-RED (если используется) | 300-500 МБ |
| Системные процессы, Docker overhead | 300-500 МБ |
Итого разумный сервер под весь стек умного дома с голосовым управлением — от 4 ГБ, с запасом лучше 6-8 ГБ, особенно если планируете добавить faster-whisper small или более крупную модель распознавания позже. Мигрировать на больший тариф проще, чем экономить на старте и упираться в OOM каждую неделю.
Практические советы по экономии памяти
- Не держите неиспользуемые языковые профили загруженными — Rhasspy позволяет переключаться между профилями, но каждый активный профиль тянет свой набор моделей. Отключайте то, что реально не нужно прямо сейчас.
- Выбирайте модель STT под задачу, а не «на вырост» — если у вас 30 голосовых команд для управления светом и климатом, полноразмерная Kaldi-модель с широким словарём избыточна; small-модель справится и сэкономит сотни мегабайт.
- Выносите TTS с нейросетевыми голосами отдельно, если он не критичен — eSpeak звучит роботизированно, но занимает на порядок меньше памяти, чем Larynx или XTTS; для голосового ответа вроде «свет выключен» разница в качестве звука не критична.
- Ставьте
mem_limitв Docker Compose на все компоненты стека — это не экономит память, но превращает падение одного контейнера в предсказуемое событие вместо каскадного OOM всего сервера. - Мониторьте реальное потребление после недели работы, а не сразу после установки — Rhasspy докидывает состояние в память по мере использования (кэш распознанных фраз, история MQTT-сообщений), и пиковое потребление обычно выше, чем в первый час.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Хватит ли 1 ГБ RAM для Rhasspy?
Да, но только для одного языка с лёгкой моделью STT (Kaldi small или Vosk small) и без нейросетевого TTS. Любое расширение — второй язык, более точная модель — потребует апгрейда.
Можно ли использовать faster-whisper вместо встроенного Kaldi в Rhasspy?
Да, через кастомный STT-сателлит, который дёргает faster-whisper по HTTP. Это увеличивает точность, особенно на русском, но требует отдельного расчёта памяти под саму faster-whisper-модель — от 200 МБ на tiny до 1.5+ ГБ на small.
Сколько памяти нужно на сателлит с микрофоном?
Если сателлит только слушает wake word и передаёт аудио на master, 512 МБ-1 ГБ достаточно — этого хватает даже Raspberry Pi Zero 2 W.
Что произойдёт при нехватке памяти — Rhasspy упадёт или начнёт тормозить?
Обычно OOM killer Linux останавливает процесс, съевший больше всего памяти в моменте загрузки модели STT — это чаще всего сам Rhasspy или его STT-сателлит. Восстановление занимает секунды при restart: unless-stopped в Docker, но каждый такой рестарт — пропущенная голосовая команда.
Стоит ли ставить Rhasspy и Home Assistant на один сервер?
Для домашнего использования — да, это удобнее и дешевле одного VPS с достаточным запасом памяти (от 4 ГБ), чем два отдельных сервера. Разделять стоит только при заметно возросшей нагрузке — например, если добавляете распознавание с нескольких сателлитов одновременно.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →