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.

Când se ajunge la Hibiki vs. ASR + MADLAD

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ăCuantificareDimensiune CalculeazăHuggingFace
Hibiki Zero-3BINT4~2,7 GBMetal GPU (MLX)aufklarer/Hibiki-Zero-3B-MLX-4bit
Hibiki Zero-3BINT8~3,9 GBMetal 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
FRStrict E2E canar"Deci este un traseu de schi." (de la "Pensez à l'itéraire de ski...")
ESStrict E2E canar"Domnilor, datele sunt îngrijorătoare." (Hibiki europarl eșantion)
PTDoar avertizează (rechemare de conţinut-credinţă, cuvinte cheie mai mici)"al cincilea c este p al martirului." (FLEURS PT)
DEDoar avertizează (rechemare de conţinut-credinţă, cuvinte cheie mai mici)"care nu mi s-a părut util." (FLEURS DE)
FLEURS Spaniolă este în afara distribuţiei

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=1Force argmax decodare atât pentru text cât și pentru audio țintă. Reproductibil
HIBIKI_E2E=1Activează cazurile de testare E2E (necesită descărcarea modelului ~2.7 GB).
HIBIKI_STRICT_ALL=1Promovează testele PT/DE de la avertisment la strict.
HIBIKI_LENIENT=1Demotează î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 pas75 ms~95 ms
Zid-ceas pentru 3.54 s sursa FR~5 s~7 s
Durata de realizare1.0–1.6× sursa1.0–1.6× sursa

Limitări cunoscute

Referințe