Traducere automată · Originalul în engleză
Hibiki Zero-3B Traducerea discursului (FR / ES / PT / DE → EN)
Hibiki Zero-3B este Kyutai streaming speech-to- speech translation model 24 flux audio kHz în franceză, spaniolă, portugheză sau germană; ieșire este o 24 kHz flux audio englezesc plus o transcriere text paralelă în limba engleză la același 12.5 Rată de cadru Hz. Construită pe Moshi/Mimi Arhitectura multistream: un singur transformator decodor modelează împreună fluxul codec sursă-audio și fluxurile de text + audio, astfel încât nu există separat ASR + MT + TTS Conducta. Soniqo construiește rulează ca quantized MLX Securizare (INT4 implicit; INT8 disponibil) în întregime Apple Silicon. CC-BY-4.0.
Stilul conductei ASR + MADLAD (speech transcribe | speech translate) vă aduce 400+ limbi dar adaugă latența rotundă a trei modele. Hibiki este un model de sfârșit-la-end și păstrează prosodia ا alegeți-l atunci când aveți nevoie Life speech în limba țintă mai degrabă decât doar text.
Start rapid
import HibikiTranslate
import AudioCommon
let model = try await HibikiTranslateModel.fromPretrained()
let pcm = try AudioFileLoader.load(url: input, targetSampleRate: 24000)
let (englishAudio, textTokens) = model.translate(
sourceAudio: pcm,
sourceLanguage: .fr // .fr / .es / .pt / .de — auto-detected but pass for the metadata
)
try WAVWriter.write(samples: englishAudio, sampleRate: 24000, to: output)
CLI
speech audio-translate input_fr.wav -o out_en.wav --source-lang fr
speech audio-translate input_es.wav -o out_en.wav --source-lang es --quantization 8bit
speech audio-translate input_pt.wav -o out_en.wav --source-lang pt --verbose
# Deterministic mode (used by the CI regression canaries)
HIBIKI_GREEDY=1 speech audio-translate input_fr.wav -o out_en.wav --source-lang fr
# Inner-monologue text token IDs (raw — SPM decode is a follow-up)
speech audio-translate input.wav -o out.wav --transcript
Arhitectură
Hibiki Zero-3B este un transformator multistream decodor 3.1B-parametru. Modelul participă în comun la mai mult de 33 fluxuri per cadru: un flux de text, 16 coduri de audio țintă (producția agentului) și 16 cărți de coduri sursă-audio (intrarea utilizatorului). La fiecare 80 ms se încadrează modelul de un token plus 16 coduri audio prin intermediul unui mic 6-strat deperitor care rulează 16 sub-etape per cadru, unul per cod-țintă, cu o proiecție multiLiner programată cu 9-slice.
Codec audio este Mimi la 12.5 Hz / 16 codebooks. Sursa audio este codificată în codurile sursă 16 (întârziere [0, 2, 2, …, 2]); tinta generata umple codurile de tinta 16 (același model de întârziere); per-codebook un-schimb este aplicat înainte ca Mimi decodeaza tinta inapoi la 24 kHz PCM englez. Coloana vertebrală temporală este 28 GQA straturi (dim = 2048, capete de interogare 16, capete 8 KV; kv_repeat = 2, Split-jumătate RoPE rope_concat, nu balsam
Decodează Loop
Hibiki emite jetoane de umplutură SPM (id 3) în timp ce acumulează suficient context sursă pentru a traduce, apoi jetoane text de conținut cu audio țintă de potrivire, și în cele din urmă text-EOS (id 2) Driver-ul Swift ruleaza până când EOS este eșantionat după fereastra sursă, plafonată la max(tSrc × 5/2, tSrc + 20) Pașii ca o limită de siguranță. 1.0–1.6× durata de intrare a clipurilor în stil FLEURS; apelanții nu ar trebui să își asume output_duration == input_duration.
Calea de feedback autoregresiv este non-evident: la pas t transformatorul citeste jetoane la indexul cache pas (uniformă pe toate fluxurile 33, cu substituţie init-token atunci când step ≤ delays[k]); textul eșantionat + codurile țintă 16 sunt scrise la index pas + 1. Acest lucru oglindește în amonte Moshi lm.py unde state.offsets += 1 se întâmplă înainte de împrăştierea cache-ului. text_emb rând pentru EOS (id 2) este alias la rândul 3 (PAD) la timpul de încărcare în greutate, oglindind Kyutai loaders.py:312 "înlocuirea simplă a EOS timpuriu cu PAD" patch-uri ? Orice EOS eșantionat în timpul ferestrei audio-streaming este inofensiv, numai EOS post-source încheie bucla.
Model Variante
| Variantă | Cuantificare | Dimensiune | Calculează | HuggingFace |
|---|---|---|---|---|
| Hibiki Zero-3B | INT4 | ~2,7 GB | Metal GPU (MLX) | aufklarer/Hibiki-Zero-3B-MLX-4bit |
| Hibiki Zero-3B | INT8 | ~3,9 GB | Metal GPU (MLX) | aufklater/Hibiki-Zero-3B-MLX-8bit |
Acoperirea limbii
Hibiki Zero-3B este instruit pe Franceză, Spaniolă, Portugheză și Germană → Engleză. Swift driver-ul detectează automat limba sursă; --source-lang pavilion este doar metadate.
| Sursă | Stare | Producția lacomă a eșantionului |
|---|---|---|
| FR | Strict E2E canar | "Deci este un traseu de schi." (de la "Pensez à l'itéraire de ski...") |
| ES | Strict E2E canar | "Domnilor, datele sunt îngrijorătoare." (Hibiki europarl eșantion) |
| PT | Doar avertizează (rechemare de conţinut-credinţă, cuvinte cheie mai mici) | "al cincilea c este p al martirului." (FLEURS PT) |
| DE | Doar avertizează (rechemare de conţinut-credinţă, cuvinte cheie mai mici) | "care nu mi s-a părut util." (FLEURS DE) |
Clipuri Spanish 16 kHz înregistrate de om FLEURS generaţie declanşatoare degenerate atât în amonte Python cât şi în portul Swift (Python emite 1643 trepte / ~131 de audio spart fără eşantionare EOS). Canarul de regresie Swift ES utilizează un excerpt 5 din spaţiul propriu al mostrelor Kyutai (kyutai/hibiki-zero-eșantioane) la 24 kHz TTS-generat audio, care se potrivește cu distribuția de formare și produce limba engleză curată. Dacă sunteți hrănire Hibiki spaniolă în producție, pre-reeșantion la 24 kHz și lipiți-vă de clipuri mai lungi (5 s+).
Variabile de mediu
| Variabilă | Efect |
|---|---|
HIBIKI_GREEDY=1 | Force argmax decodare atât pentru text cât și pentru audio țintă. Reproductibil |
HIBIKI_E2E=1 | Activează cazurile de testare E2E (necesită descărcarea modelului ~2.7 GB). |
HIBIKI_STRICT_ALL=1 | Promovează testele PT/DE de la avertisment la strict. |
HIBIKI_LENIENT=1 | Demotează încercările FR/ES de la strict la numai avertizări (numai depanare). |
HIBIKI_MODEL_ID=<repo> | Override the implicit aufklarer/Hibiki-Zero-3B-MLX-4bit model id. |
Performanță (M2 Max, MLX 4-bit)
| Metrică | Lăcomie. | Mostră |
|---|---|---|
| Latență per pas | 75 ms | ~95 ms |
| Zid-ceas pentru 3.54 s sursa FR | ~5 s | ~7 s |
| Durata de realizare | 1.0–1.6× sursa | 1.0–1.6× sursa |
Limitări cunoscute
translateStream()emite o singură bucată finală. Punctul de intrare de streaming încheie în prezent offlinetranslate(). Adevărat per-chunk Mimi streaming decodare este un v2 follow-up.- Nici un decodor de text SentincePiece. The
--transcriptsteagul imprimă ID-uri de jetoane brute. SPM decodează cablurile este un follow-up. - Mod de tamponare este vizibil mai zgomotos decât lacom. Utilizare
HIBIKI_GREEDY=1pentru rulaje reproductibile. - Cuantizare-numai. Repo-ul se află în prezent pe navele Zero-3B 4-bit și 8-bit; variantele 1B și 2B Hibiki există în convertor (
models/hibiki/export/convert.py), dar obiectivele Swift driver Zero-3B
Referințe
- Hîrtie: Traducere simultană de înaltă fidelitate (Kyutai 2025)
- Codul în amonte: kyutai-labs/hibiki
- Mostre: kyutai/hibiki-zero-eșantioane
- Licență: CC-BY-4.0