Hibiki Zero-3B Konuşma Çevirisi (FR / ES / PT / DE → EN)

Hibiki Zero-3B, Kyutai'nin akış konuşmadan konuşmaya çeviri modelidir — giriş, Fransızca, İspanyolca, Portekizce veya Almanca dillerinde 24 kHz'lik bir ses akışı; çıkış ise 24 kHz İngilizce ses akışı ve aynı 12,5 Hz kare hızında paralel bir İngilizce metin transkripsiyonudur. Moshi/Mimi çoklu akış mimarisi üzerine kurulmuştur: tek bir yalnızca-kod-çözücü transformer, kaynak-ses kodek akışını ve hedef metin+ses akışlarını ortaklaşa modeller, dolayısıyla ayrı bir ASR + MT + TTS işlem hattı yoktur. Soniqo derlemesi, nicemlenmiş MLX safetensors (varsayılan INT4, INT8 mevcuttur) olarak tamamen Apple Silicon üzerinde çalışır. CC-BY-4.0.

Hibiki ne zaman ASR + MADLAD yerine seçilmeli?

Boru-stili ASR + MADLAD (speech transcribe | speech translate) size 400'den fazla dil sunar ancak üç modelin gidiş-dönüş gecikmesini ekler. Hibiki uçtan uca tek bir modeldir ve prozodiyi korur — sadece metin yerine hedef dilde canlı konuşmaya ihtiyacınız olduğunda bunu tercih edin.

Hızlı Başlangıç

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 — otomatik algılanır ama meta veri için aktarın
)
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

# Deterministik mod (CI regresyon kanaryaları tarafından kullanılır)
HIBIKI_GREEDY=1 speech audio-translate input_fr.wav -o out_en.wav --source-lang fr

# İç-monolog metin token kimlikleri (ham — SPM çözümü sonraki adım)
speech audio-translate input.wav -o out.wav --transcript

Mimari

Hibiki Zero-3B, 3,1 milyar parametreli yalnızca-kod-çözücü bir çoklu akış transformer'ıdır. Model her karede 33 akışa ortaklaşa katılım gösterir: bir metin akışı, 16 hedef-ses kod kitabı (ajanın çıktısı) ve 16 kaynak-ses kod kitabı (kullanıcının girişi). Her 80 ms'lik karede model bir metin tokenı artı 16 ses kodu örnekler; bunu, her kare başına 16 alt adım çalıştıran küçük bir 6-katmanlı depformer aracılığıyla yapar (her hedef kod kitabı için bir alt adım), 9 dilimli zamanlanmış bir MultiLinear projeksiyon ile.

Ses kodeği 12,5 Hz / 16 kod kitabında Mimi'dir. Kaynak ses 16 kaynak-akış kod kitabına kodlanır (gecikme [0, 2, 2, …, 2]); üretilen hedef ses 16 hedef-akış kod kitabını doldurur (aynı gecikme örüntüsü); Mimi hedefi 24 kHz İngilizce PCM'e geri çözmeden önce kod kitabı başına un-shift uygulanır. Zamansal omurga 28 GQA katmanıdır (dim = 2048, 16 sorgu başlığı, 8 KV başlığı, kv_repeat = 2, ikiye bölünmüş RoPE rope_concat, koşullandırıcı yok — Zero, koşulsuz varyanttır).

Kod Çözme Döngüsü

Hibiki, çeviri yapmak için yeterli kaynak bağlamı biriktirirken SPM dolgu tokenları (id 3) yayar; sonra eşleşen hedef ses ile içerik metin tokenları ve sonunda metin-EOS (id 2). Swift sürücüsü, güvenlik sınırı olarak max(tSrc × 5/2, tSrc + 20) adımda sınırlandırılmış olarak, EOS, kaynak penceresinin ötesinde örneklenene kadar çalışır. Çıkış, FLEURS tarzı kliplerde giriş süresinin yaklaşık 1,0–1,6× katı kadar sürer; çağıranlar output_duration == input_duration varsaymamalıdır.

