Traduction vocale Hibiki Zero-3B (FR / ES / PT / DE → EN)

Hibiki Zero-3B est le modèle de traduction de parole à parole en streaming de Kyutai — l'entrée est un flux audio à 24 kHz en français, espagnol, portugais ou allemand ; la sortie est un flux audio anglais à 24 kHz ainsi qu'une transcription textuelle anglaise parallèle au même débit de 12,5 Hz par trame. Construit sur l'architecture multistream Moshi/Mimi : un unique transformeur de type décodeur seul modélise conjointement le flux codec de l'audio source et les flux texte+audio cibles, il n'y a donc pas de pipeline ASR + MT + TTS séparé. La compilation Soniqo s'exécute sous forme de safetensors MLX quantifiés (INT4 par défaut, INT8 disponible) entièrement sur Apple Silicon. CC-BY-4.0.

Quand choisir Hibiki vs. ASR + MADLAD

Un pipeline en chaîne ASR + MADLAD (speech transcribe | speech translate) vous donne accès à plus de 400 langues, mais ajoute la latence aller-retour de trois modèles. Hibiki est un seul modèle de bout en bout et préserve la prosodie — choisissez-le lorsque vous avez besoin de parole en direct dans la langue cible plutôt que de simple texte.

Démarrage rapide

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 — détection automatique mais à transmettre pour les métadonnées
)
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

# Mode déterministe (utilisé par les canaris de régression CI)
HIBIKI_GREEDY=1 speech audio-translate input_fr.wav -o out_en.wav --source-lang fr

# IDs des tokens textuels du monologue interne (bruts — le décodage SPM est un travail à venir)
speech audio-translate input.wav -o out.wav --transcript

Architecture

Hibiki Zero-3B est un transformeur multistream de type décodeur seul à 3,1 milliards de paramètres. Le modèle attend conjointement sur 33 flux par trame : un flux texte, 16 codebooks audio cibles (la sortie de l'agent) et 16 codebooks audio source (l'entrée de l'utilisateur). À chaque trame de 80 ms, le modèle échantillonne un token texte plus 16 codes audio via un petit depformer de 6 couches qui exécute 16 sous-étapes par trame, une par codebook cible, avec une projection MultiLinear planifiée en 9 tranches.

Le codec audio est Mimi à 12,5 Hz / 16 codebooks. L'audio source est encodé dans les 16 codebooks du flux source (délai [0, 2, 2, …, 2]) ; l'audio cible généré remplit les 16 codebooks du flux cible (même schéma de délai) ; un dé-décalage par codebook est appliqué avant que Mimi ne décode la cible en PCM anglais à 24 kHz. Le squelette temporel est constitué de 28 couches GQA (dim = 2048, 16 têtes de requête, 8 têtes KV, kv_repeat = 2, RoPE moitié-séparée rope_concat, sans conditionneur — Zero est la variante non conditionnée).

Boucle de décodage

Hibiki émet des tokens de remplissage SPM (id 3) pendant qu'il accumule suffisamment de contexte source pour traduire, puis des tokens textuels de contenu avec l'audio cible correspondant, et enfin un EOS texte (id 2). Le pilote Swift s'exécute jusqu'à ce que EOS soit échantillonné au-delà de la fenêtre source, plafonné à max(tSrc × 5/2, tSrc + 20) étapes comme limite de sécurité. La sortie dure environ 1,0–1,6× la durée d'entrée sur les clips de type FLEURS ; les appelants ne doivent pas supposer que output_duration == input_duration.

Le chemin de rétroaction autorégressif n'est pas évident : à l'étape t, le transformeur lit les tokens à l'indice de cache step (uniforme sur les 33 flux, avec substitution du token d'initialisation lorsque step ≤ delays[k]) ; le texte échantillonné + 16 codes cibles sont écrits à l'indice step + 1. Cela reflète l'amont Moshi lm.pystate.offsets += 1 se produit avant le scatter du cache. La ligne text_emb pour EOS (id 2) est aliasée à la ligne 3 (PAD) au moment du chargement des poids, reflétant le patch de Kyutai dans loaders.py:312 "remplacer implicitement l'EOS précoce par PAD" — tout EOS échantillonné pendant la fenêtre de streaming audio est inoffensif, seul un EOS post-source termine la boucle.

Variantes du modèle

VarianteQuantificationTailleCalculHuggingFace
Hibiki Zero-3BINT4~2,7 GoGPU Metal (MLX)aufklarer/Hibiki-Zero-3B-MLX-4bit
Hibiki Zero-3BINT8~3,9 GoGPU Metal (MLX)aufklarer/Hibiki-Zero-3B-MLX-8bit

Couverture linguistique

Hibiki Zero-3B est entraîné sur français, espagnol, portugais et allemand → anglais. Le pilote Swift détecte automatiquement la langue source ; l'option --source-lang n'est qu'une métadonnée.

SourceStatutExemple de sortie greedy
FRCanari E2E strict"so it's a ski route." (à partir de "Pensez à l'itinéraire de ski…")
ESCanari E2E strict"gentlemen, the data is worrying." (échantillon europarl Hibiki)
PTAvertissement seulement (fidèle au contenu, rappel des mots-clés plus faible)"the fifth c is p of the martyr." (FLEURS PT)
DEAvertissement seulement (fidèle au contenu, rappel des mots-clés plus faible)"that didn't seem to me to be useful." (FLEURS DE)
L'espagnol FLEURS est hors distribution

Les clips FLEURS espagnols enregistrés par des humains à 16 kHz déclenchent une génération dégénérée à la fois dans l'amont Python et dans le portage Swift (Python émet 1643 étapes / ~131 s d'audio cassé sans échantillonner EOS). Le canari de régression ES Swift utilise un extrait de 5 s tronqué provenant de l'espace samples de Kyutai (kyutai/hibiki-zero-samples) en audio généré par TTS à 24 kHz, ce qui correspond à la distribution d'entraînement et produit un anglais propre. Si vous alimentez Hibiki en espagnol en production, ré-échantillonnez préalablement à 24 kHz et tenez-vous-en à des clips plus longs (5 s et plus).

Variables d'environnement

VariableEffet
HIBIKI_GREEDY=1Force le décodage argmax pour le texte et l'audio cible. Reproductible — utilisé par les canaris CI stricts.
HIBIKI_E2E=1Active les cas de test E2E (nécessite le téléchargement du modèle ~2,7 Go).
HIBIKI_STRICT_ALL=1Promeut les tests PT/DE de "avertissement seulement" à strict.
HIBIKI_LENIENT=1Rétrograde les tests FR/ES de strict à "avertissement seulement" (débogage uniquement).
HIBIKI_MODEL_ID=<repo>Remplace l'identifiant de modèle par défaut aufklarer/Hibiki-Zero-3B-MLX-4bit.

Performance (M2 Max, MLX 4-bit)

MétriqueGreedyÉchantillonné
Latence par étape~75 ms~95 ms
Temps réel pour 3,54 s de source FR~5 s~7 s
Durée de sortie1,0–1,6× la source1,0–1,6× la source

Limitations connues

Références