写了个AI Agent服务端
内容提要
本文总结了作者开发语音终端的过程,旨在将智能音响的语音输入转发给大模型deepseek。作者使用ESP32-S3开发板,设计了服务端程序,并应用了VAD、ASR和嵌入向量模型等技术,实现了语音识别和文本转语音功能。尽管面临延迟和模型限制,作者仍在探索大模型的应用。
关键要点
-
作者开发语音终端的目的是将智能音响的语音输入转发给大模型deepseek。
-
使用ESP32-S3开发板,设计了服务端程序,应用了VAD、ASR和嵌入向量模型等技术。
-
作者在寻找合适的方案时,发现了开源的xiaozhi-esp32项目。
-
服务端程序的内存限制设定为100MB,选择了自定义网络框架以适应大模型调用。
-
VAD模型用于静音检查,ASR服务用于语音识别,嵌入向量模型用于召回相关聊天记录。
-
使用redis-stack持久化聊天记录,并设置了记忆遗忘功能。
-
大模型的使用降低了延迟和成本,作者使用了Azure TTS服务将文字转换为语音。
-
作者对大模型的应用进行了反思,发现其在复杂对话场景中的表现不佳,尤其是在需要多轮对话的情况下。
延伸解读
语音终端的设计挑战
在开发语音终端时,内存限制是一个重要的考量。作者将内存限制设定为100MB,这直接影响了所能使用的模型和技术选择。为了适应这一限制,作者选择了自定义网络框架,并将非业务逻辑功能独立处理,这样可以在找到更合适的解决方案时进行替换。
大模型的应用局限性
尽管大模型在语音识别和文本生成方面表现出色,但在复杂对话场景中,尤其是需要多轮对话的情况下,其表现并不理想。作者的实验显示,简单的问答模式能够正常运行,但在需要互动和反馈的场景中,模型的指令遵从性显著下降,导致对话质量不佳。
技术选型与成本控制
在选择技术方案时,作者考虑了成本和延迟问题。例如,使用腾讯的ASR服务和Azure的TTS服务来降低费用,但也面临延迟高的问题。这提醒开发者在技术选型时,不仅要关注功能实现,还需综合考虑成本和用户体验。
延伸问答
作者开发语音终端的主要目的是什么?
作者的主要目的是将智能音响的语音输入转发给大模型deepseek,以便让家里的小朋友体验大模型的便利。
在开发过程中,作者使用了哪些技术?
作者使用了VAD、ASR和嵌入向量模型等技术来实现语音识别和文本转语音功能。
作者选择ESP32-S3开发板的原因是什么?
作者选择ESP32-S3开发板是因为它可以满足开发语音终端的需求,并且有现成的开源项目可供参考。
服务端程序的内存限制是多少?
服务端程序的内存限制设定为100MB。
作者对大模型在复杂对话场景中的表现有何看法?
作者认为大模型在复杂对话场景中的表现不佳,尤其是在需要多轮对话的情况下。
作者使用了哪种服务将文字转换为语音?
作者使用了Azure TTS服务将文字转换为语音。