Otoregresif geri besleme yolu açık değildir: t adımında transformer, önbellek indeksi step'teki tokenları okur (33 akışta tek tip, step ≤ delays[k] olduğunda init-token değişimi ile); örneklenen metin + 16 hedef kod indeks step + 1'e yazılır. Bu, üst akış Moshi lm.py'yi yansıtır, burada state.offsets += 1 önbellek scatter'dan önce gerçekleşir. EOS için text_emb satırı (id 2), ağırlık yüklemesi sırasında satır 3'e (PAD) bağlanır; bu, Kyutai'nin loaders.py:312 "erken EOS'u dolaylı olarak PAD ile değiştir" yamasını yansıtır — ses-akış penceresinde örneklenen herhangi bir EOS zararsızdır, yalnızca kaynak sonrası EOS döngüyü sonlandırır.

Model Varyantları

VaryantNicemlendirmeBoyutHesaplamaHuggingFace
Hibiki Zero-3BINT4~2,7 GBMetal GPU (MLX)aufklarer/Hibiki-Zero-3B-MLX-4bit
Hibiki Zero-3BINT8~3,9 GBMetal GPU (MLX)aufklarer/Hibiki-Zero-3B-MLX-8bit

Dil Kapsamı

Hibiki Zero-3B, Fransızca, İspanyolca, Portekizce ve Almanca → İngilizce üzerinde eğitilmiştir. Swift sürücüsü kaynak dili otomatik olarak algılar; --source-lang bayrağı yalnızca meta veridir.

KaynakDurumÖrnek greedy çıktı
FRSıkı E2E kanarya"so it's a ski route." ("Pensez à l'itinéraire de ski…" dan)
ESSıkı E2E kanarya"gentlemen, the data is worrying." (Hibiki europarl örneği)
PTYalnızca-uyarı (içerik-sadık, daha düşük anahtar kelime hatırlama)"the fifth c is p of the martyr." (FLEURS PT)
DEYalnızca-uyarı (içerik-sadık, daha düşük anahtar kelime hatırlama)"that didn't seem to me to be useful." (FLEURS DE)
FLEURS İspanyolcası dağılım dışıdır

16 kHz insan-kayıtlı FLEURS İspanyolca klipler, hem Python üst akışında hem de Swift portunda dejenere üretimi tetikler (Python EOS örneklemeden 1643 adım / ~131 saniye bozuk ses yayar). Swift ES regresyon kanaryası, Kyutai'nin kendi örnekler alanından (kyutai/hibiki-zero-samples) 24 kHz TTS-üretilmiş sesinden 5 saniyelik kırpılmış bir alıntı kullanır; bu, eğitim dağılımıyla eşleşir ve temiz İngilizce üretir. Üretimde Hibiki'ye İspanyolca besliyorsanız, önceden 24 kHz'e yeniden örnekleyin ve daha uzun kliplere (5 sn+) bağlı kalın.

Ortam Değişkenleri

DeğişkenEtki
HIBIKI_GREEDY=1Hem metin hem de hedef ses için argmax kod çözmeyi zorla. Tekrarlanabilir — sıkı CI kanaryaları tarafından kullanılır.
HIBIKI_E2E=1E2E test durumlarını etkinleştir (~2,7 GB model indirilmesi gerekir).
HIBIKI_STRICT_ALL=1PT/DE testlerini yalnızca-uyarıdan sıkıya yükselt.
HIBIKI_LENIENT=1FR/ES testlerini sıkıdan yalnızca-uyarıya düşür (yalnızca hata ayıklama).
HIBIKI_MODEL_ID=<repo>Varsayılan aufklarer/Hibiki-Zero-3B-MLX-4bit model kimliğini geçersiz kıl.

Performans (M2 Max, MLX 4-bit)

MetrikGreedyÖrneklenmiş
Adım başına gecikme~75 ms~95 ms
3,54 sn FR kaynak için duvar saati~5 sn~7 sn
Çıkış süresikaynağın 1,0–1,6× katıkaynağın 1,0–1,6× katı

Bilinen Sınırlamalar

Referanslar