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.
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ı
| Varyant | Nicemlendirme | Boyut | Hesaplama | 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 |
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.
| Kaynak | Durum | Örnek greedy çıktı |
|---|---|---|
| FR | Sıkı E2E kanarya | "so it's a ski route." ("Pensez à l'itinéraire de ski…" dan) |
| ES | Sıkı E2E kanarya | "gentlemen, the data is worrying." (Hibiki europarl örneği) |
| PT | Yalnızca-uyarı (içerik-sadık, daha düşük anahtar kelime hatırlama) | "the fifth c is p of the martyr." (FLEURS PT) |
| DE | Yalnızca-uyarı (içerik-sadık, daha düşük anahtar kelime hatırlama) | "that didn't seem to me to be useful." (FLEURS DE) |
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şken | Etki |
|---|---|
HIBIKI_GREEDY=1 | Hem metin hem de hedef ses için argmax kod çözmeyi zorla. Tekrarlanabilir — sıkı CI kanaryaları tarafından kullanılır. |
HIBIKI_E2E=1 | E2E test durumlarını etkinleştir (~2,7 GB model indirilmesi gerekir). |
HIBIKI_STRICT_ALL=1 | PT/DE testlerini yalnızca-uyarıdan sıkıya yükselt. |
HIBIKI_LENIENT=1 | FR/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)
| Metrik | Greedy | Ö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üresi | kaynağın 1,0–1,6× katı | kaynağın 1,0–1,6× katı |
Bilinen Sınırlamalar
translateStream()tek bir nihai parça yayar. Akış giriş noktası şu anda çevrimdışıtranslate()fonksiyonunu sarmalar. Gerçek parça-başına Mimi akış kod çözme bir v2 takip işidir.- SentencePiece metin kod çözücü yok.
--transcriptbayrağı ham token kimliklerini yazdırır. SPM kod çözme bağlantısı bir takip işidir. - Örneklenmiş mod greedy'den belirgin şekilde daha gürültülüdür. Tekrarlanabilir çalıştırmalar için
HIBIKI_GREEDY=1kullanın. - Yalnızca nicemlendirilmiş. Depo şu anda Zero-3B 4-bit ve 8-bit sürümlerini taşır; 1B ve 2B Hibiki varyantları dönüştürücüde (
models/hibiki/export/convert.py) bulunur ancak Swift sürücüsü Zero-3B'nin GQA + rope_concat + koşullandırılmamış düzenini hedefler.
Referanslar
- Makale: High-Fidelity Simultaneous Speech-to-Speech Translation (Kyutai, 2025)
- Üst akış kodu: kyutai-labs/hibiki
- Örnekler: kyutai/hibiki-zero-samples
- Lisans: CC-BY-4.0