AI Agent智能体 - 实时多模态语音交互

功能概述

基于《JavaUtils系列 - 实时PCM音频播放器(RealtimePcmPlayer)》实现实时多模态语音交互系统,结合了音频输入、视觉输入和WebSocket通信功能。


相关依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dashscope-sdk-java</artifactId>
    <version>2.20.9</version>
</dependency>
<dependency>
    <groupId>com.googlecode.soundlibs</groupId>
    <artifactId>mp3spi</artifactId>
    <version>1.9.5.4</version>
</dependency>
<dependency>
    <groupId>org.java-websocket</groupId>
    <artifactId>Java-WebSocket</artifactId>
    <version>1.5.3</version>
</dependency>

整体架构

  • 语音对话:实时录音并发送到Omni模型

  • 视觉输入:通过WebSocket接收图片帧

  • 多模态交互:同时处理音频和图像输入


核心组件

1. WebSocket服务器 (WsktUtil)

class WsktUtil extends WebSocketServer {
    private static List<WebSocket> clients = new CopyOnWriteArrayList<>();
    private AtomicReference<String> imageFrameB64 = new AtomicReference<>();
}
  • 监听5000端口,接收客户端连接

  • 处理二进制消息(图片帧)并Base64编码存储

  • 使用线程安全的CopyOnWriteArrayList管理客户端连接

2. 主程序 (OmniWithCamera)

初始化配置
OmniRealtimeParam param = OmniRealtimeParam.builder()
    .model("qwen-omni-turbo-realtime-latest")
    .build();

配置Omni实时对话参数,使用通义千问Omni Turbo模型。

回调处理
new OmniRealtimeCallback() {
    @Override
    public void onEvent(JsonObject message) {
        // 处理各种事件类型
    }
}

关键事件处理:

  • session.created:会话创建

  • input_audio_transcription.completed:语音转文本完成

  • response.audio_transcript.delta:LLM文本响应片段

  • response.audio.delta:音频响应片段(播放语音)

  • input_audio_buffer.speech_started:VAD检测到语音开始

  • response.done:响应完成,输出性能指标

音频处理
AudioFormat audioFormat = new AudioFormat(16000, 16, 1, true, false);
TargetDataLine targetDataLine = AudioSystem.getTargetDataLine(audioFormat);
  • 采样率:16kHz

  • 样本大小:16位

  • 单声道录音

  • 实时读取音频数据并Base64编码发送

多模态数据流
// 发送音频
conversation.appendAudio(audioB64);

// 每500ms发送一次图片
if (EnableVisionInput && System.currentTimeMillis() - last_photo_time > 500) {
    String imageB64 = server.getImageFrameB64();
    if (imageB64 != null) {
        conversation.appendVideo(imageB64);
        last_photo_time = System.currentTimeMillis();
    }
}

工作流程

  1. 启动服务:WebSocket服务器和Omni连接

  2. 配置会话:启用音频、文本模态,配置语音合成和VAD

  3. 实时录音:持续采集音频并发送

  4. 视觉输入:定期从WebSocket获取图片帧并发送

  5. 响应处理:接收并播放语音响应,显示文本响应

  6. 性能监控:记录首包延迟等指标


技术特点

  • 实时性:低延迟的音频流处理

  • 多模态:同时支持语音和视觉输入

  • 模块化:清晰的组件分离

  • 可扩展:易于添加新的模态或功能


使用场景

适用于需要实时语音+视觉交互的应用,如:

  • 智能客服机器人

  • 多模态助手

  • 实时翻译工具

  • 视觉问答系统

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值