- Зачем:
- шаг 5 плана: нужен рабочий CLI-happy path, связывающий utils / transcriber / formatter.
- ревью этапов 4–5 выявило два medium-бага в formatter и отсутствие тестов для CLI.
- Что:
- cli.py: все опции по PRD 3.2 (--model, --language, --output, --device, --compute-type, --verbose),
rich Status + stderr-консоль, предупреждение на пустую речь, статистика времени.
- transcriber.py: добавлена ensure_model_available() с проверкой кэша HF и валидацией
локальной директории; on_status callback для передачи прогресса в CLI; обработка
ImportError при отсутствии socksio через SOCKS proxy.
- formatter.py: исправлен overflow в format_timestamp (0.995 → 00:01.00 вместо 00:00.100);
сегменты теперь пишутся с явным пробелом и strip() независимо от whisper-формата текста.
- deps: добавлен socksio>=1.0.0 для поддержки SOCKS proxy при загрузке модели.
- tests: test_cli.py (8 тестов на CLI-контракт), расширены test_formatter.py и test_transcriber.py.
- Проверка:
- uv run pytest — 42 passed.
- uv run transcribe --help показывает все опции.
30 lines
559 B
TOML
30 lines
559 B
TOML
[project]
|
|
name = "local-transcriber"
|
|
version = "0.1.0"
|
|
description = "Local CLI tool for audio/video transcription using faster-whisper"
|
|
requires-python = ">=3.10"
|
|
dependencies = [
|
|
"typer",
|
|
"rich",
|
|
"faster-whisper>=1.2.1",
|
|
"socksio>=1.0.0",
|
|
]
|
|
|
|
[project.scripts]
|
|
transcribe = "local_transcriber.cli:app"
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"pytest",
|
|
]
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/local_transcriber"]
|