跳到主要内容

AI 智能流式语音识别

该功能支持在音视频通话、音视频会议、语聊房以及直播等多种场景下实时转写音频内容。此 AI 智能流式语音识别具有高准确率和低延迟的特点。

目前支持超过 50 种语言的识别,包括中文、英文、日语、韩语、阿拉伯语、法语、西班牙语、泰语、印尼语等,详见语言代码列表

前置条件

AI 智能流式语音识别是融云 RTC SDK 的高级功能。若要使用,请在 AI 服务的服务购买页面开通此功能。

设置源语言

加入房间时,可以通过配置 IJoinRTCRoomOptions 中的 srcLanguage 参数设置源语言。具体支持的语言请参考语言代码列表

提示

为提高语音识别的准确度,请根据您的业务需求设置合适的源语言。默认源语言为中文。

参数说明

参数类型说明
srcLanguagestring语音识别的源语言代码,请参考语言代码列表

示例代码

TypeScript
  rtcClient.joinRTCRoomWithOptions(roomId, {
srcLanguage: 'zh'
});

注册语音识别事件通知

加入房间成功后,可以通过 RCRTCRoom#registerRoomListener 方法设置语音识别的相关通知事件,包括以下:

TypeScript
  room.registerRoomListener({
/**
* 语音识别服务开启通知
* 如需要语音识别内容和语音实时翻译,可在此时机依次调用 room 的:
* - setEnableASR 方法:设置是否接收语音识别内容,语音识别内容通过 `onReceiveASRContent` 回调返回
* - startRealtimeTranslation 方法:开启语音实时翻译,实时翻译内容通过 `onReceiveRealtimeTranslationContent` 回调返回
*/
onReceiveStartASR() {
console.log('语音识别服务开启');
},
/**
* 语音识别服务停止通知
*/
onReceiveStopASR() {
console.log('语音识别服务关闭');
},
/**
* 语音识别内容回调
* @param asrContent
*/
onReceiveASRContent(asrContent: RCRTCASRContent) {
console.log('onReceiveASRContent', asrContent);
},
})

语音识别数据结构

RCRTCASRContent

参数类型说明
userIdstring当前语音识别关联用户的 ID
msgIdstring当前语音识别的 ID,用于关联当前语音识别结果
timeUTCnumber当前语音识别的时间戳(单位:秒)
msgstring当前语音识别结果
isEndboolean当前语音识别是否结束,true 表示已结束

开启语音识别服务

加入房间成功后,可以调用 RCRTCRoom#startASR 开启语音识别服务。

开启成功后,房间内其他成员会通过 IRCRTCRoomEventsListener#onReceiveStartASR 方法收到语音识别服务开启的通知。

注意

任何加入房间的人员都可以调用此接口开启语音识别服务。SDK 不限制调用权限,请根据您的业务需求进行权限控制。

示例代码

TypeScript
  const { code } = await room.startASR();

设置是否接收语音识别内容

加入房间成功后,可以调用 RCRTCRoom#setEnableASR 设置是否接收语音识别内容。

提示

此接口具有预设功能。您可以在房间开启语音识别服务前调用,当服务开启后,SDK 会根据您的设置自动接收语音识别结果。如果选择接收,SDK 会通过 IRCRTCRoomEventsListener#onReceiveASRContent 事件通知语音识别结果。

参数说明

参数类型说明
enablebooleantrue:接收语音识别
false:停止接收语音识别

示例代码

TypeScript
  room.setEnableASR(true);

停止语音识别服务

加入房间成功后,可以调用 RCRTCRoom#stopASR 停止语音识别服务。

注意
  • 停止语音识别服务生效后,房间内所有人都会收不到语音识别内容,请谨慎使用。
  • 任何加入房间的人员都可以调用此接口停止语音识别服务。SDK 不限制调用权限,请根据您的业务需求进行权限控制。
  • 停止成功后,SDK 会通过 IRCRTCRoomEventsListener#onReceiveStopASR 回调方法通知房间内其他人员。

示例代码

TypeScript
  room.stopASR();