Справочник CLI

Бинарный файл speech — основная точка входа для всех задач обработки речи. Соберите с помощью make build, затем запускайте из .build/release/speech.

transcribe

Транскрибирует аудиофайлы в текст.

speech transcribe <file> [options]
ОпцияПо умолчаниюОписание
<file>Аудиофайл для транскрипции (WAV, M4A, MP3, CAF)
--engineqwen3ASR-движок: qwen3, qwen3-coreml, parakeet, nemotron или omnilingual
--model, -m0.6BВариант модели: 0.6B, 1.7B, или полный ID модели HuggingFace (только qwen3)
--languageПодсказка языка (опционально, игнорируется omnilingual)
--window10[omnilingual] Размер окна CoreML в секундах: 5 или 10
--backendcoreml[omnilingual] Бэкенд: coreml (Neural Engine) или mlx (Metal GPU)
--variant300M[omnilingual mlx] Размер: 300M, 1B, 3B или 7B
--bits4[omnilingual mlx] Биты квантизации: 4 или 8
--streamВключить потоковую транскрипцию с VAD
--max-segment10Максимальная длительность сегмента в секундах (потоковый режим)
--partialВыдавать частичные результаты во время речи (потоковый режим)

Примеры:

# Basic transcription
speech transcribe recording.wav

# Use larger model
speech transcribe recording.wav --model 1.7B

# CoreML encoder (Neural Engine + MLX decoder)
speech transcribe recording.wav --engine qwen3-coreml

# Use Parakeet (CoreML) engine
speech transcribe recording.wav --engine parakeet

# Use Nemotron Streaming (CoreML, English with native punctuation)
speech transcribe recording.wav --engine nemotron                                 # batch
speech transcribe recording.wav --engine nemotron --stream --partial              # streaming

# Omnilingual (CoreML, 1,672 languages)
speech transcribe recording.wav --engine omnilingual                              # 10 s window
speech transcribe recording.wav --engine omnilingual --window 5                     # 5 s window

# Omnilingual (MLX, any length up to 40 s)
speech transcribe recording.wav --engine omnilingual --backend mlx                              # 300M @ 4-bit
speech transcribe recording.wav --engine omnilingual --backend mlx --variant 1B                  # 1B @ 4-bit
speech transcribe recording.wav --engine omnilingual --backend mlx --variant 3B --bits 8         # 3B @ 8-bit
speech transcribe recording.wav --engine omnilingual --backend mlx --variant 7B                  # 7B @ 4-bit

# Streaming with VAD
speech transcribe recording.wav --stream --partial

align

Выравнивание с форсированием на уровне слов — получите точные временные метки для каждого слова.

speech align <file> [options]
ОпцияПо умолчаниюОписание
<file>Аудиофайл
--text, -tТекст для выравнивания (если опущен, сначала транскрибирует)
--model, -m0.6BASR-модель для транскрипции: 0.6B, 1.7B, или полный ID
--aligner-modelID модели выравнивателя с форсированием
--languageПодсказка языка

Примеры:

# Auto-transcribe then align
speech align recording.wav

# Align with known text
speech align recording.wav --text "Can you guarantee that the replacement part will be shipped tomorrow?"

speak

Синтез речи из текста.

speech speak "<text>" [options]
ОпцияПо умолчаниюОписание
<text>Текст для синтеза (опционально при использовании --batch-file)
--engineqwen3TTS-движок: qwen3 или cosyvoice
--output, -ooutput.wavПуть выходного WAV-файла
--languageenglishЯзык. Опустите, чтобы использовать родной диалект спикера, когда задан --speaker.
--streamВключить потоковый синтез
--voice-sampleРеференсное аудио для клонирования голоса (работает с обоими движками qwen3 и cosyvoice)
--verboseПоказать подробную информацию о времени выполнения

Опции Qwen3-TTS

ОпцияПо умолчаниюОписание
--modelbaseВариант модели: base, customVoice или полный ID HF
--speakerГолос спикера (требуется --model customVoice)
--instructИнструкция стиля (модель CustomVoice)
--list-speakersПоказать доступных спикеров и выйти
--temperature0.3Температура сэмплирования
--top-k50Top-k сэмплирование
--max-tokens500Максимум токенов (500 = ~40 с аудио)
--batch-fileФайл с одним текстом на строку для пакетного синтеза
--batch-size4Максимальный размер пакета для параллельной генерации
--first-chunk-frames3Кодек-фреймы в первом потоковом чанке
--chunk-frames25Кодек-фреймы в каждом потоковом чанке

Опции CosyVoice3

