背景:
逛github时发现了小智这个开源项目,看到他的AI实时语音交互能力,感觉非常有趣,作为一个Java开发者,于是就想用java中的相关技术来实现AI实时语音的交互功能。
1.java相关框架及组件介绍
项目代码中,涉及到AI实时语音交互的技术,使用了SpringBoot、Websocket、SpringAI、redis、Opus、vad、FunASR、edge-TTS等技术
SpringBoot:java开发者都知道的企业级开发框架,功能是自动配置+ 起步依赖 + 内置tomcat
websocket:一种双向通信协议,用于和前端(web端、安卓端)进行实时通信,相互传输文本信息和二进制语音数据
SpringAI:让java再次伟大的springAI框架,用于快速集成各种AI大模型(千问、智谱等)
redis:缓存数据库,在本项目中主要是用来存储和大模型的会话记忆
Opus:音频的一种格式,和安卓端进行websocket交互时,Opus格式是最适合流式传输的音频格式。
Vad:声音活动检测,通过vad可以判断用户是否在说话,当用户停止说话时,让大模型响应并进行语音合成
FunAsr:语音识别能力,docker本地部署后,传输音频流进行实时语音转文字的识别
Edge-TTS:语音合成能力,大模型响应后,将大模型响应的文字进行语音合成,生成音频文件。
2.前后端交互整体示意图
最终效果:
3.代码截图
具体项目代码不好开源,如下是部分代码截图