AI 智能流式语音识别
该功能支持在音视频通话、音视频会议、语聊房以及直播等多种场景下实时转写音频内容。此 AI 智能流式语音识别具有高准确率和低延迟的特点。
目前支持超过 50 种语言的识别,包括中文、英文、日语、韩语、阿拉伯语、法语、西班牙语、泰语、印尼语等,详见语言代码列表。
前置条件
AI 智能流式语音识别是融云 RTC SDK 的高级 功能。若要使用,请在 AI 服务的服务购买页面开通此功能。
设置源语言
在加入房间时,可以通过配置 IJoinRTCRoomOptions 中的 srcLanguage 参数设置源语言。具体支持的语言请参考语言代码列表。
为提高语音识别的准确度,请根据您的业务需求设置合适的源语言。默认源语言为中文。
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
srcLanguage | string | 语音识别的源语言代码,请参考语言代码列表。 |
示例代码
rtcClient.joinRTCRoomWithOptions(roomId, {
srcLanguage: 'zh'
});
注册语音识别事件通知
加入房间成功后,可以通过 RCRTCRoom#registerRoomListener 方法设置语音识别的相关通知事件,包括以下:
room.registerRoomListener({
/**
* 语音识别服务开启通知
* 如需要语音识别内容和语音实时翻译,可在此时机依次调用 room 的:
* - setEnableASR 方法:设置是否接收语音识别内容,语音识别内容通过 `onReceiveASRContent` 回调返回
* - startRealtimeTranslation 方法:开启语音实时翻译,实时翻译内容通过 `onReceiveRealtimeTranslationContent` 回调返回
*/
onReceiveStartASR() {
console.log('语音识别服务开启');
},
/**
* 语音识别服务停止通知
*/
onReceiveStopASR() {
console.log('语音识别服务关闭');
},
/**
* 语音识别内容回调
* @param asrContent
*/
onReceiveASRContent(asrContent: RCRTCASRContent) {
console.log('onReceiveASRContent', asrContent);
},
})
语音识别数据结构
RCRTCASRContent
| 参数 | 类型 | 说明 |
|---|---|---|
userId | string | 当前语音识别关联用户的 ID |
msgId | string | 当前语音识别的 ID,用于关联当前语音识别结果 |
timeUTC | number | 当前语音识别的时间戳(单位:秒) |
msg | string | 当前语音识别结果 |
isEnd | boolean | 当前语音识别是否结束,true 表示已结束 |
开启语音识别服务
加入房间成功后,可以调用 RCRTCRoom#startASR 开启语音识别服务。
开启成功后,房间内其他成员会通过 IRCRTCRoomEventsListener#onReceiveStartASR 方法收到语音识别服务开启的通知。
任何加入房间的人员都可以调用此接口开启语音识别服务。SDK 不限制调用权限,请根据您的业务需求进行权限控制。
示例代码
const { code } = await room.startASR();
设置是否接收语音识别内容
加入房间成功后,可以调用 RCRTCRoom#setEnableASR 设置是否接收语音识别内容。
此接口具有预设功能。您可以在房间开启语音识别服务前调用,当服务开启后,SDK 会根据您的设置自动接收语音识别结果。如果选择接收,SDK 会通过 IRCRTCRoomEventsListener#onReceiveASRContent 事件通知语音识别结果。
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
enable | boolean | true:接收语音识别false:停止接收语音识别 |
示例代码
room.setEnableASR(true);
停止语音识别服务
加入房间成功后,可以调用 RCRTCRoom#stopASR 停止语音识别服务。
- 停止语音识别服务生效后,房间内所有人都会收不到语音识别内容,请谨慎使用。
- 任何加入房间的人员都可以调用此接口停止语音识别服务。SDK 不限制调用权限,请根据您的业务需求进行权限控制。
- 停止成功后,SDK 会通过
IRCRTCRoomEventsListener#onReceiveStopASR回调方法通知房间内其他人员。
示例代码
room.stopASR();