ОпцияПо умолчаниюОписание
--speakersОтображение спикеров для многоголосого диалога: s1=alice.wav,s2=bob.wav
--cosy-instructИнструкция стиля (переопределяет дефолт). Управляет стилем голоса для CosyVoice3.
--turn-gap0.2Пауза между репликами диалога в секундах
--crossfade0.0Перекрытие crossfade между репликами в секундах
--model-idID модели HuggingFace

Примеры:

# Basic TTS
speech speak "Hello, world!" --output hello.wav

# Voice cloning (Qwen3-TTS)
speech speak "Hello in your voice" --voice-sample reference.wav -o cloned.wav

# Voice cloning (CosyVoice)
speech speak "Hello in your voice" --engine cosyvoice --voice-sample reference.wav -o cloned.wav

# CosyVoice multilingual
speech speak "Hallo Welt" --engine cosyvoice --language german -o hallo.wav

# Multi-speaker dialogue
speech speak "[S1] Hello there! [S2] Hey, how are you?" \
    --engine cosyvoice --speakers s1=alice.wav,s2=bob.wav -o dialogue.wav

# Inline emotion/style tags
speech speak "(excited) Wow, amazing! (sad) But I have to go..." \
    --engine cosyvoice -o emotion.wav

# Combined: dialogue + emotions + voice cloning
speech speak "[S1] (happy) Great news! [S2] (surprised) Really?" \
    --engine cosyvoice --speakers s1=alice.wav,s2=bob.wav -o combined.wav

# Custom style instruction
speech speak "Hello world" --engine cosyvoice --cosy-instruct "Speak cheerfully" -o cheerful.wav

# Streaming synthesis
speech speak "Long text here..." --stream

# Batch synthesis from file
speech speak --batch-file texts.txt --batch-size 4

kokoro

Лёгкий синтез речи с помощью Kokoro-82M на Neural Engine (CoreML). Неавторегрессивная модель — один прямой проход, задержка ~45 мс.

speech kokoro "<text>" [options]
ОпцияПо умолчаниюОписание
<text>Текст для синтеза
--voiceaf_heartПресет голоса (50 доступных в 10 языках)
--languageenКод языка: en, es, fr, hi, it, ja, pt, zh, ko, de
--output, -okokoro_output.wavПуть выходного WAV-файла
--list-voicesПоказать все доступные голоса и выйти
--model, -mID модели HuggingFace

Примеры:

# Basic Kokoro TTS
speech kokoro "Hello, world!" --voice af_heart -o hello.wav

# French voice
speech kokoro "Bonjour le monde" --voice ff_siwis --language fr -o bonjour.wav

# List all 50 voices
speech kokoro --list-voices

respond

Полнодуплексный диалог речь-в-речь с помощью PersonaPlex 7B.

speech respond [options]
ОпцияПо умолчаниюОписание
--input, -iВходной WAV-файл аудио (24 кГц моно) (обязательно)
--output, -oresponse.wavВыходной WAV-файл ответа
--voiceNATM0Пресет голоса (например NATM0, NATF1, VARF0)
--system-promptassistantПресет: assistant, focused, customer-service, teacher
--system-prompt-textПроизвольный текст system prompt (переопределяет пресет)
--max-steps200Макс. шагов генерации на 12.5 Гц (~16 с)
--streamВыдавать аудио-чанки во время генерации
--compileВключить скомпилированный трансформер (прогрев + слияние кернелов)
--list-voicesПоказать доступные пресеты голоса
--list-promptsПоказать доступные пресеты system prompt
--transcriptПечатать текст внутреннего монолога модели
--jsonВывод в JSON (транскрипт, задержка, путь к аудио)
--verboseПоказать подробную информацию о времени выполнения

Переопределения сэмплирования

ОпцияПо умолчаниюОписание
--audio-temp0.8Температура сэмплирования аудио
--text-temp0.7Температура сэмплирования текста
--audio-top-k250Top-k кандидатов для аудио
--repetition-penalty1.2Штраф за повторы в аудио (1.0 = отключён)
--text-repetition-penalty1.2Штраф за повторы в тексте (1.0 = отключён)
--repetition-window30Окно штрафа за повторы в фреймах
--silence-early-stop15Фреймов тишины до ранней остановки (0 = отключено)
--entropy-threshold0Порог энтропии текста для ранней остановки (0 = отключено)
--entropy-window10Последовательных шагов с низкой энтропией перед ранней остановкой

Примеры:

# Basic speech-to-speech
speech respond --input question.wav

# Use a female voice with compiled transformer
speech respond -i question.wav --voice NATF1 --compile

# Stream response and show transcript
speech respond -i question.wav --stream --transcript --verbose

vad

Офлайн-детекция голосовой активности с помощью сегментации Pyannote.

