Automatische vertaling · Engels origineel
Hibiki Zero-3B Speech Translation (FR / ES / PT / DE → NL)
Hibiki Zero-3B is Kyutai's streaming speech-to-speech vertaling de input van het model is a 24 kHz audio stream in het Frans, Spaans, Portugees of Duits; output is een 24 kHz Engelse audiostream plus een parallel Engels tekst transcript op hetzelfde 12.5 Hz frame rate. Gebouwd op de Moshi/Mimi multistream architectuur: een enkele transformator alleen decoder modelleert gezamenlijk de source-audio codec stream en de target text+audio streams, dus er is geen aparte ASR + MT + TTS pijplijn. Soniqo bouwen loopt als gequantiseerd MLX safetensors (INT4 standaard; INT8 volledig beschikbaar op Apple Silicon. CC-BY-4.0.
ASR + MADLAD (speech transcribe | speech translate) krijgt u 400+ talen, maar voegt de ronde-trip latency van drie modellen. Hibiki is een model end-to-end en behoudt prosody te kiezen wanneer je nodig hebt live spraak in de doeltaal in plaats van alleen maar sms'en.
Snel starten
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
Architectuur
Hibiki Zero-3B is een 3,1B-parameter decoder-alleen multistream transformator. Het model gaat gezamenlijk over 33 streams per frame: één tekststroom, 16 target-audio codebooks (uitvoer van de agent) en 16 bron-audiocodeboeken (invoer van de gebruiker). Bij elke 80 ms frame neemt het model één tekstteken plus 16 audiocodes via een kleine 6-laag depformer die 16 substappen per frames uitvoert, één per doelcodeboek, met een 9-slice geplande MultiLinear projectie.
De audiocodec is Mimi bij 12,5 Hz / 16 codeboeken. Bronaudio wordt gecodeerd in de 16 bron-stream codeboeken (delay [0, 2, 2, …, 2]); gegenereerde doelaudio vult de 16 doel-stream codebooks (zelfde vertragingspatroon); per codebook un-shift wordt toegepast vóór Mimi decodeert het doel terug naar 24 kHz Engelse PCM. De temporale ruggengraat is 28 GQA lagen (dim = 2048, 16 query heads, 8 KV hoofden, kv_repeat = 2, split-half RoPE rope_concat, geen enkele conditioner is de onvoorwaardelijke variant).
Loop decoderen
Hibiki zendt SPM opvulling tokens uit (id 3) terwijl het genoeg broncontext verzamelt om te vertalen, dan teksttekens voor inhoud met bijpassende doelaudio, en tenslotte tekst-EOS (id 2De Swift driver draait totdat EOS wordt bemonsterd langs het bronvenster, begrensd op max(tSrc × 5/2, tSrc + 20) stappen als een veiligheidsgrens. Output loopt ruwweg 1.0–1.6× de invoerduur op FLEURS-achtige clips; callers mogen er niet van uitgaan output_duration == input_duration.
Het autoregressieve terugkoppelingspad is niet duidelijk: in stap t leest de transformator tokens op cache-index step (uniform over alle 33 stromen, met init-token substitutie wanneer step ≤ delays[k]); de bemonsterde tekst + 16 doelcodes worden geschreven op index step + 1. Deze spiegels upstream Moshi lm.py waar state.offsets += 1 gebeurt voordat de cache verstrooit. De text_emb rij voor EOS (id 2) is ook bedoeld voor rij 3 (PAD) bij het laden van gewicht, waarbij Kyutai's loaders.py:312 implicitly replace early EOS patch & subjected by EOS-equale windows is tijdens de e-streaming.
Model Varianten
| Variant | Kwantisering | Grootte | Berekenen | 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) | aufklarer/Hibiki-Zero-3B-MLX-8bit |
Talendekking
Hibiki Zero-3B is getraind op Frans, Spaans, Portugees en Duits → Engels. De Swift driver detecteert automatisch de brontaal; de --source-lang vlag is alleen metadata.
| Bron | Status | Sample hebzuchtige uitvoer |
|---|---|---|
| FR | Strikt E2E kanarie | "Dus het is een skiroute." (van "Pensez à l'itinéraire de ski...) |
| ES | Strikt E2E kanarie | "Heren, de gegevens zijn zorgwekkend." (Hibiki europarl monster) |
| PT | Alleen waarschuwen (content-trouw, lagere trefwoord terugroepen) | "de vijfde c is p van de martelaar." (FLEURS PT) |
| NL | Alleen waarschuwen (content-trouw, lagere trefwoord terugroepen) | "dat leek me niet nuttig." (FLEURS DE) |
16 kHz human-recorded FLEURS Spaanse clips trigger degenerate generation in both the Python upstream and the Swift port (Python emittert 1643 stappen / ~131 s van gebroken audio zonder bemonstering EOS).De Swift ES regressie canary maakt gebruik van een 5 s getrimde fragment uit Kyutai's eigen sampleruimte (kyutai/hibiki-zero-samples) bij 24 kHz TTS-geproduceerde audio, die overeenkomt met de trainingsdistributie en een schone Engels produceert. Als je Hibiki Spaans in productie voert, pre-reset op 24 kHz en aan langere clips (5 s+) vasthoudt.
Omgevingsvariabelen
| Variabele | Effect |
|---|---|
HIBIKI_GREEDY=1 | Dwing argmax decodering voor zowel tekst als doel audio. Reproducible, gebruikt door de strikte CI kanaries. |
HIBIKI_E2E=1 | Schakel de E2E testcases in (vereist de ~2.7 GB modeldownload). |
HIBIKI_STRICT_ALL=1 | Promoot PT/DE-tests van alleen waarschuwing tot streng. |
HIBIKI_LENIENT=1 | Demonteer FR/ES-tests van strikt tot alleen waarschuwend (alleen debuggen). |
HIBIKI_MODEL_ID=<repo> | Overschrijf de standaard aufklarer/Hibiki-Zero-3B-MLX-4bit model id. |
Prestatie (M2 Max, MLX 4-bit)
| Metrisch | Hebzuchtig | Gemonsterd |
|---|---|---|
| Per-stap latentie | 75 ms | ~95 ms |
| Wandklok voor 3,54 s FR bron | ~5 s | ~7 s |
| Uitvoerduur | 1.0–1.6× bron | 1.0–1.6× bron |
Bekende beperkingen
translateStream()zendt een enkele laatste brok uit. Het streaming ingangspunt wrapt momenteel de offlinetranslate(). True per-chunk Mimi streaming decode is een v2 follow-up.- Geen SentencePiece tekst decoder. De
--transcriptvlag drukt ruwe token-ID's af. SPM decoderen bedrading is een vervolg. - Sampled mode is merkbaar luidruchtiger dan hebzuchtig. Gebruik
HIBIKI_GREEDY=1voor reproduceerbaare runs. - Kwantisering-alleen. De repo wordt momenteel verzonden Zero-3B 4-bit en 8-bit; de 1B en 2B Hibiki varianten bestaan in de converter (
models/hibiki/export/convert.py) maar de Swift driver targets Zero-3B's GQA + touw_concat + niet-geconditioneerde lay-out.
Referenties
- Paper: High-fidelity Gelijktijdige spraak-tot-spraakvertaling (Kyutai, 2025)
- Upstreamcode: kyutai-labs/hibiki
- Monsters: kyutai/hibiki-zero-samples
- Licentie: CC-BY-4.0