前言
因为最近在公司做大模型相关的工作,前段时间就趁着兴头,挑了点空闲时间按照自己瞎想的思路实现了一个埃癸斯的语音助手DEMO(可能也不算助手吧,算是角色扮演?).先前演示和代码都已经放在B站和GitHub上了,就顺带也放到博客来吧。
视频演示
https://www.bilibili.com/video/BV1Dyf5YLE4p
代码仓库
https://github.com/CosineG/aegis-assistant
系统介绍
系统工作流程
- 语音活动检测(VAD):通过声音活动实时检测用户语音输入
- 音频采集:触发录音模块进行语音捕获
- 语音识别(ASR):将音频转换为文本
- 大模型处理(LLM):解析用户意图并生成回复
- 语音合成(TTS):将文本回复转换为语音输出
当前为循环对话模式,即程序启动后持续监听环境语音。
模型选用
语音识别
采用 fast-whisper large-v3 模型,多语言支持、识别准确率高。
大模型交互
选用 Deepseek V3 的官方 API(性价比高,但是现在因为 R1 爆火很不稳定)。
另外实现了:
- 流式输出:通过分块响应降低等待延迟。
- Function Calling:支持天气查询、音乐播放等扩展功能(需自定义实现)。
语音合成
选用GPT-SOVTIS(基于P3R解包语音数据集训练),在 RTX 4080 环境下训练和推理速度都很优异,相比下 Fish-Speech 训练周期较长,生成质量不佳。
针对长文本场景的语音延迟问题,采用分句级流式处理方案:
实时解析大模型流式输出,动态检测完整语义分句,后台线程并行生成语音,最终实现播放与生成的流水线作业。可在播放当前语句时即可预生成后续内容,显著提升交互流畅度。
扩展方向
- 智能家居集成:通过米家 Python SDK 实现设备控制。
- 离线部署优化:部署如 Qwen 2.5 14B 等大模型本地交互。