CLI Referansı

speech ikili dosyası, tüm konuşma işleme görevleri için ana giriş noktasıdır. make build ile derleyin, ardından .build/release/speech üzerinden çalıştırın.

transcribe

Ses dosyalarını metne dönüştürür.

speech transcribe <file> [options]
SeçenekVarsayılanAçıklama
<file>Metne dönüştürülecek ses dosyası (WAV, M4A, MP3, CAF)
--engineqwen3ASR motoru: qwen3, qwen3-coreml, parakeet, nemotron veya omnilingual
--model, -m0.6BModel varyantı: 0.6B, 1.7B veya tam HuggingFace model kimliği (yalnızca qwen3)
--languageDil ipucu (isteğe bağlı, omnilingual tarafından yok sayılır)
--window10[omnilingual] Saniye cinsinden CoreML pencere boyutu: 5 veya 10
--backendcoreml[omnilingual] Arka uç: coreml (Neural Engine) veya mlx (Metal GPU)
--variant300M[omnilingual mlx] Boyut: 300M, 1B, 3B veya 7B
--bits4[omnilingual mlx] Nicemleme biti: 4 veya 8
--streamVAD ile akışlı transkripsiyonu etkinleştir
--max-segment10Maksimum segment süresi (saniye, streaming)
--partialKonuşma sırasında kısmi sonuçları yay (streaming)

Örnekler:

# Temel transkripsiyon
speech transcribe recording.wav

# Daha büyük modeli kullan
speech transcribe recording.wav --model 1.7B

# CoreML kodlayıcı (Neural Engine + MLX kod çözücü)
speech transcribe recording.wav --engine qwen3-coreml

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

# Nemotron Streaming'i kullan (CoreML, yerel noktalama işaretli İngilizce)
speech transcribe recording.wav --engine nemotron                                 # toplu
speech transcribe recording.wav --engine nemotron --stream --partial              # streaming

# Omnilingual (CoreML, 1.672 dil)
speech transcribe recording.wav --engine omnilingual                              # 10 sn pencere
speech transcribe recording.wav --engine omnilingual --window 5                     # 5 sn pencere

# Omnilingual (MLX, 40 sn'ye kadar herhangi bir uzunluk)
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

# VAD ile streaming
speech transcribe recording.wav --stream --partial

align

Sözcük düzeyinde zorunlu hizalama — her sözcük için kesin zaman damgaları elde edin.

speech align <file> [options]
SeçenekVarsayılanAçıklama
<file>Ses dosyası
--text, -tHizalanacak metin (atlanırsa önce transkribe edilir)
--model, -m0.6BTranskripsiyon için ASR modeli: 0.6B, 1.7B veya tam kimlik
--aligner-modelZorunlu hizalayıcı model kimliği
--languageDil ipucu

Örnekler:

# Otomatik transkribe edip sonra hizala
speech align recording.wav

# Bilinen metinle hizala
speech align recording.wav --text "Can you guarantee that the replacement part will be shipped tomorrow?"

speak

Metinden konuşma sentezi.

speech speak "<text>" [options]
SeçenekVarsayılanAçıklama
<text>Sentezlenecek metin (--batch-file kullanılıyorsa isteğe bağlı)
--engineqwen3TTS motoru: qwen3, cosyvoice, voxcpm2 veya magpie
--output, -ooutput.wavÇıktı WAV dosya yolu
--languageenglishDil. --speaker ayarlandığında konuşmacının yerel lehçesini kullanmak için boş bırakın.
--streamAkışlı sentezi etkinleştir
--voice-sampleSes klonlama için referans ses (hem qwen3 hem de cosyvoice motorlarıyla çalışır)
--verboseAyrıntılı zamanlama bilgisi göster

Qwen3-TTS Seçenekleri

SeçenekVarsayılanAçıklama
--modelbaseModel varyantı: base, customVoice veya tam HF model kimliği
--speakerKonuşmacı sesi (--model customVoice gerektirir)
--instructStil yönergesi (CustomVoice modeli)
--list-speakersMevcut konuşmacıları listele ve çık
--temperature0.3Örnekleme sıcaklığı
--top-k50Top-k örnekleme
--max-tokens500Maksimum token (500 = ~40s ses)
--batch-fileToplu sentez için satır başına bir metin içeren dosya
--batch-size4Paralel üretim için maksimum toplu boyut
--first-chunk-frames3İlk akış parçasındaki codec çerçeve sayısı
--chunk-frames25Akış parçası başına codec çerçeve sayısı

