Hibiki Zero-3B 语音翻译 (FR / ES / PT / DE → EN)
Hibiki Zero-3B 是 Kyutai 的流式语音到语音翻译模型——输入为法语、西班牙语、葡萄牙语或德语的 24 kHz 音频流;输出为 24 kHz 英语音频流以及一份在同一 12.5 Hz 帧率下并行生成的英文文本转录。基于 Moshi/Mimi 多流架构:单个 decoder-only Transformer 同时建模源音频编解码流和目标文本+音频流,因此无需单独的 ASR + MT + TTS 流水线。Soniqo 构建版本以量化 MLX safetensors 形式(默认 INT4,也提供 INT8)完全运行于 Apple Silicon。许可证:CC-BY-4.0。
管道式 ASR + MADLAD(speech transcribe | speech translate)可支持 400+ 种语言,但会引入三个模型串接的往返延迟。Hibiki 是端到端单一模型且保留了韵律——当你需要的是目标语言的实时语音而不仅仅是文本时,请选择它。
快速开始
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 — 自动检测,但传入用于元数据
)
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
# 确定性模式(CI 回归基准用例使用)
HIBIKI_GREEDY=1 speech audio-translate input_fr.wav -o out_en.wav --source-lang fr
# 内心独白文本 token ID(原始——SPM 解码是后续工作)
speech audio-translate input.wav -o out.wav --transcript
架构
Hibiki Zero-3B 是一个 31 亿参数的 decoder-only 多流 Transformer。模型在每帧上联合关注 33 个流:一个文本流、16 个目标音频码本(agent 的输出)和 16 个源音频码本(用户的输入)。在每 80 ms 帧,模型通过一个小型的 6 层 depformer 采样 1 个文本 token 加 16 个音频码;depformer 每帧运行 16 个子步(每个目标码本一个),并使用 9 切片的 scheduled MultiLinear 投影。
音频编解码器为 Mimi,工作在 12.5 Hz / 16 个码本。源音频被编码为 16 个源流码本(延迟 [0, 2, 2, …, 2]);生成的目标音频填充 16 个目标流码本(相同的延迟模式);在 Mimi 将目标解码回 24 kHz 英语 PCM 之前会应用逐码本的反移位。时间主干为 28 层 GQA(dim = 2048,16 个查询头,8 个 KV 头,kv_repeat = 2,半分 RoPE rope_concat,无 conditioner——Zero 是无条件变体)。
解码循环
Hibiki 在累积足够的源上下文以进行翻译时会发射 SPM padding token(id 3),然后是带匹配目标音频的内容文本 token,最后是 text-EOS(id 2)。Swift 驱动会运行直到在源窗口之后采样到 EOS 为止,并以 max(tSrc × 5/2, tSrc + 20) 步作为安全上限。在 FLEURS 风格的片段上,输出时长约为输入时长的 1.0–1.6 倍;调用方不应假设 output_duration == input_duration。
自回归反馈路径并不直观:在第 t 步,Transformer 在缓存索引 step 处读取 token(在所有 33 个流上统一,当 step ≤ delays[k] 时采用初始 token 替换);采样得到的文本 + 16 个目标码会写入索引 step + 1。这与上游 Moshi lm.py 一致,其中 state.offsets += 1 发生在缓存散布之前。EOS(id 2)的 text_emb 行在权重加载时被别名到第 3 行(PAD),与 Kyutai 的 loaders.py:312 中"将提前的 EOS 隐式替换为 PAD"补丁一致——在音频流式窗口内采样到的任何 EOS 都是无害的,只有源之后的 EOS 才会终止循环。
模型变体
| 变体 | 量化 | 大小 | 计算 | 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 |
语言覆盖
Hibiki Zero-3B 在法语、西班牙语、葡萄牙语和德语 → 英语上进行了训练。Swift 驱动会自动检测源语言;--source-lang 参数仅为元数据。
| 源语言 | 状态 | 贪心采样示例输出 |
|---|---|---|
| FR | 严格 E2E 基准用例 | "so it's a ski route."(来自 "Pensez à l'itinéraire de ski…") |
| ES | 严格 E2E 基准用例 | "gentlemen, the data is worrying."(Hibiki europarl 示例) |
| PT | 仅警告(内容忠实,关键词召回率较低) | "the fifth c is p of the martyr."(FLEURS PT) |
| DE | 仅警告(内容忠实,关键词召回率较低) | "that didn't seem to me to be useful."(FLEURS DE) |
16 kHz 人工录制的 FLEURS 西班牙语片段在 Python 上游和 Swift 移植版中都会触发退化生成(Python 在不采样 EOS 的情况下输出 1643 步 / ~131 秒的损坏音频)。Swift 的 ES 回归基准用例使用了从 Kyutai 自己的样本空间(kyutai/hibiki-zero-samples)截取的 5 秒 24 kHz TTS 合成音频片段,这与训练分布匹配,能产出干净的英文。如果你在生产中向 Hibiki 输入西班牙语,请先重采样到 24 kHz 并使用较长片段(5 秒以上)。
环境变量
| 变量 | 作用 |
|---|---|
HIBIKI_GREEDY=1 | 对文本和目标音频强制使用 argmax 解码。可复现——被严格 CI 基准用例使用。 |
HIBIKI_E2E=1 | 启用 E2E 测试用例(需要下载约 2.7 GB 的模型)。 |
HIBIKI_STRICT_ALL=1 | 将 PT/DE 测试从仅警告提升为严格。 |
HIBIKI_LENIENT=1 | 将 FR/ES 测试从严格降级为仅警告(仅供调试)。 |
HIBIKI_MODEL_ID=<repo> | 覆盖默认的 aufklarer/Hibiki-Zero-3B-MLX-4bit 模型 ID。 |
性能(M2 Max,MLX 4-bit)
| 指标 | 贪心 | 采样 |
|---|---|---|
| 每步延迟 | ~75 ms | ~95 ms |
| 3.54 秒法语源的挂钟时间 | ~5 秒 | ~7 秒 |
| 输出时长 | 1.0–1.6× 源时长 | 1.0–1.6× 源时长 |
已知限制
translateStream()只发射单个最终块。流式入口当前只是对离线translate()的封装。真正的逐块 Mimi 流式解码是 v2 的后续工作。- 无 SentencePiece 文本解码器。
--transcript参数会打印原始 token ID。SPM 解码接入是后续工作。 - 采样模式明显比贪心模式更嘈杂。如需可复现运行,请使用
HIBIKI_GREEDY=1。 - 仅量化版本。该仓库当前提供 Zero-3B 4-bit 和 8-bit;1B 和 2B 的 Hibiki 变体存在于转换器中(
models/hibiki/export/convert.py),但 Swift 驱动针对的是 Zero-3B 的 GQA + rope_concat + 无条件布局。
参考资料
- 论文:High-Fidelity Simultaneous Speech-to-Speech Translation(Kyutai,2025)
- 上游代码:kyutai-labs/hibiki
- 样本:kyutai/hibiki-zero-samples
- 许可证:CC-BY-4.0