快速开始
前提条件
- 已在 ZEGO 控制台 创建项目,并申请有效的 AppID 和 AppSign,详情请参考 控制台 - 项目信息。
- 已联系 ZEGO 技术支持开通云端语音识别服务。
- 已在客户端集成 ZEGO Express SDK并实现视频通话或者语音通话。
使用步骤
使用实时语音识别服务的核心步骤如图蓝色块标注步骤所示。在您的业务后台调用开启云端实时语音识别接口后,云端实时语音识别后台会识别房间内所有音频流,通过提前配置好的回调地址将识别结果回调给您的业务后台。
如果您需要实现实时字幕等需要在客户端显示识别内容的场景,您需要将识别结果通过 RTC 推送自定义消息接口或自建推送服务传递给客户端。
注意
请联系 ZEGO 技术支持配置接收识别结果的回调地址。
注意
如果 RTC 房间 120 秒后没有真实用户存在,则云端实时语音识别服务会自动停止,并触发 Event 为 Exception 的回调,Data.Code 为 1202。
示例代码
以下是服务端相关接口和回调的示例代码(Node.js):
const https = require('https');
const querystring = require('querystring');
const data = JSON.stringify({
"RoomId": "room_1",
"ASR": {
"HotWord": "三支一扶|10",
"Params": {
"engine_model_type": "16k_zh"
},
"VADSilenceSegmentation": 500
}
});
const params = {
Action: 'StartRealtimeASRTask',
AppId: '1234567890',
SignatureNonce: 'vecj0mc2jcl',
Timestamp: '1753691152',
Signature: 'e8032aabe7702091b0bb2ca83cc2f98a',
SignatureVersion: '2.0'
};
const options = {
hostname: 'cloud-realtime-asr-api.zegotech.cn',
path: '/?' + querystring.stringify(params),
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Content-Length': Buffer.byteLength(data)
}
};
const req = https.request(options, (res) => {
let responseData = '';
res.on('data', (chunk) => {
responseData += chunk;
});
res.on('end', () => {
console.log('Response:', JSON.parse(responseData));
});
});
req.on('error', (error) => {
console.error('Error:', error);
});
req.write(data);
req.end();
通过 RTC 推送自定义消息接口收发识别结果
- 服务端接口请参考推送自定义消息
- 客户端接口请参考各端的 API 接口说明:
平台 | ZegoExpress SDK |
---|---|
iOS/macOS | onIMRecvCustomCommand |
Android | onIMRecvCustomCommand |
Windows | onIMRecvCustomCommand |
Web | IMRecvCustomCommand |
服务端及客户端收发示例代码
// 将消息发送给客户端的函数
function sendMessageToClient(roomId, message) {
const https = require('https');
const querystring = require('querystring');
// 构建请求参数
const params = {
Action: 'SendCustomCommand',
AppId: '1234567890', // 替换为您的 AppId
SignatureNonce: 'vecj0mc2jcl',
Timestamp: Math.floor(Date.now() / 1000).toString(),
SignatureVersion: '2.0',
RoomId: roomId,
FromUserId: 'ASR_System', // 系统发送方ID
// !focus
MessageContent: encodeURIComponent(JSON.stringify(message))
// 不填写 ToUserId,消息会广播给房间内所有用户
};
// 计算签名(实际使用时需要根据您的 AppSign 计算)
// params.Signature = calculateSignature(params, appSign);
params.Signature = 'your_calculated_signature';
const options = {
hostname: 'rtc-api.zego.im',
path: '/?' + querystring.stringify(params),
method: 'GET',
headers: {
'Accept': 'application/json'
}
};
const req = https.request(options, (res) => {
let responseData = '';
res.on('data', (chunk) => {
responseData += chunk;
});
res.on('end', () => {
const result = JSON.parse(responseData);
if (result.Code === 0) {
console.log('消息发送成功:', roomId);
} else {
console.error('消息发送失败:', result.Message);
}
});
});
req.on('error', (error) => {
console.error('发送消息错误:', error);
});
req.end();
}
客户端最佳配置实践
为获得最佳的识别效果,建议您在客户端使用 ZEGO Express SDK 时进行如下配置:
说明
其他端的的配置请联系 ZEGO 技术支持了解详情。