CosyVoice3 Seçenekleri

SeçenekVarsayılanAçıklama
--speakersÇok konuşmacılı diyalog için konuşmacı eşlemesi: s1=alice.wav,s2=bob.wav
--cosy-instructStil yönergesi (varsayılanı geçersiz kılar). CosyVoice3 için ses stilini denetler.
--turn-gap0.2Diyalog sıraları arasındaki sessizlik boşluğu (saniye)
--crossfade0.0Sıralar arasındaki crossfade örtüşmesi (saniye)
--model-idHuggingFace model kimliği

VoxCPM2 Seçenekleri

SeçenekVarsayılanAçıklama
--voxcpm2-variantbf16Nicemleme varyantı: bf16, int8 veya int4. aufklarer/VoxCPM2-MLX-<variant>'a karşılık gelir.
--voxcpm2-instructDoğal dilde ses açıklaması (ses tasarımı), örn. "genç bir kadın, sıcak ve nazik".
--voxcpm2-ref-audioKlonlama için referans ses dosyası (16 kHz mono, dahili olarak yeniden örneklenir).
--voxcpm2-prompt-audio / --voxcpm2-prompt-text"Nihai klonlama" çifti — prozodi koruyan klonlama için referans klip + transkripti.
--voxcpm2-cfg-value2.0Diffusion örnekleyici için classifier-free guidance ölçeği.
--voxcpm2-timesteps10Üretilen ses yaması başına Euler çözücü adımı.
--voxcpm2-max-tokens2000Zorunlu durdurmadan önceki maksimum yama sayısı.
--voxcpm2-min-tokens2Durdurma başlığının ateşlemesine izin verilmeden önceki minimum yama sayısı.
--seedSentezden önce MLX RNG'ı tohumla (çalıştırmalar arasında deterministik).

Magpie Seçenekleri

