higurashi-ai/Haru
机器学习全双工语音对话模型,边听边说,附带推理代码、网页演示和 Apple 芯片与 vLLM 实现。
项目介绍
Haru 是一个低延迟、多语言、全双工语音对话模型:它在听的同时也在说,接近打电话的交互方式。仓库提供 Haru-4B(预训练基座模型)的推理代码,包含三套实现(PyTorch、面向 Apple 芯片的 MLX、以及 vLLM-Omni 插件)和一个网页演示,面向希望试验实时语音交互的研究者和开发者,而不是寻找成品助手的普通用户。
模型以 133 ms 为一帧:每帧读入一帧用户音频,产出一帧自己的音频和文本;用户音频、模型音频和模型文本在语言模型中合成一个位置,因此听说互不等待。音频是每帧 64 维的隐变量,由一个小型 MLP 头一步采样生成,没有离散音频 token,也没有独立的音频 Transformer。文本卡片设定角色,短参考音频设定音色。
运行网页演示
前提:NVIDIA GPU,显存约 12 GB。
pip install -e ./haru
python -m haru.server --hf-repo higurashi-ai/Haru-4B
然后打开 http://localhost:8998,选择角色并提供参考音色,即可对话。浏览器只在 localhost 或 HTTPS 下开放麦克风权限。项目不自带音色片段,需要上传或录制目标音色:单人、3 秒到 3 分钟、语音干净;并且只能使用你有权使用的声音。为了低延迟,建议使用有线耳机和有线麦克风,蓝牙设备会额外增加 100 ms 以上延迟。
想让他人试用,可安装分享依赖(pip install -e "./haru[share]")后加 --share,服务器会打印一个公网 HTTPS 链接,流量经 Gradio 分享服务器中转。若要设置默认音色,把片段保存为 haru/haru/assets/voices/<language>.flac(如 en.flac)并重启服务器。
在 Python 中调用
DuplexSession 按帧驱动模型:start() 返回第 0 帧,之后每次以用户第 k 帧调用 step(),返回模型第 k + 1 帧;每次调用接收 24 kHz 的 3200 个采样,返回 3200 个采样。
from haru import DuplexSession, HaruModel
from haru.audio import load_audio, prepare_reference
model = HaruModel.from_pretrained("higurashi-ai/Haru-4B")
voice = prepare_reference(load_audio("voice.wav"))
session = DuplexSession(model, system_prompt=card, reference=voice)
frame = session.start()
while not frame.done:
frame = session.step(user_audio)
角色卡片使用固定格式,通过 render_card 生成。离线批处理可用 haru-inference user.wav reply.wav --reference voice.wav --system-prompt "$(cat card.txt)" --stereo 把一段录音转成回复。Apple 芯片上,MLX 实现包含原生 macOS 应用,参见构建说明;haru_vllm 可支撑大量并发会话,演示通过 --backend vllm --vllm-url http://localhost:8000 切换。
模型与使用约束
三套实现读取同一个 Haru-4B 检查点。NVIDIA GPU 上可选的 Triton 内核把音频编解码每帧耗时从约 6 ms 降到约 0.7 ms,通过 DuplexConfig(codec_backend="triton") 或 --codec-backend triton 启用;MLX 则用 Metal 内核加速 Gated DeltaNet 循环和编解码卷积。vLLM-Omni 服务面向需要大量并发、低延迟会话的 GPU 服务器。
Haru-4B 是面向研究的预训练基座模型:能进行自然对话,但不是可靠的事实来源,也不会像助手那样遵循指令。音色模仿仅限于你有权使用的片段。演示仅在 localhost 或 HTTPS 下开放麦克风;用 --share 分享时流量经过 Gradio 服务器。代码与权重采用 Apache-2.0,第三方组件见 THIRD_PARTY_NOTICES.md。
HotRepo 点评
Haru 以 101 Star、3 Fork 进入 HotRepo 新项目榜的 Python 语言榜,记录窗口为 2026-11-12 至 2026-11-13,这 101 个 Star 全部来自该窗口。目前仅有一条快照,只能说明初期关注度,不能判断趋势,也没有记录到全部语言日榜名次。对读者而言,它的特点是覆盖面:一个全双工语音模型同时提供 PyTorch、MLX 和 vLLM 服务路径以及演示,而不只是论文代码。实际使用前需要权衡的是基座模型在对话可靠性上的限制,以及音色克隆的授权边界。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。