| .idea | ||
| custom-commands | ||
| model_small | ||
| sound | ||
| utils | ||
| .gitignore | ||
| commands.yaml | ||
| config.py | ||
| dev.env.example | ||
| effects.py | ||
| LICENSE.txt | ||
| main.py | ||
| README.md | ||
| requirements.txt | ||
| tts.py | ||
J.A.R.V.I.S (Python) — Bossiara13's fork
Голосовой ассистент для Windows с wake-word «jarvis». Распознаёт речь локально через Vosk (русская модель), отвечает голосом через Silero TTS, а свободные вопросы (фразы, начинающиеся со слова «скажи …») отправляет в LLM на Groq и зачитывает ответ.
Это форк
Форк репозитория Priler/jarvis (автор оригинала — Abraham Tugalov, 2022). Лицензия наследуется: CC BY-NC-SA 4.0 (см. LICENSE.txt).
Что отличается от оригинала
- Из истории удалены случайно закоммиченные секреты.
- Бэкенд LLM переключён с OpenAI на Groq (бесплатный тариф) через openai-совместимый API.
- Код обновлён под новую версию SDK
openai(>=1.0); старый pre-1.0 интерфейс был сломан. - Убрана зависимость от Picovoice Porcupine — wake-word распознаётся напрямую через Vosk с grammar-constraint (второй
KaldiRecognizerсо словарём изWAKE_WORDS). Ключ Picovoice больше не нужен. - Обновлена ветка/тэги (
dev,v0.0.1-import), причёсан README иrequirements.txt.
Установка
Требуется Python 3.11 (на 3.13 ряд зависимостей пока ставится с бубном).
git clone https://github.com/DmitryBykov-ISPO/J.A.R.V.I.S-py.git
cd J.A.R.V.I.S-py
py -3.11 -m venv .venv
.venv\Scripts\activate
pip install --upgrade pip
pip install -r requirements.txt
Скопируйте dev.env.example в dev.env и заполните ключ:
GROQ_TOKEN— бесплатно на console.groq.com.
Vosk-модель для русского языка лежит в model_small/ (уже в репозитории). Запуск:
python main.py
Конфигурация
config.py:MICROPHONE_INDEX = -1— индекс микрофона (-1означает устройство по умолчанию). Если микрофонов несколько и берётся не тот, поменяйте число.WAKE_WORDS = ('jarvis', 'джарвис')— варианты транскрипции wake-word, которые принимает Vosk. Если ваш голос/акцент стабильно расшифровывается как, например,жарвис— добавьте этот вариант сюда (всё в нижнем регистре).GROQ_MODEL— имя модели Groq (по умолчаниюllama-3.3-70b-versatile).
commands.yaml— набор голосовых команд и их вариантов для fuzzy-матчинга.custom-commands/— скомпилированные AHK-скрипты под конкретный сетап автора оригинала (переключение мониторов, управление Яндекс.Музыкой и т.п.). На вашей машине большая часть из них работать не будет, но ассистент запустится в любом случае.
Использование
- Скажите «Джарвис» (или «jarvis») — ассистент даст звуковой сигнал готовности.
- Произнесите команду — окно записи закрывается само, как только вы замолчите (см. ниже про VAD):
- либо одну из фраз из
commands.yaml(открыть браузер, выключить звук и т.д.); - либо начните со слова «скажи …» — остаток фразы уйдёт в Groq, ответ будет зачитан вслух.
- либо одну из фраз из
VAD (определение конца команды)
Окно записи команды закрывается по голосовой активности (webrtcvad), а не по таймеру. Параметры в config.py:
VAD_AGGRESSIVENESS(0..3) — насколько агрессивно VAD режет шум; по умолчанию 2.COMMAND_END_SILENCE_MS— длительность тишины, после которой окно закрывается (по умолчанию 1200 мс).COMMAND_MIN_SPEECH_MS— минимальная длительность речи, иначе тишина не считается концом (500 мс).COMMAND_MIN_LISTEN_MS— минимальное время записи, чтобы не закрыться мгновенно (1000 мс).COMMAND_MAX_LISTEN_MS— жёсткий потолок (15000 мс).
Схема commands.yaml
Каждая команда — это пара phrases + action:
open_browser:
phrases:
- открой браузер
- запусти браузер
action: {type: exe, file: "Run browser.exe"}
Типы действий:
exe— запустить.exeизcustom-commands/. Поля:file(имя файла), необязательныеwait: true(ждать завершения),delay_ms(пауза после запуска). По умолчанию послеexeпроигрывается звук подтвержденияok— отключается черезconfirm_sound: null.play_sound— проиграть WAV изsound/. Полеname(без расширения). Именаgreetиokпроигрываются с рандомным выбором из вариантовgreet1/2/3.wav,ok1/2/3.wav.system— встроенные операции.op: volume_mute,volume_unmute,exit.multi— последовательность шагов:steps: [...].
Шаги внутри multi — тех же типов. Пример:
sound_off:
phrases: [выключи звук, отключи звук]
action:
type: multi
steps:
- {type: play_sound, name: ok}
- {type: system, op: volume_mute}
Лицензия
CC BY-NC-SA 4.0 — см. LICENSE.txt. Авторство оригинала — Abraham Tugalov / Priler. Изменения в этом форке — Bossiara13 (Dmitry Bykov), 2026.