Модуль 1: STT (речь → текст)
Обёртка над faster-whisper с интерфейсом «провайдер»: если для ПК отца понадобится другой распознаватель (vosk), он добавляется новым классом без изменения остального проекта.
Файлы
| Файл | Назначение |
|---|---|
base.py |
Интерфейс SttProvider, результат TranscriptResult |
provider_faster_whisper.py |
Реализация на faster-whisper (CPU, int8) |
test_stt.py |
Тест-скрипт: файл / генерация фразы / микрофон |
samples/ |
Тестовые аудио (создаются при запуске, в git не входят) |
Использование из кода
from modules.stt import get_provider
stt = get_provider("faster-whisper", model_size="small") # tiny|base|small|medium
result = stt.transcribe("phrase.wav") # путь к файлу (wav/mp3/flac)
result = stt.transcribe(np_array_float32_16k) # или массив с микрофона
print(result.text, result.processing_sec)
Что замеряет тест
- processing_sec — время распознавания (без загрузки модели);
- RTF (realtime factor) — обработка/длина аудио; RTF < 1 — быстрее реального времени;
- при
--repeat N— лучший (минимальный) прогон.
Критерии приёмки Модуля 1
- Тестовая фраза распознаётся дословно (allow punctuation/case).
- Фраза ~5 c обрабатывается за <= 3 c (RTF <= 0.6) на
small/int8/CPU. - Если нет — пробуем
base, фиксируем цифры; если иbaseмедленный — добавляем Vosk-провайдер.
Решение по скорости (замер 2026-09-10, Linux, фраза 8.9 c, edge-tts голос)
| Модель | Обработка | RTF | Точность |
|---|---|---|---|
| small | 1.17 c | 0.13 | дословно ✅ |
| base | 0.54 c | 0.06 | 2 ошибки ("выпить чаю" → "выпечаю") |
| tiny | 0.39 c | 0.04 | 4 ошибки ("тестовы", "выпечаю") |
Вердикт: faster-whisper small (int8, CPU, beam=1, VAD on) — RTF 0.13 даёт запас ×3
даже на слабом ПК; качество base/tiny недостаточно для пожилого пользователя.
Загрузка модели при старте: ~2–5 c (после скачивания), кэш в ~/.cache/huggingface.
Память по факту не замерена — при желании: /usr/bin/time -v .venv/bin/python modules/stt/test_stt.py --make-sample.
Известные ограничения
- Первый запуск качает модель с HuggingFace (small ≈ 460 МБ). Если недоступно:
export HF_ENDPOINT=https://hf-mirror.comперед запуском. - Запись с микрофона идёт на 16 кГц: если запись звучит «с ускорением», у устройства проблемы с ресемплингом — сообщи, добавим ресемплинг явно.