Преминете към основното съдържание

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 headerhound parse
4Канали1 или 2
5Sample rate8,000 - 48,000 Hz
6Продължителност≤ 300 секунди (5 мин)
7Decode на samplesf32
8Stereo 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:

АспектGUICLI
Targetstderr + файлstderr only
Filterinfoerror
Timestampmillisecondsбез 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:

  1. main() проверява args_os().count() > 1
  2. Ако има аргументи: AttachConsole(ATTACH_PARENT_PROCESS) -- преоткрива конзолата на parent процеса
  3. Това позволява --help, --version и подкомандите да извеждат текст нормално