Xem bản tiếng Anh để biết thông tin mới nhất về lệnh gọi công cụ và hiệu năng VoiceChat.
Tham khảo CLI
Tệp thực thi speech là điểm vào chính cho mọi tác vụ xử lý giọng nói. Biên dịch bằng make build, sau đó chạy từ .build/release/speech.
transcribe
Chuyển tệp âm thanh thành văn bản.
speech transcribe <file> [options]
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
<file> | Tệp âm thanh để chuyển thành văn bản (WAV, M4A, MP3, CAF) | |
--engine | qwen3 | Engine ASR: qwen3, qwen3-coreml, parakeet, nemotron, omnilingual, cohere, voxtral, moss, whisper |
--model, -m | 0.6B | Biến thể mô hình: 0.6B, 1.7B hoặc ID mô hình HuggingFace đầy đủ (chỉ qwen3) [whisper]: default, turbo, or full CoreML HuggingFace repo ID.[cohere/voxtral]: INT5 (mặc định), INT8, FP16, mã mô hình Hugging Face hoặc thư mục cục bộ. [moss coreml]: int8 (mặc định) hoặc fp16; [moss mlx]: int5 (mặc định) hoặc int8. Cũng chấp nhận kho Hugging Face tương thích hoặc thư mục cục bộ. |
--max-tokens | CoreML: 512MLX: 5120 | [moss] Số token bản ghi tối đa được tạo. |
--kv-cache | fp16 | [moss mlx] Độ chính xác bộ đệm KV động: fp16 hoặc int8. |
--language | Gợi ý ngôn ngữ (tùy chọn, bị bỏ qua bởi omnilingual) | |
--window | 10 | [omnilingual] Kích thước cửa sổ CoreML tính bằng giây: 5 hoặc 10 |
--backend | coreml | [omnilingual] Backend: coreml (Neural Engine) hoặc mlx (Metal GPU)[moss] CoreML dùng trạng thái cố định 1.024 token; MLX cung cấp ngữ cảnh động 131.072 token. |
--variant | 300M | [omnilingual mlx] Kích thước: 300M, 1B, 3B hoặc 7B |
--bits | 4 | [omnilingual mlx] Số bit lượng tử hóa: 4 hoặc 8 |
--stream | Bật chuyển âm thanh thành văn bản kiểu streaming với VAD | |
--max-segment | 10 | Thời lượng tối đa của một đoạn, tính bằng giây (streaming) |
--partial | Phát kết quả từng phần trong khi đang nói (streaming) |
Ví dụ:
# Chuyển âm thanh thành văn bản cơ bản
speech transcribe recording.wav
# Dùng mô hình lớn hơn
speech transcribe recording.wav --model 1.7B
# Bộ mã hóa CoreML (Neural Engine + bộ giải mã MLX)
speech transcribe recording.wav --engine qwen3-coreml
# Dùng engine Parakeet (CoreML)
speech transcribe recording.wav --engine parakeet
# Dùng Nemotron Streaming (CoreML, tiếng Anh có dấu câu gốc)
speech transcribe recording.wav --engine nemotron # theo lô
speech transcribe recording.wav --engine nemotron --stream --partial # streaming
# Omnilingual (CoreML, 1.672 ngôn ngữ)
speech transcribe recording.wav --engine omnilingual # cửa sổ 10 s
speech transcribe recording.wav --engine omnilingual --window 5 # cửa sổ 5 s
# Omnilingual (MLX, độ dài bất kỳ tới 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
# Cohere Transcribe 2B (MLX, INT5 mặc định)
speech transcribe recording.wav --engine cohere
speech transcribe recording.wav --engine cohere --model int8 --language de
# Voxtral Mini 3B (MLX, INT5 mặc định)
speech transcribe recording.wav --engine voxtral
speech transcribe recording.wav --engine voxtral --model int8 --language fr
# MOSS Transcribe Diarize (CoreML cho bản ghi ngắn)
speech transcribe recording.wav --engine moss
speech transcribe recording.wav --engine moss --model fp16
# MOSS Transcribe Diarize (ngữ cảnh MLX ngoại tuyến 128K; INT5 mặc định)
speech transcribe meeting.wav --engine moss --backend mlx
speech transcribe meeting.wav --engine moss --backend mlx --model int8 --kv-cache int8
# Whisper Large-v3 Turbo (CoreML)
speech transcribe recording.wav --engine whisper
speech transcribe recording.wav --engine whisper --model turbo --language de
# Streaming kèm VAD
speech transcribe recording.wav --stream --partial
align
Căn chỉnh cưỡng bức ở cấp từ — lấy dấu thời gian chính xác cho từng từ.
speech align <file> [options]
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
<file> | Tệp âm thanh | |
--text, -t | Văn bản để căn chỉnh (nếu bỏ qua thì sẽ chuyển âm thanh thành văn bản trước) | |
--model, -m | 0.6B | Mô hình ASR dùng cho chuyển âm thanh: 0.6B, 1.7B hoặc ID đầy đủ |
--aligner-model | ID mô hình aligner cưỡng bức | |
--language | Gợi ý ngôn ngữ |
Ví dụ:
# Tự chuyển âm thanh thành văn bản rồi căn chỉnh
speech align recording.wav
# Căn chỉnh với văn bản đã biết
speech align recording.wav --text "Can you guarantee that the replacement part will be shipped tomorrow?"
speak
Tổng hợp văn bản thành giọng nói.
speech speak "<text>" [options]
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
<text> | Văn bản cần tổng hợp (tùy chọn nếu dùng --batch-file) | |
--engine | qwen3 | Engine TTS: qwen3, cosyvoice, voxcpm2, indextts2, f5, higgs, indic-mio, magpie hoặc magpie-coreml |
--output, -o | output.wav | Đường dẫn tệp WAV đầu ra |
--language | english | Ngôn ngữ. Bỏ qua để dùng phương ngữ gốc của người nói khi đã đặt --speaker. |
--stream | Bật tổng hợp dạng streaming | |
--voice-sample | Âm thanh tham chiếu để nhân bản giọng nói (hoạt động với qwen3, cosyvoice, voxcpm2, f5, higgs và indextts2) | |
--verbose | Hiển thị thông tin thời gian chi tiết |
Tùy chọn Qwen3-TTS
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
--model | base | Biến thể mô hình: base, customVoice hoặc ID mô hình HF đầy đủ |
--speaker | Giọng người nói (yêu cầu --model customVoice) | |
--instruct | Chỉ thị về phong cách (mô hình CustomVoice) | |
--list-speakers | Liệt kê các giọng có sẵn rồi thoát | |
--temperature | 0.3 | Nhiệt độ lấy mẫu |
--top-k | 50 | Lấy mẫu Top-k |
--max-tokens | 500 | Số token tối đa (500 = ~40s âm thanh) |
--batch-file | Tệp chứa mỗi dòng một văn bản để tổng hợp theo lô | |
--batch-size | 4 | Kích thước lô tối đa để tạo song song |
--first-chunk-frames | 3 | Số frame codec trong chunk streaming đầu tiên |
--chunk-frames | 25 | Số frame codec mỗi chunk streaming |
Tùy chọn CosyVoice3
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
--speakers | Ánh xạ người nói cho hội thoại nhiều người: s1=alice.wav,s2=bob.wav | |
--cosy-instruct | Chỉ thị về phong cách (ghi đè mặc định). Điều khiển phong cách giọng nói cho CosyVoice3. | |
--turn-gap | 0.2 | Khoảng lặng giữa các lượt trong hội thoại, tính bằng giây |
--crossfade | 0.0 | Crossfade chồng giữa các lượt, tính bằng giây |
--model-id | ID mô hình HuggingFace |
Tùy chọn VoxCPM2
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
--voxcpm2-variant | bf16 | Biến thể lượng tử hóa: bf16, int8 hoặc int4. Tương ứng với aufklarer/VoxCPM2-MLX-<variant>. |
--voxcpm2-instruct | Mô tả giọng nói bằng ngôn ngữ tự nhiên (thiết kế giọng), ví dụ "một phụ nữ trẻ, ấm áp và dịu dàng". | |
--voxcpm2-ref-audio | Tệp âm thanh tham chiếu để nhân bản (16 kHz mono, sẽ được lấy mẫu lại nội bộ). | |
--voxcpm2-prompt-audio / --voxcpm2-prompt-text | Cặp "nhân bản tối ưu" — đoạn tham chiếu + bản chép của nó để nhân bản giữ nguyên ngữ điệu. | |
--voxcpm2-cfg-value | 2.0 | Tỉ lệ classifier-free guidance cho bộ lấy mẫu diffusion. |
--voxcpm2-timesteps | 10 | Số bước solver Euler trên mỗi patch âm thanh được tạo. |
--voxcpm2-max-tokens | 2000 | Số patch tối đa trước khi buộc dừng. |
--voxcpm2-min-tokens | 2 | Số patch tối thiểu trước khi cho phép đầu dừng kích hoạt. |
--seed | Seed RNG của MLX trước khi tổng hợp (kết quả nhất quán giữa các lần chạy). |
Tùy chọn Magpie
NVIDIA Magpie-TTS Multilingual 357M, 9 ngôn ngữ với 5 giọng dựng sẵn. Chọn backend bằng --engine magpie (MLX, mặc định) hoặc --engine magpie-coreml (CoreML cho mô hình lớn với MLX đảm nhiệm LocalTransformer + embedding âm thanh). Xem hướng dẫn Magpie để biết chi tiết phân tách G2P theo từng ngôn ngữ. Không hỗ trợ nhân bản giọng nói: --voice-sample, --speaker và --instruct sẽ bị từ chối kèm thông báo hữu ích trỏ tới --magpie-speaker.
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
--magpie-variant | int4 | Chỉ dùng cho MLX. Lượng tử hóa: int4 (247 MB) hoặc int8 (411 MB). Tương ứng với aufklarer/Magpie-TTS-Multilingual-357M-MLX-<variant>. Engine CoreML dùng bundle CoreML INT8 và bỏ qua cờ này. |
--magpie-speaker | sofia | Giọng dựng sẵn: sofia, aria, jason, leo hoặc john. Bản sắc giọng đồng nhất trên cả 9 ngôn ngữ và cả hai backend. |
--magpie-temperature | 0.6 | Nhiệt độ lấy mẫu (0 = greedy). Dùng 0.6 cho tiếng Nhật — greedy bị kẹt ở cụm đầu tiên. |
--magpie-top-k | 80 | Bộ lọc top-k cho lấy mẫu. |
--magpie-max-frames | 500 | Giới hạn cứng số frame codec (~23 s). |
--magpie-min-frames | 4 | Số frame tối thiểu trước khi cho phép EOS. |
--magpie-prephonemized | Coi đầu vào là luồng IPA / phoneme; bỏ qua G2P theo từng ngôn ngữ. | |
--list-speakers | In 5 giọng dựng sẵn rồi thoát. |
Lưu ý về magpie-coreml: NanoCodec đi kèm được trace ở cửa sổ cố định 64 frame, vì vậy --stream bị từ chối. --language ja tự định tuyến sang backend MLX kèm ghi chú trên stderr (bundle CoreML chưa kèm tài nguyên tokenizer JA). Engine CoreML tải lười bundle MLX ở lần tổng hợp đầu tiên để vận hành LocalTransformer và trung bình hóa embedding âm thanh; triển khai thuần CoreML đang được theo dõi như một mục tiếp theo.
Tùy chọn IndexTTS2
IndexTTS2 là engine nhân bản giọng nói zero-shot dựa trên bundle MLX mở rộng. Nó yêu cầu --voice-sample và hiện chỉ chạy tổng hợp theo lô.
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
--indextts2-model-id | aufklarer/IndexTTS2-MLX-fp16 | ID mô hình HuggingFace. Mặc định là aufklarer/IndexTTS2-MLX-fp16. |
--indextts2-bundle-dir | Tải bundle mở rộng cục bộ thay vì tải từ Hugging Face. | |
--indextts2-emotion-audio | Âm thanh tham chiếu cảm xúc/phong cách tùy chọn. Mặc định dùng tham chiếu người nói. | |
--indextts2-emotion | Preset tùy chọn hoặc vector cảm xúc 8 giá trị. Preset gồm eager, happy, excited và calm. | |
--indextts2-emotion-weight | 1.0 | Scale --indextts2-emotion; nên giữ vừa phải khi cần giữ danh tính người nói. |
--indextts2-speaking-rate | 1.0 | Hệ số tốc độ nói từ 0.5 đến 1.5; giá trị trên 1.0 nhanh hơn. |
--indextts2-max-pause | Giới hạn tùy chọn cho khoảng nghỉ nội bộ dài có năng lượng thấp, tính bằng giây. | |
--indextts2-s2mel-steps | 15 | Số bước dòng S2Mel (mặc định 15, kiểm chứng bằng tai; 25 khớp hoàn toàn upstream) |
F5-TTS Options
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
--f5-reference-text | Bản chép lời tham chiếu: nội dung văn bản của --voice-sample (bắt buộc) | |
--f5-steps | 16 | Số bước flow matching (mặc định 16; 32 cho độ trung thực tối đa) |
--f5-cfg-strength | 2.0 | Cường độ classifier-free guidance |
--f5-sway | -1.0 | Hệ số lấy mẫu sway |
--f5-speed | 1.0 | Hệ số tốc độ nói |
--f5-seed | 0 | Seed để đầu ra tái lập được |
--f5-target-rms | 0.1 | Mục tiêu chuẩn hóa RMS của tham chiếu |
--f5-model-id | ID mô hình Hugging Face | |
--f5-bundle-dir | Nạp bundle từ thư mục cục bộ này |
Higgs TTS 3 Options
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
--higgs-ref-text | Bản chép lời tham chiếu: nội dung văn bản của --voice-sample (cải thiện nhân bản) | |
--higgs-temperature | 0.8 | Nhiệt độ lấy mẫu (mặc định 0.8) |
--higgs-top-p | Ngưỡng lấy mẫu nucleus (mặc định tắt) | |
--higgs-top-k | Ngưỡng cắt top-k (mặc định tắt) | |
--higgs-max-new-tokens | 2048 | Số khung âm thanh sinh tối đa (25 mỗi giây) |
--higgs-seed | 0 | Seed để đầu ra tái lập được |
--higgs-model-id | ID mô hình Hugging Face | |
--higgs-bundle-dir | Nạp bundle từ thư mục cục bộ này |
Ví dụ:
# TTS cơ bản
speech speak "Hello, world!" --output hello.wav
# Nhân bản giọng (Qwen3-TTS)
speech speak "Hello in your voice" --voice-sample reference.wav -o cloned.wav
# Nhân bản giọng (CosyVoice)
speech speak "Hello in your voice" --engine cosyvoice --voice-sample reference.wav -o cloned.wav
# CosyVoice đa ngôn ngữ
speech speak "Hallo Welt" --engine cosyvoice --language german -o hallo.wav
# Hội thoại nhiều người nói
speech speak "[S1] Hello there! [S2] Hey, how are you?" \
--engine cosyvoice --speakers s1=alice.wav,s2=bob.wav -o dialogue.wav
# Thẻ cảm xúc/phong cách inline
speech speak "(excited) Wow, amazing! (sad) But I have to go..." \
--engine cosyvoice -o emotion.wav
# Kết hợp: hội thoại + cảm xúc + nhân bản giọng
speech speak "[S1] (happy) Great news! [S2] (surprised) Really?" \
--engine cosyvoice --speakers s1=alice.wav,s2=bob.wav -o combined.wav
# Chỉ thị phong cách tùy chỉnh
speech speak "Hello world" --engine cosyvoice --cosy-instruct "Speak cheerfully" -o cheerful.wav
# Magpie TTS đa ngôn ngữ — cùng giọng Aria trên 9 ngôn ngữ
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
# Tiếng Nhật cần lấy mẫu ngẫu nhiên
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
# Backend Magpie CoreML (tăng tốc ANE, 8 ngôn ngữ, không streaming)
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
# Tiếng Nhật tự định tuyến sang MLX (bundle CoreML không có tokenizer JA)
speech speak "こんにちは。" --engine magpie-coreml --language ja -o ja.wav
# Tổng hợp dạng streaming
speech speak "Long text here..." --stream
# Tổng hợp theo lô từ tệp
speech speak --batch-file texts.txt --batch-size 4
# VoxCPM2 — đầu ra studio 48 kHz
speech speak "Hello there." --engine voxcpm2 --voxcpm2-variant int8 -o hi.wav
# VoxCPM2 — thiết kế giọng nói
speech speak "Welcome to the show." --engine voxcpm2 \
--voxcpm2-instruct "A young woman, warm and gentle voice." -o design.wav
# VoxCPM2 — nhân bản từ một tham chiếu
speech speak "This is a cloned voice." --engine voxcpm2 \
--voice-sample speaker.wav -o clone.wav
kokoro
TTS nhẹ dùng Kokoro-82M trên Neural Engine (CoreML). Không tự hồi quy — một lần forward duy nhất, độ trễ ~45ms.
speech kokoro "<text>" [options]
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
<text> | Văn bản cần tổng hợp | |
--voice | af_heart | Giọng dựng sẵn (50 giọng trên 10 ngôn ngữ) |
--language | en | Mã ngôn ngữ: en, es, fr, hi, it, ja, pt, zh, ko, de |
--output, -o | kokoro_output.wav | Đường dẫn tệp WAV đầu ra |
--list-voices | Liệt kê tất cả giọng có sẵn rồi thoát | |
--model, -m | ID mô hình HuggingFace |
Ví dụ:
# Kokoro TTS cơ bản
speech kokoro "Hello, world!" --voice af_heart -o hello.wav
# Giọng Pháp
speech kokoro "Bonjour le monde" --voice ff_siwis --language fr -o bonjour.wav
# Liệt kê toàn bộ 50 giọng
speech kokoro --list-voices
respond
Hội thoại giọng nói tới giọng nói full-duplex bằng PersonaPlex 7B.
speech respond [options]
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
--input, -i | Tệp WAV âm thanh đầu vào (24kHz mono) (bắt buộc) | |
--output, -o | response.wav | Tệp WAV phản hồi đầu ra |
--voice | NATM0 | Giọng dựng sẵn (ví dụ NATM0, NATF1, VARF0) |
--system-prompt | assistant | Preset: assistant, focused, customer-service, teacher |
--system-prompt-text | Văn bản system prompt tùy chỉnh (ghi đè preset) | |
--max-steps | 200 | Số bước tạo tối đa ở 12.5Hz (~16s) |
--stream | Phát các chunk âm thanh trong khi tạo | |
--compile | Bật transformer đã biên dịch (warmup + kernel fusion) | |
--list-voices | Liệt kê các giọng dựng sẵn | |
--list-prompts | Liệt kê các preset system prompt | |
--transcript | In văn bản độc thoại nội tâm của mô hình | |
--json | Xuất dạng JSON (bản chép, độ trễ, đường dẫn âm thanh) | |
--verbose | Hiển thị thông tin thời gian chi tiết |
Ghi đè lấy mẫu
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
--audio-temp | 0.8 | Nhiệt độ lấy mẫu cho âm thanh |
--text-temp | 0.7 | Nhiệt độ lấy mẫu cho văn bản |
--audio-top-k | 250 | Top-k ứng viên cho âm thanh |
--repetition-penalty | 1.2 | Phạt lặp lại cho âm thanh (1.0 = tắt) |
--text-repetition-penalty | 1.2 | Phạt lặp lại cho văn bản (1.0 = tắt) |
--repetition-window | 30 | Cửa sổ phạt lặp lại tính bằng frame |
--silence-early-stop | 15 | Số frame im lặng trước khi dừng sớm (0 = tắt) |
--entropy-threshold | 0 | Ngưỡng entropy văn bản để dừng sớm (0 = tắt) |
--entropy-window | 10 | Số bước entropy thấp liên tiếp trước khi dừng sớm |
Ví dụ:
# Giọng nói tới giọng nói cơ bản
speech respond --input question.wav
# Dùng giọng nữ với transformer đã biên dịch
speech respond -i question.wav --voice NATF1 --compile
# Stream phản hồi và hiển thị bản chép
speech respond -i question.wav --stream --transcript --verbose
voice-chat
Hội thoại full-duplex trực tiếp với Soniqo, dựa trên NVIDIA Nemotron VoiceChat 11B. Bundle INT5 protected-head được tải ở lần dùng đầu tiên; chế độ microphone có Apple AEC, phụ đề RNN-T streaming, số đo dễ hiểu, tinh chỉnh giọng nói thích ứng 8→2→1 bước và đồng bộ lại có giới hạn thay vì âm thầm bắt kịp lâu.
speech voice-chat [options]
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
--model, -m | aufklarer/VoiceChat-11B-Perception-MLX-int5 | Hugging Face model ID hoặc local bundle đầy đủ. |
--revision | main | Hub revision. |
--system-prompt | Ghi đè system prompt. | |
--mcp-config | Cấu hình JSON chung cho MCP tool server. | |
--mcp-server | tất cả server đã cấu hình | Chọn một server; có thể lặp lại. |
--mcp-write-policy | allow | Chính sách ghi: allow tức thì, confirm qua mô hình hoặc deny. |
--mcp-timeout-seconds | 15 | Timeout cho MCP tool call; server startup được phép ít nhất 60 giây. |
--greet | Yêu cầu mô hình chào trước. | |
--no-aec | Tắt Apple acoustic echo cancellation. | |
--no-transcript | Tắt phụ đề người dùng RNN-T trực tiếp. | |
--no-rnnt-turn-taking | Tắt fallback an toàn điều khiển lượt RNN-T của NVIDIA. | |
--prebuffer-frames | 3 | Số output frame 80 ms được buffer trước playback. |
--max-buffered-frames | 8 | Số frame microphone 80 ms tối đa trước khi bỏ audio cũ. |
--max-seconds | Dừng live capture sau số giây này. | |
--input | Đọc file audio thay cho microphone. | |
--output, -o | Ghi WAV full-context 22,05 kHz. | |
--tail-seconds | 6 | Khoảng lặng thêm sau file input. |
--force-turn-at-end | Ép BOS tại cuối file; chỉ dùng cho hồi quy. | |
--plain | Dùng đầu ra nối tiếp thay cho bảng điều khiển cố định được vẽ lại. | |
--debug-timeline | Hiển thị mốc thời gian tương đối của câu nói và lúc phát âm tạo sinh kết thúc, cùng các sự kiện vòng đời công cụ do mô hình giải mã. | |
--terminal-width | 120 | Chiều rộng màn hình terminal. |
--temperature | 0 | Text temperature; 0 là greedy. |
--text-top-p | 1 | Text top-p. |
--guidance | 0.2 | Cường độ guidance EAR-TTS. |
--speech-top-p | 0.95 | EAR-TTS top-p. |
--speech-noise | 0.001 | EAR-TTS sampling noise. |
--speech-iterations | 8 | Số vòng lặp EAR-TTS MaskGIT mỗi frame. |
--realtime-speech-iterations | 2 | Số bước tinh chỉnh giọng nói tạm thời để bảo vệ tốc độ realtime. |
--live-speech-context-seconds | 20 | Lịch sử EAR-TTS gần đây được giữ ở chế độ trực tiếp; 0 giữ toàn bộ lịch sử. |
Ví dụ:
speech voice-chat
speech voice-chat --model /path/to/complete-bundle --prebuffer-frames 3
speech voice-chat --input question.wav --output response.wav
speech voice-chat --mcp-config Examples/VoiceChatMCP/apple-reminders.json
Chế độ file là đường chạy có thể tái lập mà không cần phần cứng audio. --force-turn-at-end chỉ dành cho kiểm thử hồi quy có kiểm soát và không được báo cáo như độ trễ đổi lượt tự nhiên.
Demo Apple Reminders chỉ công khai list_reminders, create_reminder và update_reminder; việc khám phá danh sách nằm trong adapter. Một lần đọc dạng phẳng bao phủ mọi danh sách và cập nhật ánh xạ tên được nói tới ID riêng trong runtime. Dashboard tách thời gian, số token step và token/s của function decoding khỏi audio RTF.
vad
Phát hiện hoạt động giọng nói ngoại tuyến dùng phân đoạn Pyannote.
speech vad <file> [options]
| Tùy chọn | Mô tả |
|---|---|
<file> | Tệp âm thanh cần phân tích |
--model, -m | ID mô hình HuggingFace |
--onset | Ngưỡng onset (bắt đầu giọng nói) |
--offset | Ngưỡng offset (kết thúc giọng nói) |
--min-speech | Thời lượng giọng nói tối thiểu, tính bằng giây |
--min-silence | Thời lượng im lặng tối thiểu, tính bằng giây |
--json | Xuất dạng JSON |
vad-stream
Phát hiện hoạt động giọng nói dạng streaming dùng Silero VAD v5. Xử lý giọng nói theo các chunk 32ms.
speech vad-stream <file> [options]
| Tùy chọn | Mô tả |
|---|---|
<file> | Tệp âm thanh cần phân tích |
--engine | Engine VAD: mlx (mặc định) hoặc coreml |
--model, -m | ID mô hình HuggingFace (tự chọn theo engine) |
--onset | Ngưỡng onset |
--offset | Ngưỡng offset |
--min-speech | Thời lượng giọng nói tối thiểu, tính bằng giây |
--min-silence | Thời lượng im lặng tối thiểu, tính bằng giây |
--json | Xuất dạng JSON |
wake
Phát hiện từ đánh thức / từ khóa trên thiết bị bằng KWS Zipformer (3.49M tham số, CoreML INT8, 26× thời gian thực, chỉ tiếng Anh).
speech wake <file> [options]
| Tùy chọn | Mô tả |
|---|---|
<file> | Tệp âm thanh cần phân tích |
--keywords | Một hoặc nhiều từ khóa. Định dạng: "hey soniqo" (BPE greedy), "hey soniqo:0.15:0.5" (kèm ngưỡng/boost), hoặc "LIGHT UP|▁ L IGHT ▁UP:0.25:2.0" (mảnh BPE rõ ràng kiểu sherpa-onnx) |
--keywords-file | Tệp từ khóa, mỗi mục một dòng (cú pháp giống --keywords); dùng # cho chú thích |
--model, -m | ID mô hình HuggingFace. Mặc định là aufklarer/KWS-Zipformer-3M-CoreML-INT8 |
--json | Xuất dạng JSON |
# Cụm từ đơn giản, mặc định đã tinh chỉnh
speech wake recording.wav --keywords "hey soniqo"
# Mảnh BPE rõ ràng cho các cụm mà tokenizer greedy hiểu sai
speech wake recording.wav --keywords "LIGHT UP|▁ L IGHT ▁UP:0.25:2.0"
# Nhiều cụm từ + đầu ra JSON
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
Phân tách người nói — xác định ai nói lúc nào.
speech diarize <file> [options]
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
<file> | Tệp âm thanh cần phân tích | |
--engine | pyannote | Engine phân tách: pyannote, community1 (CoreML + PLDA/VBx native) hoặc sortformer |
--community1-compute-units | ane | Đơn vị tính toán CoreML cho Community-1: ane, cpu, gpu hoặc all |
--num-speakers | Số người nói chính xác đã biết cho Community-1 | |
--min-speakers | 1 | Số người nói tối thiểu cho Community-1 |
--max-speakers | Số người nói tối đa cho Community-1 | |
--target-speaker | Âm thanh đăng ký để trích xuất người nói mục tiêu (chỉ pyannote) | |
--embedding-engine | mlx | Engine tạo embedding người nói: mlx hoặc coreml (chỉ pyannote) |
--vad-filter | Lọc trước bằng Silero VAD (chỉ pyannote) | |
--rttm | Xuất ở định dạng RTTM | |
--json | Xuất dạng JSON | |
--score-against | Tệp RTTM tham chiếu để tính DER |
Ví dụ:
# Phân tách cơ bản (pyannote, mặc định)
speech diarize meeting.wav
# Sortformer end-to-end (CoreML, Neural Engine)
speech diarize meeting.wav --engine sortformer
# Xuất RTTM để đánh giá
speech diarize meeting.wav --rttm
# Trích xuất người nói mục tiêu (chỉ pyannote)
speech diarize meeting.wav --target-speaker enrollment.wav
# Chấm điểm so với tham chiếu
speech diarize meeting.wav --score-against reference.rttm
embed-speaker
Trích xuất vector embedding người nói từ âm thanh.
speech embed-speaker <file> [options]
| Tùy chọn | Mô tả |
|---|---|
<file> | Tệp âm thanh chứa giọng người nói |
--engine | mlx (mặc định) hoặc coreml cho WeSpeaker 256 chiều; redimnet2 cho định danh lâu dài CoreML 192 chiều; camplusplus cho CAM++ CoreML 192 chiều |
--json | Xuất dạng JSON |
language-id
Nhận dạng ngôn ngữ nói trong tệp âm thanh.
speech language-id <file> [options]
| Tùy chọn | Mô tả |
|---|---|
<file> | Tệp âm thanh cần phân loại |
--engine | Công cụ suy luận: mlx hoặc coreml |
--model | Ghi đè ID mô hình Hugging Face |
--top | Số ngôn ngữ ứng viên |
--json | Xuất kết quả dưới dạng JSON |
speech language-id recording.wav --top 5
speech language-id recording.wav --engine coreml --json
denoise
Loại bỏ tiếng ồn nền bằng DeepFilterNet3 trên Neural Engine.
speech denoise <file> [options]
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
<file> | Tệp âm thanh đầu vào | |
--output, -o | input_clean.wav | Đường dẫn tệp đầu ra |
--model, -m | ID mô hình HuggingFace |
Ví dụ:
speech denoise noisy-recording.wav -o clean.wav
compose
Tạo 30 giây nhạc từ một prompt văn bản dùng MAGNeT trên MLX.
speech compose <prompt> [options]
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
<prompt> | Prompt văn bản mô tả bản nhạc cần tạo (ví dụ "happy rock") | |
--output, -o | magnet.wav | Đường dẫn WAV đầu ra (32 kHz mono) |
--variant | small-int4 | Biến thể mô hình: small-int4, small-int8, medium-int4 hoặc medium-int8. Tương ứng với aufklarer/MAGNeT-{Small,Medium}-30secs-MLX-{4,8}bit. |
--temperature | 3.0 | Nhiệt độ lấy mẫu, giảm tuyến tính theo từng stage. |
--top-p | 0.9 | Ngưỡng nucleus sampling. |
--cfg-max | 10.0 | Hệ số classifier-free guidance tối đa. |
--cfg-min | 1.0 | Hệ số CFG tối thiểu (giảm dần cùng lịch trình mask). |
--steps | 20,10,10,10 | Số bước giải mã trên mỗi codebook, cách nhau bởi dấu phẩy (4 giá trị). |
--seed | Seed ngẫu nhiên để đầu ra có thể tái lập. |
Ví dụ:
# Mặc định: small-int4, ~10 s trên chip dòng M cho đoạn 30 s
speech compose "happy rock" -o happy_rock.wav
# Mô hình lớn hơn — bám prompt tốt hơn, chậm hơn
speech compose "lo-fi hip hop with mellow piano" --variant medium-int4 -o lofi.wav
# Có thể tái lập
speech compose "energetic EDM with synth lead" --seed 42 -o edm.wav
transcribe-batch
Chuyển văn bản cả một thư mục tệp âm thanh; mô hình chỉ nạp một lần.
speech transcribe-batch <input-dir> [options]
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
<input-dir> | Thư mục các tệp âm thanh cần chuyển văn bản (WAV, FLAC, v.v.) | |
--output-dir | Thư mục xuất bản chép lời | |
--engine | qwen3 | Bộ máy ASR (giá trị như transcribe) |
--jsonl | Xuất kết quả dạng JSON lines, mỗi tệp một dòng |
restore
Khôi phục giọng nói (khử ồn + khử vang) với Sidon — CoreML, đầu ra 48 kHz.
speech restore <audio-file> [options]
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
--output, -o | input_restored.wav | Đường dẫn tệp WAV đầu ra (48 kHz) |
--variant | fp16 | Biến thể độ chính xác / bundle |
separate
Tách bản nhạc thành các stem (vocals, drums, bass, other).
speech separate <input> [options]
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
--stems | vocals,drums,bass,other | Các stem cần tách: vocals, drums, bass, other |
--engine | umx | Bộ máy: umx (mặc định) hoặc htdemucs (chất lượng cao hơn) |
--output-dir | Thư mục xuất bản chép lời |
upsample
Siêu phân giải âm thanh với FlashSR — AudioSR chưng cất một bước, đầu ra 48 kHz.
speech upsample <audio-file> [options]
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
--output, -o | hr.wav | Đường dẫn tệp WAV đầu ra (48 kHz) |
--variant | int4 | Biến thể độ chính xác / bundle |
--seed | Seed để đầu ra tái lập được |
qwen3-tts-coreml
Chuyển văn bản thành giọng nói với Qwen3-TTS trên CoreML (Neural Engine).
speech qwen3-tts-coreml "<text>" [options]
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
--output, -o | output.wav | Đường dẫn tệp WAV đầu ra |
--language | english | Ngôn ngữ đầu ra |
--model | ID mô hình Hugging Face |
vibevoice
Chuyển văn bản thành giọng nói với Microsoft VibeVoice (MLX).
speech vibevoice "<text>" --voice-cache <cache> [options]
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
--voice-cache, -v | Bộ nhớ giọng từ vibevoice-encode-voice (bắt buộc) | |
--steps | Số bước suy luận DPM-Solver (nhiều bước, chất lượng cao hơn) | |
--cfg | 1.3 | Cường độ classifier-free guidance |
--long-form | Tổng hợp dạng dài theo từng đoạn cho văn bản dài |
vibevoice-encode-voice
Tạo bộ nhớ giọng VibeVoice từ bản ghi tham chiếu và bản chép lời.
speech vibevoice-encode-voice <input> "<transcript>" [options]
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
<input> | Tệp âm thanh tham chiếu | |
<transcript> | Bản chép lời của âm thanh tham chiếu (chỉ tiếng Anh) | |
--output, -o | Bộ nhớ giọng đầu ra (.safetensors) |
translate
Dịch văn bản sang ngôn ngữ đích với MADLAD-400 (MLX).
speech translate "<text>" --to <lang> [options]
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
--to, -t | Mã ngôn ngữ đích (ISO 639-1, ví dụ es, zh, ja) | |
--stream | Phát token ngay khi giải mã | |
--model | ID mô hình Hugging Face |
avatar-motion
Sinh khung hệ số chuyển động avatar NVIDIA Audio2Face-3D từ âm thanh giọng nói.
speech avatar-motion <input> [options]
| Tùy chọn | Mặc định | Mô tả |
|---|---|---|
--output, -o | avatar-motion.jsonl | Đường dẫn tệp JSONL đầu ra |
--model | …James-MLX | Bundle danh tính avatar (mặc định James; có Claire và Mark) |
--verbose | In thời gian và số khung hình |