this.wsManager.sendAudioChunk(item.base64EncodedAudioDelta)发送完成音频后,为什么智能体解析音频的content是空
我的音频发送代码
// 上传音频到智能体
const base64Data = e.target.result.split(',')[1]; // 去掉 data:audio/mpeg;base64, 前缀
const binaryString = atob(base64Data); // Base64 转二进制字符串
console.log("转换后的 binaryString:",binaryString);
const arrayBuffer = new ArrayBuffer(binaryString.length);
console.log("转换后的 arrayBuffer:",arrayBuffer);
const uint8Array = new Uint8Array(arrayBuffer);
for (let i = 0; i < binaryString.length; i++) {
uint8Array[i] = binaryString.charCodeAt(i);
}
const chunksData = this.chunkAndEncodeBase64(arrayBuffer)
console.log("转换后的 chunksData:",chunksData);
// 流式提交音频
for (let index = 0; index < chunksData.length; index++) {
let item = chunksData[index];
this.wsManager.sendAudioChunk(item.base64EncodedAudioDelta)
}
// 提交音频完成
this.wsManager.sendAudioComplete()
// 转base64EncodedAudioDelta
chunkAndEncodeBase64(arrayBuffer,CHUNK_SIZE=1024) {
const chunks = [];
let offset = 0;
while (offset < arrayBuffer.byteLength) {
const chunk = arrayBuffer.slice(offset, offset + this.CHUNK_SIZE);
const base64 = this.arrayBufferToBase64(chunk);
// console.log('base64--------------------',base64);
chunks.push({
base64EncodedAudioDelta: base64,
index: offset / this.CHUNK_SIZE, // 分片序号(可选)
isLast: offset + this.CHUNK_SIZE >= arrayBuffer.byteLength // 是否最后一片
});
offset += this.CHUNK_SIZE;
}
return chunks;
}
WebSocket.js配置
// 初始化连接
connect() {
// 创建新连接(携带Token)
this.socketTask = uni.connectSocket({
url: this.url,
header: {
Authorization: `Bearer ${this.token}`
}, // 关键:Header传Token
success: () => console.log("WebSocket连接创建中..."),
fail: err => console.error("连接创建失败:", err)
});
this.socketTask.onMessage(res => {
this.handleMessage(res.data); // 消息处理
});
}
// 发送音频配置(可选步骤)
sendAudioConfig() {
const config = {
"id": "event_id",
"event_type": "chat.update",
"data": {
"input_audio": { // 输入音频格式
"format": "pcm", // 输入音频格式,支持 pcm/wav/ogg。默认 wav
"codec": "pcm", // 输入音频编码。 pcm/opus。默认 pcm
"sample_rate": 24000, // 采样率
"channel": 1, // 通道数
"bit_depth": 16 // 位深
},
"output_audio": { // 输出音频格式
"codec": "pcm",
"pcm_config": {
"sample_rate": 16000, // 默认 24000
"frame_size_ms": 50,
"limit_config": {
"period": 1,
"max_frame_num": 22
}
},
"speech_rate": 0, // 回复的语速,取值范围 [-50, 100],默认为 0,-50 表示 0.5 倍速,100 表示 2倍速
"voice_id": "7426720361733046281"
}
}
}
this.send(config);
}
// 发送音频分块数据
sendAudioChunk(base64Data) {
const event = {
id: this.generateUUID(),
event_type: "input_audio_buffer.append",
data: {
delta: base64Data
}
};
// console.log('event=--------', base64Data);
this.send(event);
}
// 标记音频输入完成
sendAudioComplete() {
const event = {
id: this.generateUUID(),
event_type: "input_audio_buffer.complete"
};
this.send(JSON.stringify(event));
}
// 发送消息
send(data) {
if (!this.isConnected) {
console.warn("连接未就绪,消息丢弃");
return;
}
const payload = typeof data === 'string' ? data : JSON.stringify(data);
this.socketTask.send({
data: payload
});
}
// 接收消息
handleMessage(data) {
try {
const msg = JSON.parse(data);
console.log('获取消息msg', msg);
// 处理服务端返回的各种事件
switch (msg.event_type) {
...
}
} catch (e) {
console.error("消息处理失败", e);
}
}
chunksData打印为

智能体返回的消息
