CLI режим
Модулът cli/ предоставя command-line интерфейс за headless операции. CLI режимът се активира при подаване на подкоманда; без подкоманда стартира GUI.
Подкоманди
dictaro # Стартира GUI
dictaro transcribe <file> # Транскрибира WAV файл
dictaro login # Отваря браузър за логин
dictaro status # Показва акаунт и квота
dictaro --help # Помощ
dictaro --version # Версия
Архитектура
dictaro transcribe
Транскрибира WAV файл и извежда резултата на stdout.
Флагове
| Флаг | Описание | По подразбиране |
|---|---|---|
<file> | Път до WAV файл (задължителен) | -- |
-l, --language | Език на аудиото (ISO 639-1) | auto-detect |
--json | Извеждане в JSON формат | plain text |
--fast | Пропуска LLM пост-обработка | включена ако е в config |
Примери
# Основна транскрипция
dictaro transcribe recording.wav
# С език и JSON изход
dictaro transcribe recording.wav -l bg --json
# Бърза транскрипция (без пост-обработка)
dictaro transcribe recording.wav --fast
JSON изход
{
"text": "Транскрибиран текст тук.",
"language": "bg",
"duration": 12.5
}
Pipeline
WAV валидация (validate.rs)
Валидационен pipeline с fail-fast стратегия:
| Стъпка | Проверка | Лимит |
|---|---|---|
| 1 | Файлът съществува | -- |
| 2 | Размер на файла | ≤ 50 MB |
| 3 | Валиден WAV header | hound parse |
| 4 | Канали | 1 или 2 |
| 5 | Sample rate | 8,000 - 48,000 Hz |
| 6 | Продължителност | ≤ 300 секунди (5 мин) |
| 7 | Decode на samples | f32 |
| 8 | Stereo to mono | Осредняване на L/R |
Exit codes
| Код | Значение |
|---|---|
| 0 | Успех |
| 1 | Обща грешка (невалиден файл, мрежова грешка) |
| 2 | Квотата е изчерпана |
| 3 | Изисква се автентикация |
dictaro login
Стартира browser auth flow от командния ред.
Използва същия start_browser_auth() като GUI режима, но без cancel бутон (cancel channel не се използва).
dictaro status
Показва информация за акаунта и квотата.
Примерен изход
Account: user@example.com
Tier: pro (via google)
Server: [built-in]
Quota: 450s / 600s (150s remaining)
Status: active
С cooldown
Account: user@example.com
Tier: free (via github)
Server: [built-in]
Quota: 600s / 600s (0s remaining)
Status: cooldown
Cooldown until: 17:00
Когато сървърът е недостъпен
Account: user@example.com
Tier: pro (via azure)
Server: [built-in]
Quota: (unable to fetch -- server may be unreachable)
CLI логване
CLI режимът конфигурира логването различно от GUI:
| Аспект | GUI | CLI |
|---|---|---|
| Target | stderr + файл | stderr only |
| Filter | info | error |
| Timestamp | milliseconds | без timestamp |
| stdout | не се използва | чист изход за pipes |
Това позволява pipe-friendly използване:
dictaro transcribe meeting.wav | pbcopy
dictaro transcribe meeting.wav --json | jq '.text'
Конзола в Release Builds
Windows subsystem е "windows" (скрива конзолата при GUI). За CLI mode:
main()проверяваargs_os().count() > 1- Ако има аргументи:
AttachConsole(ATTACH_PARENT_PROCESS)-- преоткрива конзолата на parent процеса - Това позволява
--help,--versionи подкомандите да извеждат текст нормално