Maskinöversättning · Engelskt original
Hibiki Zero-3B Speech Translation (FR / ES / PT / DE → EN)
Hibiki Zero-3B är Kyutai streaming av tal-till-tal översättning Modell - Input är en 24 kHz ljudström på franska, spanska, portugisiska eller tyska; utgång är en 24 kHz engelska ljudström plus en parallell engelsk text transkript på samma 12.5 Hz ram ränta. byggd på Moshi/Mimi multistream arkitektur: en enda decoder-bara transformator modellerar gemensamt käll-audio codec-strömmen och måltexten + ljudströmmar, så det finns ingen separat ASR + MT + TTS pipeline. Soniqo bygga runs som kvantiserad MLX Säkringsgivare (säkring)INT4 Default, INT8 tillgängliga) helt på Apple Silicon. CC-BY-4.0.
Pipe-stil ASR + MADLAD (speech transcribe | speech translate) får dig 400+ språk men lägger till rundtur latens av tre modeller. Hibiki är en modell end-to-end och bevarar prosody - välj den när du behöver live tal i målspråket snarare än bara text.
Snabbstart
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
Arkitektur
Hibiki Zero-3B är en 3.1b-parameter dekoder-bara multistream transformator. Modellen deltar gemensamt över 33 strömmar per ram: en textström, 16 mål-audio kodböcker (agentens utgång), och 16 källkodsböcker (användarens ingång). Vid varje 80 ms ram modellen provar en text token plus 16 ljudkoder via en liten 6-layer Depformer som kör 16 understeg per ram, en per målkodbok, med en 9-skiva schemalagd MultiLinear-projektion.
Audio codec är Mimi på 12.5 Hz / 16-kodböcker. Källa ljud kodas in i 16 källkodsböcker (fördröjning) [0, 2, 2, …, 2]); genererad målljud fyller 16 målströmskodböcker (samma fördröjningsmönster); per-kodbok un-shift appliceras innan Mimi avkodar målet tillbaka till 24 kHz English PCM. Den temporala ryggraden är 28 GQA lager (dim = 2048, 16 query heads, 8 KV-huvuden, kv_repeat = 2, split-half RoPE rope_concat, ingen balsam - Zero är den ovillkorliga varianten.
Decode Loop
Hibiki avger SPM padding tokensid 3) medan det samlar tillräckligt med källkontext för att översätta, sedan innehåll text tokens med matchande målljud, och slutligen text-EOS (EOS).id 2Swift-drivrutinen körs tills EOS provas förbi källfönstretFångad på max(tSrc × 5/2, tSrc + 20) steg som en säkerhetsgräns. Utgången körs ungefär 1.0-1.6 × ingångstiden på FLEURS-stil klipp; kallare bör inte anta output_duration == input_duration.
Den autoregressiva återkopplingsvägen är icke-uppenbar: i steg t.ex. transformatorn läser tokens på cache index Steg steg steg steg (uniform över alla 33-strömmar, med init-token substitution när step ≤ delays[k]); den provtagna texten + 16-målkoderna är skrivna på index Steg + 1Detta speglar uppströms Moshi lm.py där var där state.offsets += 1 händer innan cache scatter. text_emb rad för EOS (EOS)id 2) är aliased att radera 3 (PAD) vid viktbelastningstid, vilket speglar Kyutai loaders.py:312 "Oplicit ersätta tidig EOS med PAD" patch - alla EOS provtagna under ljudströmmande fönstret är ofarligt, endast post-source EOS avslutar slingan.
Modellvarianter
| Variant | Kvantisering | Storlek | Beräkning | 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 |
Språktäckning
Hibiki Zero-3B är utbildad på Franska, spanska, portugisiska och tyska → Engelska . Swift föraren auto-detekterar källspråket; --source-lang flaggan är metadata endast.
| Källa | Status | Sample greedy output |
|---|---|---|
| FR FR | Strikt E2E kanarie | "Så det är en skidväg." (från "Pensez à l'itinéraire de ski...") |
| ES | Strikt E2E kanarie | "Menlemen, data är oroande." (Hibiki europarl prov) |
| PT | Varn-bara (innehållstrogna, lägre sökordsåterkallande) | "Den femte c är p av martyr." (FLEURS PT) |
| DE | Varn-bara (innehållstrogna, lägre sökordsåterkallande) | "Det verkade inte mig vara användbar." (FLEURS DE) |
16 kHz human-recorded FLEURS Spanska klipp utlöser degenererad generation i båda Python uppströms och Swift port (port)Python Utförs 1643 Steg / ~131 s brutet ljud utan provtagning EOS). Swift ES regression canary använder en 5 s trimmade utdrag ur Kyutai egna prover utrymme (Kyutai/hibiki-zero-samples) på 24 kHz TTS-genererad ljud, som matchar utbildningsfördelningen och producerar ren engelska. Om du matar Hibiki spanska i produktion, förhandsresample till 24 KHz och hålla sig till längre klipp (5 s +).
Miljövariabler
| Variabel | Effekt |
|---|---|
HIBIKI_GREEDY=1 | Force argmax avkodning för både text och målljud. Reproducible - som används av de strikta CI-kanarier. |
HIBIKI_E2E=1 | Möjliggöra E2E testfall (kräver nedladdningen av ~2.7 GB-modellen). |
HIBIKI_STRICT_ALL=1 | Främja PT / DE-test från varning till strikt. |
HIBIKI_LENIENT=1 | Demote FR/ES tester från strikta till varna endast (endast felsökning). |
HIBIKI_MODEL_ID=<repo> | Överskrid standard aufklarer/Hibiki-Zero-3B-MLX-4bit modell id. |
Prestanda (M2 Max, MLX 4-bit)
| Metric | Greedy | Sampled |
|---|---|---|
| Per-step latens | ~75 ms | ~95 ms |
| Väggklocka för 3,54 s FR-källa | 5 s | 7 s |
| Utgångslängden | 1.0–1.6 × källa | 1.0–1.6 × källa |
Kända begränsningar
translateStream()avger en enda sista bit. Den strömmande ingångspunkten för närvarande lindrar offlinetranslate()True per-chunk Mimi streaming decode är en v2 uppföljning.- No SentencePiece text decoder. The
--transcriptflaggtryck raw token IDs. SPM decode wiring är en uppföljning. - Sampled mode är märkbart bullerigare än giriga. Använd
HIBIKI_GREEDY=1för reproducerbara körningar. - Quantization-only. Republiken för närvarande fartyg Zero-3B 4-bit och 8-bit; 1B och 2B Hibiki varianter finns i omvandlaren (
models/hibiki/export/convert.py) men Swift förare mål Zero-3B GQA + rope_concat + nonconditioned layout.
Referenser
- Papper: High-Fidelity Simultaneous Speech-to-Speech Translation (Kyutai, 2025)
- Uppströmskod: kyutai-labs/hibiki
- Prover: kyutai/hibiki-zero-samples
- Licens: CC-BY-4.0