
话接上篇:
其中,MiniCPM-o 是唯一带视频帧、且中文能用的那一个。
于是,我把它接进来了。
今日分享,聊聊背后的思考和取舍。
01 为什么是 MiniCPM-o
1.1 它是什么
Github 地址:https://github.com/OpenBMB/MiniCPM-V
MiniCPM-o 4.5 是面壁智能开源的全模态模型,2026 年 2 月放出来,9B 参数。
"全模态":文本、图像、音频吃进去,文本和语音吐出来。

在开源阵营里,能"边听边说"的全双工实时语音模型只有两个------Moshi 和它。
Moshi 是先行者,但纯音频、以英法为主,中文场景直接搞不定。
MiniCPM-o 是唯一同时带视频帧、且中文可用的那一个,权重和代码 Apache-2.0 开源。
1.2 它怎么做到"边听边说"
普通语音模型是回合制:你说完 → 它想 → 它说 → 你听。
哪怕端到端、哪怕低延迟,它也得等你把话说完才接。
全双工不一样:它把"听"和"说"当成两条同时进行的流,模型一边生成语音,一边持续吃你的输入。
谁先开口、要不要停、要不要接话,是每秒做很多次决策的结果,而不是等静音攒够才反应。
MiniCPM-o 做到这点,靠的不是把 ASR、LLM、TTS 三段拼起来。
它是一个端到端模型:视觉(SigLIP2)、音频理解(Whisper)、语音合成(CosyVoice2、Step-Audio2 提供 tokenizer 与声码)、大脑(Qwen3-8B)四个模块,在 token 级用隐藏状态直连成一个系统。

真正让它"边听边说"的,是那套时分复用机制------把并行的音频、视频、文本流,按毫秒对齐到同一条时间轴,切成小时间片里的信息组,让大脑主干同时处理"进"和"出"。
于是输入流(视频 + 音频)和输出流(语音 + 文本)互不阻塞:它能同时看、听、说。
这也是它能"主动"的原因:模型每秒判断一次要不要开口,看到该提醒的就提醒,不用你问。
落到听感上:16k 单声道进,24k 出,中间没有"转成文字再转回来"这一刀。
所以你听到的不是 TTS 拼出来的机械音,节奏像真人。
此外,系统提示里除了文字,还带一段"音频系统提示",给一句参考音频,它就能零样本克隆那个声音(注:实测音色不稳定)。
02 全双工实测
为了方便体验,我们已经接进了千流云,地址:
2.1 音频通话与随时打断
打开网页,选"全双工模型",点开始。
体验上最直观的一点:它说话时你可以随时打断 ,不用等它把一句话说完。
2.2 视频全双工
点一下相机按钮,进入视频全双工。
每秒从摄像头抓一帧,降采样到 320×240、压成 JPEG,随音频一起上行;网关把最新一帧,和下一帧音频,一起送进模型。
也就是 1 帧/秒。
你拿手机对着一道题、一个零件、一块屏幕,问它"这是什么、怎么弄",它看得懂,也能直接念出来。
2.3 扩展能力:双路字幕
MiniCPM-o 模型不带语音识别能力,也即不会返回用户的音频转写内容。
所以用户侧字幕是我们自己接的:旁挂一路实时 ASR,专门转写你的声音,不影响对话主链路。
实时对话时,屏幕上走两条字幕:你说的话,和 AI 说的话------模型本来就吐 output_text.delta,直接上屏。
2.4 扩展能力:跨会话记忆
今天你告诉它"我住杭州",明天它自己会提。
机制很朴素:会话开始时,把记忆库里的内容拼进 system_prompt;会话结束后,把双方的文字稿喂给记忆模块,挑出值得记的写回去。
这个跨会话记忆,是一个独立能力,体验地址在:https://mem.qlcloud.top

开不开、用哪个大脑,由你决定。
对话结束,由模型主动写入记忆库:

2.5 模型缺陷:不会调工具
这是 MiniCPM-o 最大的短板。
公开的 Realtime 协议里,根本没有定义 function-call 事件。
连带着,工具调用、文字输入、历史恢复、记忆写入、后台委派------凡是挂在 function calling 上的能力,整体不可用。
03 办事交给级联
要它查个资料、办个事,就彻底没戏了?
为此,我们走了另一条路,把工具调用接进了级联模型。

3.1 链路与打断
级联是 VAD → ASR → LLM → TTS 拼出来的链路。
轮次靠 ASR 自带的 VAD 断句------它检测到你说完一句,自动吐终稿。
当然,实时打断也在:ASR 一检出你的新语音,立刻取消当前正在合成的 TTS 流。
所以,级联模式保留了随时打断能力。
你也能插话,只是底层是一轮一轮的实现,有轮次感。
3.2 工具怎么接
级联的大脑是 LLM,工具调用是它的看家本领。
联网搜索、长期记忆、知识库问答,都能挂进来。
而且调用过程在字幕里看得见,比如 "调用工具 web_search..." → "工具 web_search 完成"

这一路是"会干活的语音助手",所以我们把音色克隆也开放出来了,你可以定制自己的音色,体验地址在:

3.3 代价诚实说
级联不是免费的午餐,两个缺陷要摊开讲:
• 有轮次感:它毕竟一轮一轮的,双讲(你和它同时说)和噪声环境下,不如全双工顺。
• 噪声会误触发:VAD 判轮次,电视声、旁人说话都可能被当成"你开口了"而误打断,得调高检测阈值或播放期闭麦缓解。
04 选型与接入
4.1 怎么选
一句话:对话本身就是产品,走全双工;要它查东西、办事的,走级联。
• 口语陪练、陪伴、视觉辅助、硬件入口 → 全双工
• 查资料、办业务、知识问答 → 级联
4.2 API 接入
API 接入,支持以上两种模式,同一个端点,用 mode 参数区分:
bash
wss://api.qlcloud.top/gateway/live/v1/realtime?mode=duplex|cascade
上行 PCM16 16k 音频流,下行 PCM16 24k 音频 + 字幕 / 事件。
• 全双工:vision=1 开视频帧,asr=模型id 选用户侧字幕
• 级联:voice 选音色,llm 选大脑,tools=search,memory,kb 开工具组,bank 挂记忆
一个 key 同时只能跑一路;单会话最长 120 分钟。
完整协议、错误码、示例代码都在 live.qlcloud.top 的接入文档里。
SECTION 05写在最后
本文分享了我们对 MiniCPM-o 的理解和取舍,以及它在千流云的接入方式。
想直接上手试,欢迎来: