Локальная транскрипция аудио и видео в markdown — без облака, без API-ключей.
transcribe meeting.mp4
# → meeting-transcript.md- Полностью локально — данные не покидают машину
- Авто-ускорение — NVIDIA CUDA, Intel GPU (OpenVINO), ONNX (CPU), OpenVINO CPU или CPU fallback
- Батч-режим — обработка нескольких файлов за один вызов
- Markdown с таймкодами — удобен для суммаризации ИИ
- Аудио и видео — mp3, wav, mp4, mkv и другие форматы
1. Установить uv (если ещё нет):
curl -LsSf https://astral.sh/uv/install.sh | sh # Linux / macOSpowershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # Windows2. Установить transcriber:
uv tool install git+https://github.com/dementev-dev/local-transcriber3. Ускорение (ставится автоматически):
- Intel GPU (Arc, встроенная графика): работает через OpenVINO — ускорение в ~2x vs CPU
- OpenVINO (Intel/AMD x86 CPU): ставится автоматически на Linux и Windows — ускорение в 2-4x
- NVIDIA CUDA (GPU): если есть GPU — транскрипция в 5-10× быстрее
- Windows:
winget install -e --id Nvidia.CUDA --version 12.9(от администратора), перезапустить терминал - Linux / WSL2: работает из коробки (нужен только драйвер:
nvidia-smi)
- Windows:
4. Готово:
transcribe meeting.mp4Модели скачиваются автоматически при первом запуске (~1.5 GB для medium), нужен доступ в интернет.
transcribe: command not found
Выполните uv tool update-shell — это добавит нужный путь в PATH автоматически.
Обновление:
uv tool install --force git+https://github.com/dementev-dev/local-transcriberУдаление:
uv tool uninstall local-transcriberОчистка моделей:
Модели кешируются в ~/.cache/huggingface/hub/ и могут занимать несколько гигабайт.
На Windows без Developer Mode файлы копируются без симлинков — место удваивается.
# Linux / macOS — посмотреть размер кеша
du -sh ~/.cache/huggingface/hub/models--*
# Удалить все скачанные модели
rm -rf ~/.cache/huggingface/hub/models--Systran--faster-whisper-*
rm -rf ~/.cache/huggingface/hub/models--OpenVINO--whisper-*# Windows
dir "$env:USERPROFILE\.cache\huggingface\hub\models--*"
# Удалить все скачанные модели
Remove-Item -Recurse "$env:USERPROFILE\.cache\huggingface\hub\models--Systran--faster-whisper-*"
Remove-Item -Recurse "$env:USERPROFILE\.cache\huggingface\hub\models--OpenVINO--whisper-*"При следующем запуске нужная модель скачается заново.
Windows: ошибка WinError 1314 при первом запуске
HuggingFace Hub использует симлинки для экономии места. На Windows без Developer Mode первая загрузка модели может упасть с ошибкой WinError 1314. Повторный запуск команды обычно помогает — HF Hub переключается на копирование файлов.
Чтобы избежать проблемы и сэкономить место, включите Developer Mode: Инструкция Microsoft
# Простой запуск (medium, русский, автодетект устройства)
transcribe meeting.mp4
# Указать язык
transcribe lecture.mp3 --language en
# Максимальное качество на NVIDIA GPU
transcribe podcast.wav --model large-v3 --compute-type float16
# Максимальное качество на Intel GPU
transcribe podcast.wav --model large-v3 --device openvino-gpu
# Максимальная скорость на CPU (русский)
transcribe meeting.mp4 --device onnx --model gigaam-v3
# CPU с пунктуацией (русский, для parakeet-v3 нужен явный язык)
transcribe podcast.wav --device onnx --model parakeet-v3 --language ru
# Сохранить в конкретный файл
transcribe interview.m4a --output result.mdОбработка нескольких файлов за один вызов — модель загружается один раз:
# Все mp4 в директории
transcribe ./recordings/*.mp4
# Несколько файлов
transcribe meeting1.mp3 meeting2.mp3
# Перезаписать существующие транскрипты
transcribe *.mp4 --force- Файлы с существующим транскриптом (
*-transcript.md) автоматически пропускаются --force/-f— перезаписать существующие транскрипты- При ошибке в одном файле остальные продолжают обрабатываться
--outputнесовместим с несколькими файлами
| Опция | Сокращение | По умолчанию | Описание |
|---|---|---|---|
--model |
-m |
medium |
Модель Whisper |
--language |
-l |
ru |
Язык (ru, en, auto и др.) |
--output |
-o |
<файл>-transcript.md |
Путь к выходному файлу |
--device |
-d |
auto |
Устройство (auto, cpu, cuda, openvino, openvino-gpu, openvino-cpu, onnx) |
--compute-type |
— | float16 (CUDA) / int8 (OpenVINO/ONNX) / float32 (CPU) | Тип вычислений |
--threads |
-t |
0 (авто) | Потоки CPU (рекомендуется = число физ. ядер) |
--force |
-f |
— | Перезаписать существующие транскрипты |
--verbose |
-v |
— | Подробный вывод |
| Linux / WSL2 | macOS | Windows | |
|---|---|---|---|
| CPU | ✅ | ✅ | ✅ |
| OpenVINO (x86 CPU) | ✅ авто | — | ✅ авто |
| OpenVINO (Intel GPU) | ✅ авто | — | ✅ авто |
| ONNX (CPU) | ✅ явно | ✅ явно | ✅ явно |
| GPU (NVIDIA) | ✅ авто | — | ✅ (нужен CUDA 12) |
Linux / WSL2
- Intel GPU (Arc, встроенная графика) работает из коробки через OpenVINO
- NVIDIA GPU работает из коробки — cuBLAS ставится автоматически как зависимость
- Нужен только драйвер NVIDIA (проверка:
nvidia-smi) - На ARM (aarch64) cuBLAS через pip недоступен — нужен системный CUDA toolkit
macOS
- Работает на CPU (Intel и Apple Silicon)
- GPU (CUDA) недоступен — NVIDIA не поддерживает macOS
Windows
- CPU работает из коробки
- Intel GPU (Arc, встроенная графика) работает из коробки через OpenVINO
- Для NVIDIA GPU нужен CUDA 12 (ctranslate2 4.7 не совместим с CUDA 11 и 13):
winget install -e --id Nvidia.CUDA --version 12.9winget installтребует запуска от имени администратора (elevated terminal).uv tool installработает без админа (ставит в пользовательскую директорию). - После установки CUDA перезапустите терминал
Дефолтные параметры можно задать в .transcriber.toml:
model = "large-v3"
language = "en"Порядок поиска:
.transcriber.tomlв текущей директории~/.config/transcriber/config.toml
Приоритет: CLI-аргумент > конфиг > device-aware дефолт > встроенный дефолт.
Дефолты зависят от устройства:
| Параметр | CUDA | OpenVINO (GPU) | OpenVINO (CPU) | ONNX | CPU |
|---|---|---|---|---|---|
| model | medium | medium | medium | gigaam-v3 | medium |
| compute_type | float16 | int8 | int8 | int8 | float32 |
| language | ru | ru | ru | ru | ru |
Рекомендации:
- По умолчанию:
medium— хороший баланс скорости и качества - Макс. качество (NVIDIA):
large-v3+--compute-type float16 - Макс. качество (Intel GPU):
large-v3+--device openvino-gpu - Макс. скорость CPU (русский):
--device onnx --model gigaam-v3(17-29× RTF, без пунктуации; рекомендуется LLM-нормализация терминов после) - CPU с пунктуацией (русский):
--device openvino-cpu --model medium(5-6× RTF; для встреч ≤30 мин с равномерной громкостью — на длинных файлах с тихими фрагментами возможны галлюцинации) - Быстрый тест:
tiny— для проверки пайплайна
Таблица моделей
| Модель | Размер на диске | VRAM (int8) | Скорость (GPU) | Качество |
|---|---|---|---|---|
tiny |
~75 MB | ~1 GB | ★★★★★ | ★ |
base |
~140 MB | ~1 GB | ★★★★ | ★★ |
small |
~460 MB | ~1.5 GB | ★★★ | ★★★ |
medium |
~1.5 GB | ~2.5 GB | ★★ | ★★★★ |
large-v3 |
~3 GB | ~2.5 GB | ★ | ★★★★★ |
Другие архитектуры, не Whisper. Работают через onnxruntime на CPU:
| Модель | Размер (int8) | RTFx CPU | Языки | Пунктуация |
|---|---|---|---|---|
gigaam-v3 |
~300 MB | 17-29× | ru | ❌ |
parakeet-v3 |
~600 MB | 12-20× | 25 языков | ✅ |
Рекомендация: для русского —
gigaam-v3(единственный из onnx-моделей, дающий пригодный для конспекта транскрипт на русских встречах; см. ADR-006).parakeet-v3уместен только для англоязычного / multilingual контента — на русском воспроизводит проблемы из ADR-005 (Mm-hmm-редукция тихих реплик, иноязычные вставки).
Типы квантизации (--compute-type)
| Тип | Бэкенд | VRAM/RAM | Качество | Когда использовать |
|---|---|---|---|---|
float16 |
CUDA | ~4.5-5 GB | Отлично | По умолчанию для CUDA |
int8_float16 |
CUDA | ~4.7 GB | Отлично | GPU от 6 GB, альтернатива float16 |
int8_float32 |
CPU | Среднее | Отлично | Рекомендуется для CPU — 1.5x быстрее float32 при том же качестве |
int8 |
CUDA / OpenVINO | Низкое | Хорошо, но бывают галлюцинации | По умолчанию для OpenVINO |
fp16 |
OpenVINO | Низкое | Отлично | OpenVINO large-v3 (выбирается автоматически) |
float32 |
CPU | Среднее | Отлично | По умолчанию для CPU |
Важно: int8 на длинных записях может давать галлюцинации (повтор фраз, потеря контента).
float16/fp16 и float32 значительно стабильнее на записях >20 минут.
Для OpenVINO
--compute-typeвыбирает предквантизированную модель (int8 или fp16), а не runtime-параметр. Дляlarge-v3по умолчанию выбираетсяfp16.
Подробнее: бенчмарки, OpenVINO, совместимость GPU, результаты тестирования — docs/gpu.md.
Формат вывода
# Транскрипт: meeting.mp4
- **Дата транскрипции**: 2026-03-17 14:30:05
- **Модель**: large-v3
- **Язык**: ru (detected)
- **Длительность**: 01:23:45
- **Устройство**: CUDA (NVIDIA GeForce RTX 3060)
---
[00:00:00.00 - 00:00:15.40] Добрый день, коллеги. Сегодня мы обсудим результаты
квартала. Первый вопрос — по метрикам продукта.
[00:00:18.10 - 00:00:25.73] Теперь перейдём к финансовым показателям.Близкие по времени сегменты автоматически объединяются в абзацы (пауза > 2 сек или длительность > 60 сек разделяет абзацы).
Таймкоды: MM:SS.ss, для записей длиннее 1 часа — HH:MM:SS.ss.
- Аудио: mp3, wav, flac, ogg, m4a, wma, aac
- Видео: mp4, mkv, avi, mov, webm, ts
git clone https://github.com/dementev-dev/local-transcriber
cd local-transcriber
uv sync
uv run transcribe meeting.mp4 # запуск CLI
uv run pytest # тестыПодробнее — CONTRIBUTING.md.