[聆通AI]独立开发半年的端侧AI语音助手:端侧推理的技术实践
MNN 端侧推理、Sherpa-ONNX 本地语音、FFmpeg 视频处理——一个人从零开始构建隐私优先的AI助手
前言
2024年底我开始思考一个问题:当我们在使用AI助手时,我们的对话数据去了哪里?
绝大部分AI助手依赖云端接口,每一次对话、每一段录音都要上传到服务器处理。这种方式能力强大,但也意味着用户必须信任服务商的数据处理承诺。
有没有另一种可能——核心AI能力在本地运行,数据不出设备?
半年后,聆通AI 诞生了。这不是一个比云端AI更强的产品,而是一个走不同路线的产品:端侧推理 + 隐私优先。语音识别、大模型推理、语音合成,全部可以在本地完成。
一个人,从架构设计到UI实现,从MNN模型集成到FFmpeg水印处理,把这条路走通了一遍。
一、整体架构
┌─────────────────────────────────────────┐
│ UI Layer │
├─────────────────────────────────────────┤
│ Service Layer │
│ AiCallDialog / ChatManager / Payment │
├──────────────────┬──────────────────────┤
│ 端侧推理(核心) │ 云端扩展(可选) │
│ ┌────────────┐ │ ┌────────────────┐ │
│ │ MNN LLM │ │ │ API Models │ │
│ │ Sherpa ASR │ │ │ ImageGen API │ │
│ │ Sherpa TTS │ │ │ VideoGen API │ │
│ └────────────┘ │ └────────────────┘ │
├──────────────────┴──────────────────────┤
│ Data Layer │
│ SQLite / SharedPreferences │
│ File Storage / FFmpeg Processing │
└─────────────────────────────────────────┘
核心设计原则:本地优先,云端可选。基础对话能力完全离线运行,高级创作能力通过API扩展,用户自主选择。
二、为什么做端侧AI
隐私是首要考虑。
云端AI的使用流程是:录音 → 上传 → 服务器处理 → 返回结果。用户的所有语音数据都要经过网络传输和第三方服务器处理。
端侧AI的流程是:录音 → 本地处理 → 返回结果。数据不离开设备,不存在传输泄露、服务端泄露的风险。
这不是说云端AI不好——云端模型能力更强、更新更快。端侧AI和云端AI是不同场景下的选择:重隐私场景适合端侧,重能力场景适合云端。
聆通AI同时支持两种模式,用户可根据需要自由切换。

三、端侧推理引擎选型:MNN
对比过三套主流方案:
| 维度 | TFLite | NCNN | MNN |
|---|---|---|---|
| Transformer 算子优化 | 一般 | 一般 | ✅ 汇编级优化 |
| 量化模型支持 | ✅ | ✅ | ✅ |
| 内存占用 | 较高 | 中等 | ✅ 较低 |
| Android 集成 | ✅ | 中等 | ✅ |
| 社区活跃度 | ✅ | 中等 | 中等 |
选择 MNN 的主要原因是它对 Attention、LayerNorm 等 Transformer 算子做了汇编级优化,在移动端推理速度上有优势,且内存占用控制得较好。
注意事项: ONNX 转 MNN 时 opset version 建议用 12-15,超出范围可能导致算子转换失败。先用 onnx-simplifier 简化模型再转换会更稳妥。

四、本地语音流水线
基于 Sherpa-ONNX 实现端到端的本地语音处理:
[用户说话] → [AudioRecord] → [VAD] → [ASR(本地)] → [LLM(本地)] → [TTS(本地)] → [AudioTrack]
所有环节均在设备本地完成,无网络请求,无数据上传。
流式处理
ASR 采用流式识别,2048 samples/帧,边采集边识别,端到端延迟约 1-2s。
打断机制
当前只支持手动打断。
延迟实测
| 环节 | 延迟 |
|---|---|
| ASR 首帧 | ~200ms |
| 端侧 LLM 首 token | 300-500ms |
| TTS 合成 | ~100ms |
| 端到端 | 1-2s |
坑: 部分机型上 AudioRecord 偶尔返回空帧,导致误判为静音。解决方案是加能量阈值 + 连续非静音帧数双重判断。

五、模型管理
聆通AI支持两类模型:
- 端侧模型(
type: preset)— MNN格式,本地推理,离线可用,数据不离开设备 - API 模型(
type: api)— 远程调用,能力更强,适合需要大模型能力的场景
配置统一在 model_market.json 中管理:
{
"models": [
{
"modelName": "Qwen3.5-2B-MNN",
"type": "preset",
"category": "system_preset"
},
{
"modelName": "agnes-2.0-flash",
"type": "api",
"category": "api_service",
"api_config": {
"base_url": "...",
"model_name": "agnes-2.0-flash",
"max_tokens": 8192
}
}
]
}
隐私说明: 端侧模型模式下,所有数据在本地处理,不会发送到任何服务器。API 模式则由用户主动选择,数据经由用户配置的 API 地址传输。
六、视频水印:FFmpeg 实践
依赖选择
使用 com.arthenica:ffmpeg-kit-full-gpl:6.0-2.LTS(注意不是 com.antonkarpenko 版本,后者 Java package 不一致)。
implementation 'com.arthenica:ffmpeg-kit-full-gpl:6.0-2.LTS'
水印动画
| 模式 | 效果 |
|---|---|
| scroll-x | 水平滚动 |
| scroll-y | 垂直滚动 |
| bounce | 弹跳 |
| random | 随机移动 |
注意事项
- drawtext 的 y 坐标是 baseline 位置,需要加
fontSize + 10偏移 - TTC 字体用
:index=0指定子集 - 可变字体用
:fontvariations=wght=700控制粗细
七、UI 设计
- 自定义 Dialog 样式:通过
alertDialogTheme注入全局圆角主题 - 导航简化:模型分类用 Spinner 下拉替代两行 TabLayout
- 中文渲染:内嵌 NotoSansSC 可变字体,确保各设备显示一致
八、内测招募
App 已进入内测阶段,正在寻找第一批真实用户。
当前功能
- AI 语音通话(端侧运行,数据不上传)
- 多模型聊天(端侧 + 可选 API)
- 图片生成与编辑
- 视频生成(自定义水印)
- 微信支付
- 创作管理与收藏
内测说明
- 内测期间 免费使用全部功能
- 直接和开发者交流,反馈会被优先处理
- 正式版上线后,内测用户赠送额外时长
参与方式
目前 APK 已打包好,诚邀你帮忙测试:
✅ AI语音对话(像打电话一样自然)
✅ 端侧推理,隐私安全,断网也能用
✅ 支持 AI 通话、语音问答
👉 下载链接(蒲公英):https://www.pgyer.com/lingtongai
👉 测试反馈:直接微信我
如果你对 AI 产品感兴趣、或者单纯想尝个鲜,都欢迎来试一下。提前感谢你的时间!🙏
扫码加入内测群,下载 APK 即可体验。
端侧AI和云端AI不是对立关系,而是不同场景下的不同选择。聆通AI的选择是:把隐私的主动权还给用户。
欢迎来体验,也欢迎在评论区交流技术问题。
更多推荐



所有评论(0)