NVIDIA Magpie-TTS Multilingual 357M, 9 dilde 5 önceden hazırlanmış konuşmacı. Arka ucu --engine magpie (MLX, varsayılan) veya --engine magpie-coreml (büyük modeller için CoreML, LocalTransformer + ses embedding'lerini MLX yönetir) ile seçin. Dile özgü tam G2P dökümü için Magpie kılavuzuna bakın. Ses klonlama desteklenmez: --voice-sample, --speaker ve --instruct, --magpie-speaker'ı işaret eden yardımcı bir hatayla reddedilir.

SeçenekVarsayılanAçıklama
--magpie-variantint4Yalnızca MLX. Nicemleme: int4 (247 MB) veya int8 (411 MB). aufklarer/Magpie-TTS-Multilingual-357M-MLX-<variant>'a karşılık gelir. CoreML motoru INT8 CoreML paketini kullanır ve bu bayrağı yok sayar.
--magpie-speakersofiaÖnceden hazırlanmış konuşmacı: sofia, aria, jason, leo veya john. Kimlik 9 dilin ve her iki arka ucun tamamında tutarlıdır.
--magpie-temperature0.6Örnekleme sıcaklığı (0 = greedy). Japonca için 0.6 kullanın — greedy ilk ifadede takılır.
--magpie-top-k80Örnekleme için top-k filtresi.
--magpie-max-frames500Codec çerçeve sayısı için sabit üst sınır (~23 sn).
--magpie-min-frames4EOS'a izin verilmeden önceki minimum çerçeve sayısı.
--magpie-prephonemizedGirdiyi IPA / fonem akışı olarak ele al; dile özgü G2P'yi atla.
--list-speakers5 önceden hazırlanmış konuşmacıyı yazdır ve çık.

magpie-coreml uyarıları: Birlikte gelen NanoCodec, sabit 64 çerçevelik bir pencerede izlenir, bu nedenle --stream reddedilir. --language ja, stderr notuyla otomatik olarak MLX arka ucuna yönlendirilir (CoreML paketi henüz JA tokenizer kaynaklarını içermiyor). CoreML motoru, LocalTransformer'ı çalıştırmak ve ses embedding'lerini ortalamak için ilk sentezde MLX paketini tembelce yükler; saf CoreML dağıtımı bir takip öğesi olarak izlenmektedir.

Örnekler:

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

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

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

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

# Çok konuşmacılı diyalog
speech speak "[S1] Hello there! [S2] Hey, how are you?" \
    --engine cosyvoice --speakers s1=alice.wav,s2=bob.wav -o dialogue.wav

# Satır içi duygu/stil etiketleri
speech speak "(excited) Wow, amazing! (sad) But I have to go..." \
    --engine cosyvoice -o emotion.wav

# Birleşik: diyalog + duygular + ses klonlama
speech speak "[S1] (happy) Great news! [S2] (surprised) Really?" \
    --engine cosyvoice --speakers s1=alice.wav,s2=bob.wav -o combined.wav

# Özel stil yönergesi
speech speak "Hello world" --engine cosyvoice --cosy-instruct "Speak cheerfully" -o cheerful.wav

# Magpie çok dilli TTS — 9 dilde aynı Aria sesi
speech speak "Hello, world." --engine magpie --magpie-speaker aria \
    --magpie-temperature 0 -o en.wav
speech speak "Hola mundo." --engine magpie --language es --magpie-speaker aria \
    --magpie-temperature 0 -o es.wav
# Japonca stokastik örnekleme gerektirir
speech speak "こんにちは世界、これは音声合成システムです。" \
    --engine magpie --language ja --magpie-temperature 0.6 \
    --magpie-top-k 80 --seed 42 -o ja.wav
speech speak --engine magpie --list-speakers

# Magpie CoreML arka ucu (ANE hızlandırmalı, 8 dil, streaming yok)
speech speak "Hello world." --engine magpie-coreml --magpie-speaker aria -o en.wav
speech speak "Hola mundo." --engine magpie-coreml --language es \
    --magpie-speaker leo -o es.wav
# Japonca otomatik olarak MLX'e yönlendirilir (CoreML paketinde JA tokenizer yok)
speech speak "こんにちは。" --engine magpie-coreml --language ja -o ja.wav

# Akışlı sentez
speech speak "Long text here..." --stream

# Dosyadan toplu sentez
speech speak --batch-file texts.txt --batch-size 4

# VoxCPM2 — 48 kHz stüdyo çıktısı
speech speak "Hello there." --engine voxcpm2 --voxcpm2-variant int8 -o hi.wav

# VoxCPM2 — ses tasarımı
speech speak "Welcome to the show." --engine voxcpm2 \
    --voxcpm2-instruct "A young woman, warm and gentle voice." -o design.wav

# VoxCPM2 — tek referansla klonlama
speech speak "This is a cloned voice." --engine voxcpm2 \
    --voice-sample speaker.wav -o clone.wav

kokoro

Neural Engine (CoreML) üzerinde Kokoro-82M kullanan hafif metinden konuşmaya. Otomatik gerilemesiz — tek ileri geçiş, ~45ms gecikme.

speech kokoro "<text>" [options]
SeçenekVarsayılanAçıklama
<text>Sentezlenecek metin
--voiceaf_heartSes ön ayarı (10 dilde 50 mevcut)
--languageenDil kodu: en, es, fr, hi, it, ja, pt, zh, ko, de
--output, -okokoro_output.wavÇıktı WAV dosya yolu
--list-voicesTüm mevcut sesleri listele ve çık
--model, -mHuggingFace model kimliği

Örnekler:

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

# Fransızca ses
speech kokoro "Bonjour le monde" --voice ff_siwis --language fr -o bonjour.wav

# 50 sesin tümünü listele
speech kokoro --list-voices

respond

PersonaPlex 7B kullanarak tam çift yönlü konuşmadan konuşmaya diyalog.

speech respond [options]
SeçenekVarsayılanAçıklama
--input, -iGiriş ses WAV dosyası (24kHz mono) (zorunlu)
--output, -oresponse.wavÇıktı yanıt WAV dosyası
--voiceNATM0Ses ön ayarı (örn. NATM0, NATF1, VARF0)
--system-promptassistantÖn ayar: assistant, focused, customer-service, teacher
--system-prompt-textÖzel sistem prompt metni (ön ayarı geçersiz kılar)
--max-steps20012.5Hz'de maksimum üretim adımı (~16sn)
--streamÜretim sırasında ses parçalarını yay
--compileDerlenmiş transformer'ı etkinleştir (ısınma + çekirdek füzyonu)
--list-voicesMevcut ses ön ayarlarını listele
--list-promptsMevcut sistem prompt ön ayarlarını listele
--transcriptModelin iç monolog metnini yazdır
--jsonJSON olarak çıktı ver (transkript, gecikme, ses yolu)
--verboseAyrıntılı zamanlama bilgisi göster

Örnekleme Geçersiz Kılmaları

SeçenekVarsayılanAçıklama
--audio-temp0.8Ses örnekleme sıcaklığı
--text-temp0.7Metin örnekleme sıcaklığı
--audio-top-k250Ses top-k aday sayısı
--repetition-penalty1.2Ses tekrar cezası (1.0 = devre dışı)
--text-repetition-penalty1.2Metin tekrar cezası (1.0 = devre dışı)
--repetition-window30Çerçeve cinsinden tekrar cezası penceresi
--silence-early-stop15Erken durdurmadan önceki sessizlik çerçeve sayısı (0 = devre dışı)
--entropy-threshold0Erken durdurma için metin entropi eşiği (0 = devre dışı)
--entropy-window10Erken durdurmadan önceki ardışık düşük entropi adımları

Örnekler:

# Temel konuşmadan konuşmaya
speech respond --input question.wav

# Derlenmiş transformer ile kadın sesi kullan
speech respond -i question.wav --voice NATF1 --compile

# Yanıtı stream et ve transkripti göster
speech respond -i question.wav --stream --transcript --verbose

vad

Pyannote segmentasyonu kullanarak çevrimdışı ses etkinliği algılama.

speech vad <file> [options]
SeçenekAçıklama
<file>Analiz edilecek ses dosyası
--model, -mHuggingFace model kimliği
--onsetOnset eşiği (konuşma başlangıcı)
--offsetOffset eşiği (konuşma sonu)
--min-speechSaniye cinsinden minimum konuşma süresi
--min-silenceSaniye cinsinden minimum sessizlik süresi
--jsonJSON olarak çıktı ver

vad-stream

Silero VAD v5 kullanan akışlı ses etkinliği algılama. Konuşmayı 32ms parçalar halinde işler.

speech vad-stream <file> [options]
SeçenekAçıklama
<file>Analiz edilecek ses dosyası
--engineVAD motoru: mlx (varsayılan) veya coreml
--model, -mHuggingFace model kimliği (motora göre otomatik seçilir)
--onsetOnset eşiği
--offsetOffset eşiği
--min-speechSaniye cinsinden minimum konuşma süresi
--min-silenceSaniye cinsinden minimum sessizlik süresi
--jsonJSON olarak çıktı ver

wake

KWS Zipformer (3.49M parametre, CoreML INT8, 26× gerçek zamanlı, yalnızca İngilizce) kullanan cihaz içi uyandırma sözcüğü / anahtar sözcük algılama.

speech wake <file> [options]
SeçenekAçıklama
<file>Analiz edilecek ses dosyası
--keywordsBir veya daha fazla anahtar sözcük. Biçimler: "hey soniqo" (greedy BPE), "hey soniqo:0.15:0.5" (eşik/boost ile) veya "LIGHT UP|▁ L IGHT ▁UP:0.25:2.0" (sherpa-onnx tarzı açık BPE parçaları)
--keywords-fileAnahtar sözcük dosyası, satır başına bir giriş (--keywords ile aynı sözdizimi); yorumlar için #
--model, -mHuggingFace model kimliği. Varsayılan: aufklarer/KWS-Zipformer-3M-CoreML-INT8
--jsonJSON olarak çıktı ver
# Düz ifade, ayarlanmış varsayılanlar
speech wake recording.wav --keywords "hey soniqo"

# Greedy tokenizer'ın yanlış anladığı ifadeler için açık BPE parçaları
speech wake recording.wav --keywords "LIGHT UP|▁ L IGHT ▁UP:0.25:2.0"

# Birden fazla ifade + JSON çıktı
speech wake recording.wav \
  --keywords "lovely child|▁LOVE LY ▁CHI L D:0.25:2.0" \
             "for ever|▁FOR E VER:0.25:2.0" \
  --json

diarize

Konuşmacı ayrıştırma — kimin ne zaman konuştuğunu belirleyin.

speech diarize <file> [options]
SeçenekVarsayılanAçıklama
<file>Analiz edilecek ses dosyası
--enginepyannoteAyrıştırma motoru: pyannote (segmentasyon + konuşmacı zincirleme) veya sortformer (uçtan uca CoreML)
--target-speakerHedef konuşmacı çıkarımı için kayıt sesi (yalnızca pyannote)
--embedding-enginemlxKonuşmacı embedding motoru: mlx veya coreml (yalnızca pyannote)
--vad-filterSilero VAD ile ön filtre (yalnızca pyannote)
--rttmRTTM biçiminde çıktı
--jsonJSON olarak çıktı ver
--score-againstDER hesaplamak için referans RTTM dosyası

Örnekler:

# Temel ayrıştırma (pyannote, varsayılan)
speech diarize meeting.wav

# Uçtan uca Sortformer (CoreML, Neural Engine)
speech diarize meeting.wav --engine sortformer

# Değerlendirme için RTTM çıktısı
speech diarize meeting.wav --rttm

# Hedef konuşmacı çıkarımı (yalnızca pyannote)
speech diarize meeting.wav --target-speaker enrollment.wav

# Referansa göre puanla
speech diarize meeting.wav --score-against reference.rttm

embed-speaker

Sesten bir konuşmacı embedding vektörü çıkarın.

speech embed-speaker <file> [options]
SeçenekAçıklama
<file>Konuşmacı sesini içeren ses dosyası
--engineÇıkarım motoru: mlx (varsayılan), coreml (WeSpeaker 256 boyut) veya camplusplus (CAM++ CoreML 192 boyut)
--jsonJSON olarak çıktı ver

denoise

Neural Engine üzerinde DeepFilterNet3 kullanarak arka plan gürültüsünü kaldırır.

speech denoise <file> [options]
SeçenekVarsayılanAçıklama
<file>Giriş ses dosyası
--output, -oinput_clean.wavÇıktı dosya yolu
--model, -mHuggingFace model kimliği

Örnek:

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

compose

MLX üzerinde MAGNeT kullanarak bir metin prompt'undan 30 sn müzik üretin.

speech compose <prompt> [options]
SeçenekVarsayılanAçıklama
<prompt>Üretilecek müziği tanımlayan metin prompt'u (örn. "happy rock")
--output, -omagnet.wavÇıktı WAV yolu (32 kHz mono)
--variantsmall-int4Model varyantı: small-int4, small-int8, medium-int4 veya medium-int8. aufklarer/MAGNeT-{Small,Medium}-30secs-MLX-{4,8}bit'e karşılık gelir.
--temperature3.0Örnekleme sıcaklığı, aşama başına doğrusal olarak tavlanır.
--top-p0.9Nucleus örnekleme eşiği.
--cfg-max10.0Maksimum classifier-free guidance katsayısı.
--cfg-min1.0Minimum CFG katsayısı (mask çizelgesiyle birlikte tavlanır).
--steps20,10,10,10Codebook başına virgülle ayrılmış kod çözme yinelemesi (4 değer).
--seedYeniden üretilebilir çıktı için rastgele tohum.

Örnekler:

# Varsayılan: small-int4, 30 sn klip için M serisi üzerinde ~10 sn duvar
speech compose "happy rock" -o happy_rock.wav

# Daha büyük model — prompt'a daha iyi uyum, daha yavaş
speech compose "lo-fi hip hop with mellow piano" --variant medium-int4 -o lofi.wav

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