CLI संदर्भ

audio बाइनरी सभी स्पीच प्रोसेसिंग कार्यों के लिए मुख्य एंट्री पॉइंट है। make build से बिल्ड करें, फिर .build/release/audio से चलाएँ।

transcribe

ऑडियो फ़ाइलों को टेक्स्ट में ट्रांसक्राइब करें।

audio transcribe <file> [options]
विकल्पडिफ़ॉल्टविवरण
<file>ट्रांसक्राइब करने के लिए ऑडियो फ़ाइल (WAV, M4A, MP3, CAF)
--engineqwen3ASR इंजन: qwen3, qwen3-coreml, parakeet, या omnilingual
--model, -m0.6Bमॉडल वैरिएंट: 0.6B, 1.7B, या पूर्ण HuggingFace मॉडल ID (केवल 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
--streamVAD के साथ स्ट्रीमिंग ट्रांसक्रिप्शन सक्षम करें
--max-segment10अधिकतम सेगमेंट अवधि सेकंड में (स्ट्रीमिंग)
--partialस्पीच के दौरान पार्शियल परिणाम जारी करें (स्ट्रीमिंग)

उदाहरण:

# बेसिक ट्रांसक्रिप्शन
audio transcribe recording.wav

# बड़े मॉडल का उपयोग करें
audio transcribe recording.wav --model 1.7B

# CoreML एनकोडर (Neural Engine + MLX डिकोडर)
audio transcribe recording.wav --engine qwen3-coreml

# Parakeet (CoreML) इंजन का उपयोग करें
audio transcribe recording.wav --engine parakeet

# Omnilingual (CoreML, 1,672 भाषाएँ)
audio transcribe recording.wav --engine omnilingual                              # 10 s विंडो
audio transcribe recording.wav --engine omnilingual --window 5                     # 5 s विंडो

# Omnilingual (MLX, 40 s तक कोई भी लंबाई)
audio transcribe recording.wav --engine omnilingual --backend mlx                              # 300M @ 4-bit
audio transcribe recording.wav --engine omnilingual --backend mlx --variant 1B                  # 1B @ 4-bit
audio transcribe recording.wav --engine omnilingual --backend mlx --variant 3B --bits 8         # 3B @ 8-bit
audio transcribe recording.wav --engine omnilingual --backend mlx --variant 7B                  # 7B @ 4-bit

# VAD के साथ स्ट्रीमिंग
audio transcribe recording.wav --stream --partial

align

शब्द-स्तरीय फ़ोर्स्ड अलाइनमेंट — हर शब्द के लिए सटीक टाइमस्टैम्प प्राप्त करें।

audio align <file> [options]
विकल्पडिफ़ॉल्टविवरण
<file>ऑडियो फ़ाइल
--text, -tअलाइन करने के लिए टेक्स्ट (अगर नहीं दिया, तो पहले ट्रांसक्राइब करता है)
--model, -m0.6Bट्रांसक्रिप्शन के लिए ASR मॉडल: 0.6B, 1.7B, या पूर्ण ID
--aligner-modelफ़ोर्स्ड अलाइनर मॉडल ID
--languageभाषा संकेत

उदाहरण:

# ऑटो-ट्रांसक्राइब फिर अलाइन करें
audio align recording.wav

# ज्ञात टेक्स्ट के साथ अलाइन करें
audio align recording.wav --text "Can you guarantee that the replacement part will be shipped tomorrow?"

speak

टेक्स्ट-टू-स्पीच संश्लेषण।

audio 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, या पूर्ण HF मॉडल ID
--speakerस्पीकर वॉयस (--model customVoice आवश्यक)
--instructस्टाइल निर्देश (CustomVoice मॉडल)
--list-speakersउपलब्ध स्पीकर सूचीबद्ध करें और बाहर निकलें
--temperature0.3सैंपलिंग तापमान
--top-k50Top-k सैंपलिंग
--max-tokens500अधिकतम टोकन (500 = ~40s ऑडियो)
--batch-fileबैच संश्लेषण के लिए प्रति पंक्ति एक टेक्स्ट वाली फ़ाइल
--batch-size4समानांतर जनरेशन के लिए अधिकतम बैच आकार
--first-chunk-frames3पहले स्ट्रीम किए गए चंक में codec फ़्रेम
--chunk-frames25प्रति स्ट्रीम किए गए चंक codec फ़्रेम

CosyVoice3 विकल्प

विकल्पडिफ़ॉल्टविवरण
--speakersमल्टी-स्पीकर डायलॉग के लिए स्पीकर मैपिंग: s1=alice.wav,s2=bob.wav
--cosy-instructस्टाइल निर्देश (डिफ़ॉल्ट को ओवरराइड करता है)। CosyVoice3 के लिए वॉयस स्टाइल को नियंत्रित करता है।
--turn-gap0.2डायलॉग टर्न के बीच मौन अंतराल सेकंड में
--crossfade0.0टर्न के बीच क्रॉसफ़ेड ओवरलैप सेकंड में
--model-idHuggingFace मॉडल ID

उदाहरण:

# बेसिक TTS
audio speak "Hello, world!" --output hello.wav

# वॉयस क्लोनिंग (Qwen3-TTS)
audio speak "Hello in your voice" --voice-sample reference.wav -o cloned.wav

# वॉयस क्लोनिंग (CosyVoice)
audio speak "Hello in your voice" --engine cosyvoice --voice-sample reference.wav -o cloned.wav

# CosyVoice बहुभाषी
audio speak "Hallo Welt" --engine cosyvoice --language german -o hallo.wav

# मल्टी-स्पीकर डायलॉग
audio speak "[S1] Hello there! [S2] Hey, how are you?" \
    --engine cosyvoice --speakers s1=alice.wav,s2=bob.wav -o dialogue.wav

# इनलाइन इमोशन/स्टाइल टैग
audio speak "(excited) Wow, amazing! (sad) But I have to go..." \
    --engine cosyvoice -o emotion.wav

# संयुक्त: डायलॉग + इमोशन + वॉयस क्लोनिंग
audio speak "[S1] (happy) Great news! [S2] (surprised) Really?" \
    --engine cosyvoice --speakers s1=alice.wav,s2=bob.wav -o combined.wav

# कस्टम स्टाइल निर्देश
audio speak "Hello world" --engine cosyvoice --cosy-instruct "Speak cheerfully" -o cheerful.wav

# स्ट्रीमिंग संश्लेषण
audio speak "Long text here..." --stream

# फ़ाइल से बैच संश्लेषण
audio speak --batch-file texts.txt --batch-size 4

kokoro

Neural Engine (CoreML) पर Kokoro-82M का उपयोग करके हल्का टेक्स्ट-टू-स्पीच। नॉन-ऑटोरिग्रेसिव — एकल फ़ॉरवर्ड पास, ~45ms लेटेंसी।

audio kokoro "<text>" [options]
विकल्पडिफ़ॉल्टविवरण
<text>संश्लेषण करने के लिए टेक्स्ट
--voiceaf_heartवॉयस प्रीसेट (10 भाषाओं में 50 उपलब्ध)
--languageenभाषा कोड: en, es, fr, hi, it, ja, pt, zh, ko, de
--output, -okokoro_output.wavआउटपुट WAV फ़ाइल पथ
--list-voicesसभी उपलब्ध वॉयस सूचीबद्ध करें और बाहर निकलें
--model, -mHuggingFace मॉडल ID

उदाहरण:

# बेसिक Kokoro TTS
audio kokoro "Hello, world!" --voice af_heart -o hello.wav

# फ़्रेंच वॉयस
audio kokoro "Bonjour le monde" --voice ff_siwis --language fr -o bonjour.wav

# सभी 50 वॉयस सूचीबद्ध करें
audio kokoro --list-voices

respond

PersonaPlex 7B का उपयोग करके फुल-डुप्लेक्स स्पीच-टू-स्पीच डायलॉग।

audio respond [options]
विकल्पडिफ़ॉल्टविवरण
--input, -iइनपुट ऑडियो WAV फ़ाइल (24kHz मोनो) (आवश्यक)
--output, -oresponse.wavआउटपुट रिस्पॉन्स WAV फ़ाइल
--voiceNATM0वॉयस प्रीसेट (जैसे NATM0, NATF1, VARF0)
--system-promptassistantप्रीसेट: assistant, focused, customer-service, teacher
--system-prompt-textकस्टम सिस्टम प्रॉम्प्ट टेक्स्ट (प्रीसेट को ओवरराइड करता है)
--max-steps20012.5Hz पर अधिकतम जनरेशन स्टेप्स (~16s)
--streamजनरेशन के दौरान ऑडियो चंक्स जारी करें
--compileसंकलित ट्रांसफ़ॉर्मर सक्षम करें (warmup + kernel fusion)
--list-voicesउपलब्ध वॉयस प्रीसेट सूचीबद्ध करें
--list-promptsउपलब्ध सिस्टम प्रॉम्प्ट प्रीसेट सूचीबद्ध करें
--transcriptमॉडल का इनर मोनोलॉग टेक्स्ट प्रिंट करें
--jsonJSON के रूप में आउटपुट (ट्रांसक्रिप्ट, लेटेंसी, ऑडियो पथ)
--verboseविस्तृत समय जानकारी दिखाएँ

सैंपलिंग ओवरराइड्स

विकल्पडिफ़ॉल्टविवरण
--audio-temp0.8ऑडियो सैंपलिंग तापमान
--text-temp0.7टेक्स्ट सैंपलिंग तापमान
--audio-top-k250ऑडियो top-k उम्मीदवार
--repetition-penalty1.2ऑडियो पुनरावृत्ति दंड (1.0 = अक्षम)
--text-repetition-penalty1.2टेक्स्ट पुनरावृत्ति दंड (1.0 = अक्षम)
--repetition-window30फ़्रेमों में पुनरावृत्ति दंड विंडो
--silence-early-stop15जल्दी रुकने से पहले मौन फ़्रेम (0 = अक्षम)
--entropy-threshold0जल्दी रुकने के लिए टेक्स्ट एंट्रॉपी थ्रेशोल्ड (0 = अक्षम)
--entropy-window10जल्दी रुकने से पहले लगातार लो-एंट्रॉपी स्टेप्स

उदाहरण:

# बेसिक स्पीच-टू-स्पीच
audio respond --input question.wav

# संकलित ट्रांसफ़ॉर्मर के साथ महिला आवाज़ का उपयोग करें
audio respond -i question.wav --voice NATF1 --compile

# रिस्पॉन्स स्ट्रीम करें और ट्रांसक्रिप्ट दिखाएँ
audio respond -i question.wav --stream --transcript --verbose

vad

Pyannote सेगमेंटेशन का उपयोग करके ऑफ़लाइन वॉयस एक्टिविटी डिटेक्शन।

audio vad <file> [options]
विकल्पविवरण
<file>विश्लेषण करने के लिए ऑडियो फ़ाइल
--model, -mHuggingFace मॉडल ID
--onsetOnset थ्रेशोल्ड (स्पीच प्रारंभ)
--offsetOffset थ्रेशोल्ड (स्पीच समाप्ति)
--min-speechन्यूनतम स्पीच अवधि सेकंड में
--min-silenceन्यूनतम मौन अवधि सेकंड में
--jsonJSON के रूप में आउटपुट

vad-stream

Silero VAD v5 का उपयोग करके स्ट्रीमिंग वॉयस एक्टिविटी डिटेक्शन। ऑडियो को 32ms चंक्स में प्रोसेस करता है।

audio vad-stream <file> [options]
विकल्पविवरण
<file>विश्लेषण करने के लिए ऑडियो फ़ाइल
--engineVAD इंजन: mlx (डिफ़ॉल्ट) या coreml
--model, -mHuggingFace मॉडल ID (इंजन द्वारा स्वतः चयनित)
--onsetOnset थ्रेशोल्ड
--offsetOffset थ्रेशोल्ड
--min-speechन्यूनतम स्पीच अवधि सेकंड में
--min-silenceन्यूनतम मौन अवधि सेकंड में
--jsonJSON के रूप में आउटपुट

diarize

स्पीकर डायराइज़ेशन — पहचानें कि कौन कब बोला।

audio diarize <file> [options]
विकल्पडिफ़ॉल्टविवरण
<file>विश्लेषण करने के लिए ऑडियो फ़ाइल
--enginepyannoteडायराइज़ेशन इंजन: pyannote (सेगमेंटेशन + स्पीकर चेनिंग) या sortformer (एंड-टू-एंड CoreML)
--target-speakerलक्ष्य स्पीकर निष्कर्षण के लिए एनरोलमेंट ऑडियो (केवल pyannote)
--embedding-enginemlxस्पीकर एम्बेडिंग इंजन: mlx या coreml (केवल pyannote)
--vad-filterSilero VAD के साथ प्री-फ़िल्टर (केवल pyannote)
--rttmRTTM फ़ॉर्मेट में आउटपुट
--jsonJSON के रूप में आउटपुट
--score-againstDER गणना के लिए संदर्भ RTTM फ़ाइल

उदाहरण:

# बेसिक डायराइज़ेशन (pyannote, डिफ़ॉल्ट)
audio diarize meeting.wav

# एंड-टू-एंड Sortformer (CoreML, Neural Engine)
audio diarize meeting.wav --engine sortformer

# मूल्यांकन के लिए RTTM आउटपुट
audio diarize meeting.wav --rttm

# लक्ष्य स्पीकर निष्कर्षण (केवल pyannote)
audio diarize meeting.wav --target-speaker enrollment.wav

# संदर्भ के विरुद्ध स्कोर
audio diarize meeting.wav --score-against reference.rttm

embed-speaker

ऑडियो से एक स्पीकर एम्बेडिंग वेक्टर निकालें।

audio embed-speaker <file> [options]
विकल्पविवरण
<file>स्पीकर वॉयस युक्त ऑडियो फ़ाइल
--engineइन्फ़रेंस इंजन: mlx (डिफ़ॉल्ट), coreml (WeSpeaker 256-dim), या camplusplus (CAM++ CoreML 192-dim)
--jsonJSON के रूप में आउटपुट

denoise

Neural Engine पर DeepFilterNet3 का उपयोग करके बैकग्राउंड नॉइज़ हटाएँ।

audio denoise <file> [options]
विकल्पडिफ़ॉल्टविवरण
<file>इनपुट ऑडियो फ़ाइल
--output, -oinput_clean.wavआउटपुट फ़ाइल पथ
--model, -mHuggingFace मॉडल ID

उदाहरण:

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