# Анализ стека — интерфейс для незрячего (AI Blind) Дата: 2026-09-10. Принцип: только бесплатные / open-source библиотеки, каждый модуль — законченная проверяемая единица. Целевая платформа — Windows (ПК отца), разработка — Linux/кроссплатформенный код. --- ## 1. Модуль STT (речь → текст) | Кандидат | Версия | Лицензия | Русский | Скорость CPU | Комментарий | |---|---|---|---|---|---| | **faster-whisper** | 1.2.1 (окт 2025) | MIT | ✅ отлично | small/int8: 13 мин аудио ≈ 1 мин 42 с (i7-12700K) → короткая фраза 5 с ≈ 1–2 с | FFmpeg не нужен (PyAV внутри), Silero-VAD встроен, модель качается с HuggingFace автоматически | | Vosk | стабильная | Apache 2.0 | ✅ (small-ru 45 МБ WER ~22–30%, big-ru 1.8 ГБ WER ~5–11%) | быстрее Whisper, стриминг | Запасной вариант для слабого ПК; точность small ниже | | openai-whisper / transformers | — | MIT | ✅ | медленно на CPU | Не берём — быстрее-whisper строго лучше | **Вердикт: faster-whisper**, модель `small` или `base` c `compute_type="int8"` на CPU. - Для голосовых фраз 2–15 с задержка 1–3 с — приемлемо. - Размер: small ≈ 460 МБ (int8 ~150 МБ в RAM), base ≈ 145 МБ. - Фолбэк: Vosk small-ru, если ПК отца слабый (замерим на Module 1 и решим). ## 2. Модуль TTS (текст → звук) | Кандидат | Версия | Лицензия | Русский | Онлайн/офлайн | Комментарий | |---|---|---|---|---|---| | **edge-tts** | 7.2.8 (мар 2026) | LGPL | ✅ ru-RU-SvetlanaNeural / DmitryNeural | онлайн (бесплатный сервис MS, без ключа) | rate/volume/pitch настраиваются → «−15% скорости» из ТЗ поддерживается нативно | | **Piper** (`piper-tts`) | 1.8.0 (активно развивается, переехал в OHF-Voice/piper1-gpl) | GPL-3.0 | ✅ голоса ru_RU (denis, dmitri, irina, ruslan) | офлайн | Фолбэк: работает без интернета, быстрый на CPU | **Вердикт: edge-tts основной + Piper фолбэк.** Риск edge-tts: неофициальный эндпоинт Microsoft, исторически ломался (403). Архитектура TTS-модуля сразу делается с интерфейсом «провайдер», чтобы переключение на Piper было правкой конфига. ## 3. Модуль записи/воспроизведения звука - **sounddevice 0.5.6** (авг 2026, свежий), MIT, PortAudio в комплекте, numpy-массивы. - Запись push-to-talk: буфер в RAM пока удерживается клавиша → float32/int16 → wav в памяти. - Воспроизведение: `sd.play()` / `sd.stop()` — мгновенная остановка для клавиши «Замолчи». Идеально. - soundfile — для сохранения wav при отладке. - **VAD: silero-vad 6.2.1** (фев 2026), MIT, ~2 МБ, <1 мс на чанк 30 мс, ONNX-режим. Использование: отрезать тишину перед STT (меньше галлюцинаций Whisper), позже — режим «свободного разговора». ## 4. Модуль горячих клавиш | Кандидат | Статус | Windows | Suppression | Комментарий | |---|---|---|---|---| | **keyboard 0.13.5** | мёртв с 2020, но стабильный и широко используемый | ✅ глобальный хук без админ-прав | ✅ (только Windows) | Умеет press/hold/release события — ровно то, что нужно push-to-talk | | pynput | живой | ✅ | ❌ подавления нет | Запасной вариант | **Вердикт: keyboard** (раскладка: дублируем NumPad и основные клавиши: Num0/Пробел — слушать, NumDel/Esc — замолчать, NumEnter/Enter — повторить). Риск: библиотека не развивается — при проблемах переходим на pynput или WinAPI-хук; API модуля изолируем. ## 5. Модуль «мозга» (LLM) - **OpenRouter** через `openai`-совместимый клиент (base_url = https://openrouter.ai/api/v1) — без новых зависимостей. Модель выбирается в конфиге. - Очистка Markdown — собственный regex-модуль (звёздочки, решётки, списки, ссылки). - Системный промпт: «отвечай коротко, простыми предложениями, без списков и разметки» — это дешевле, чем чистка сложного текста. ## 6. Модуль Telegram - **aiogram 3.x** (актуальная), отдельный asyncio-поток/задача. - События: входящее сообщение от сына → озвучка; ответ отца (надиктован через основной цикл) → отправка. ## 7. Прочее - **Earcons** (звуковые маркеры): генерируем свои короткие wav (numpy → файлы в `assets/earcons/`), играем через sounddevice. Никаких внешних ассетов не нужно. - **Сборка для Windows**: PyInstaller → один exe. Проверим на Module 7. - **Конфиг**: TOML/JSON + `.env` для ключей (OPENROUTER_API_KEY, TG_BOT_TOKEN). --- ## Итоговый стек v1 ``` faster-whisper==1.2.1 # STT (fallback: vosk) edge-tts==7.2.8 # TTS (fallback: piper-tts==1.8.0) sounddevice==0.5.6 # запись/воспроизведение soundfile # wav I/O numpy # аудио-буферы, earcons silero-vad==6.2.1 # VAD (опционально) keyboard==0.13.5 # глобальные клавиши (Windows) openai (client) # OpenRouter aiogram>=3 # Telegram pyinstaller # упаковка exe (этап сборки) ``` Python ≥ 3.9 (лучше 3.11/3.12). Все пакеты кроссплатформенные, разработку ведём здесь (Linux), деплой — на Windows (звук/клавиши тестируются там). ## Риски и смягчение 1. **edge-tts отвалится** → Piper фолбэк встроен в дизайн модуля. 2. **keyboard мёртв** → работает сегодня; изоляция API, запасной pynput. 3. **Whisper медленный на слабом ПК** → замер на Module 1; если плохо — Vosk small-ru. 4. **Задержка пайплайна** STT→LLM→TTS ≈ 1+2+1 с → смягчаем: короткие фразы (base-модель, дешёвая быстрая LLM, edge-tts), звуковой маркер «думаю» сразу после отпускания клавиши.