feat(cli): добавлен батч-режим и конфигурационный файл (шаги 8–12)
- Зачем: - обработка нескольких файлов за один вызов с загрузкой модели один раз. - хранение дефолтов (модель, язык, устройство) в .transcriber.toml. - Что: - добавлен config.py: поиск .transcriber.toml (CWD → ~/.config), парсинг, валидация, приоритет CLI > конфиг > хардкод. - рефакторинг transcriber.py: выделены load_model() и _transcribe_file() с TranscribeFileResult для переиспользования модели в батче. - добавлены expand_globs() с дедупликацией и has_existing_transcript() в utils.py. - CLI: files: list[Path], --force/-f, prescan-first батч с итоговой статистикой и временем, Status-спиннер для прогресса. - README: секции батч-режим, конфигурационный файл, --force в таблице опций. - ADR-002: зафиксированы архитектурные решения (prescan-first, TranscribeFileResult, конфиг без мержа). - Проверка: - uv run pytest -q — 94 passed, 1 skipped. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -56,6 +56,44 @@ transcribe podcast.wav --model small --device cpu
|
||||
transcribe interview.m4a --output result.md
|
||||
```
|
||||
|
||||
### Батч-режим
|
||||
|
||||
Обработка нескольких файлов за один вызов — модель загружается один раз:
|
||||
|
||||
```bash
|
||||
# Все mp4 в директории
|
||||
transcribe ./recordings/*.mp4
|
||||
|
||||
# Несколько файлов
|
||||
transcribe meeting1.mp3 meeting2.mp3
|
||||
|
||||
# Перезаписать существующие транскрипты
|
||||
transcribe *.mp4 --force
|
||||
```
|
||||
|
||||
- Файлы с существующим транскриптом (`*-transcript.md`) автоматически пропускаются
|
||||
- `--force` / `-f` — перезаписать существующие транскрипты
|
||||
- В конце выводится итоговая статистика: обработано, пропущено, ошибок
|
||||
- При ошибке в одном файле остальные продолжают обрабатываться
|
||||
- `--output` несовместим с несколькими файлами
|
||||
|
||||
### Конфигурационный файл
|
||||
|
||||
Дефолтные параметры можно задать в `.transcriber.toml`:
|
||||
|
||||
```toml
|
||||
model = "small"
|
||||
language = "ru"
|
||||
device = "cpu"
|
||||
compute_type = "int8"
|
||||
```
|
||||
|
||||
Порядок поиска:
|
||||
1. `.transcriber.toml` в текущей директории (проектный конфиг)
|
||||
2. `~/.config/transcriber/config.toml` (глобальный конфиг пользователя)
|
||||
|
||||
Приоритет: **CLI-аргумент > конфиг > встроенный дефолт**.
|
||||
|
||||
### Опции CLI
|
||||
|
||||
| Опция | Сокращение | По умолчанию | Описание |
|
||||
@@ -65,6 +103,7 @@ transcribe interview.m4a --output result.md
|
||||
| `--output` | `-o` | `<файл>-transcript.md` | Путь к выходному файлу |
|
||||
| `--device` | `-d` | `auto` | Устройство (auto, cpu, cuda) |
|
||||
| `--compute-type` | — | `int8` | Тип вычислений |
|
||||
| `--force` | `-f` | — | Перезаписать существующие транскрипты |
|
||||
| `--verbose` | `-v` | — | Подробный вывод |
|
||||
|
||||
## Модели
|
||||
|
||||
Reference in New Issue
Block a user