speech vad <file> [options]
ОпцияОписание
<file>Аудиофайл для анализа
--model, -mID модели HuggingFace
--onsetПорог начала (начало речи)
--offsetПорог окончания (конец речи)
--min-speechМинимальная длительность речи в секундах
--min-silenceМинимальная длительность тишины в секундах
--jsonВывод в JSON

vad-stream

Потоковая детекция голосовой активности с помощью Silero VAD v5. Обрабатывает аудио чанками по 32 мс.

speech vad-stream <file> [options]
ОпцияОписание
<file>Аудиофайл для анализа
--engineVAD-движок: mlx (по умолчанию) или coreml
--model, -mID модели HuggingFace (выбирается автоматически по движку)
--onsetПорог начала
--offsetПорог окончания
--min-speechМинимальная длительность речи в секундах
--min-silenceМинимальная длительность тишины в секундах
--jsonВывод в JSON

wake

Локальное распознавание ключевых слов с помощью KWS Zipformer (3,49M параметров, CoreML INT8, 26× реального времени, только английский).

speech wake <file> [options]
ОпцияОписание
<file>Аудиофайл для анализа
--keywordsОдно или несколько ключевых слов. Форматы: "hey soniqo", "hey soniqo:0.15:0.5" или "LIGHT UP|▁ L IGHT ▁UP:0.25:2.0" (стиль sherpa-onnx с явными BPE-фрагментами)
--keywords-fileФайл ключевых слов, одна запись на строку
--model, -mID модели HuggingFace. По умолчанию: aufklarer/KWS-Zipformer-3M-CoreML-INT8
--jsonВывод в JSON

diarize

Диаризация спикеров — определите, кто говорил и когда.

speech diarize <file> [options]
ОпцияПо умолчаниюОписание
<file>Аудиофайл для анализа
--enginepyannoteДвижок диаризации: pyannote (сегментация + связывание спикеров) или sortformer (сквозной CoreML)
--target-speakerАудио для регистрации целевого спикера (только pyannote)
--embedding-enginemlxДвижок эмбеддингов спикера: mlx или coreml (только pyannote)
--vad-filterПредварительная фильтрация через Silero VAD (только pyannote)
--rttmВывод в формате RTTM
--jsonВывод в JSON
--score-againstЭталонный RTTM-файл для расчёта DER

Примеры:

# Basic diarization (pyannote, default)
speech diarize meeting.wav

# End-to-end Sortformer (CoreML, Neural Engine)
speech diarize meeting.wav --engine sortformer

# RTTM output for evaluation
speech diarize meeting.wav --rttm

# Target speaker extraction (pyannote only)
speech diarize meeting.wav --target-speaker enrollment.wav

# Score against reference
speech diarize meeting.wav --score-against reference.rttm

embed-speaker

Извлечение вектора эмбеддинга спикера из аудио.

speech embed-speaker <file> [options]
ОпцияОписание
<file>Аудиофайл с голосом спикера
--engineДвижок инференса: mlx (по умолчанию), coreml (WeSpeaker 256-мерные) или camplusplus (CAM++ CoreML 192-мерные)
--jsonВывод в JSON

denoise

Удаление фонового шума с помощью DeepFilterNet3 на Neural Engine.

speech denoise <file> [options]
ОпцияПо умолчаниюОписание
<file>Входной аудиофайл
--output, -oinput_clean.wavПуть выходного файла
--model, -mID модели HuggingFace

Пример:

speech denoise noisy-recording.wav -o clean.wav

compose

Generate 30 s of music from a text prompt using MAGNeT on MLX.

speech compose <prompt> [options]
OptionDefaultDescription
<prompt>Text prompt describing the music to generate (e.g. "happy rock")
--output, -omagnet.wavOutput WAV path (32 kHz mono)
--variantsmall-int4Model variant: small-int4, small-int8, medium-int4, or medium-int8. Resolves to aufklarer/MAGNeT-{Small,Medium}-30secs-MLX-{4,8}bit.
--temperature3.0Sampling temperature, annealed linearly per stage.
--top-p0.9Nucleus sampling threshold.
--cfg-max10.0Max classifier-free guidance coefficient.
--cfg-min1.0Min CFG coefficient (annealed alongside the mask schedule).
--steps20,10,10,10Comma-separated decoding iterations per codebook (4 values).
--seedRandom seed for reproducible output.

Examples:

# Default: small-int4, ~10 s wall on M-series for a 30 s clip
speech compose "happy rock" -o happy_rock.wav

# Larger model — better prompt following, slower
speech compose "lo-fi hip hop with mellow piano" --variant medium-int4 -o lofi.wav

# Reproducible
speech compose "energetic EDM with synth lead" --seed 42 -o edm.wav