AI 智能流式语音识别
该功能支持在音视频通话、音视频会议、语聊房以及直播等多种场景下实时转写音频内容。此 AI 智能流式语音识别具有高准确率和低延迟的特点。
目前支持超过 50 种语言的识别,包括中文、英文、日语、韩语、阿拉伯语、法语、西班牙语、泰语、印尼语等 ,详见语言代码列表。
前置条件
AI 智能流式语音识别是融云 RTC SDK 的高级功能。若要使用,请在 AI 服务的服务购买页面开通此功能。
设置源语言
在发起通话后或接听通话前,拿到通话 session时,需立马调用 RCCallSession#setSrcLanguageCode 接口设置源语言。具体支持的语言请参考语言代码列表。
提示
为提高语音识别的准确度,请根据您的业务需求设置合适的源语言。默认源语言为中文。
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
srcLanguageCode | string | 语音识别的源语言代码,请参考语言代码列表。 |
示例代码
TypeScript
session.setSrcLanguageCode('zh');
注册语音识别结果回调
在发起通话或接听通话前,您需要调用 RCCallSession#registerCallASRListener 设置语音识别结果回调。通过此回调,您可以接收以下通知:
- 语音识别服务的开启和停止
- 语音识别结果
语音识别数据结构
RCRTCASRContent
| 参数 | 类型 | 说明 |
|---|---|---|
userId | string | 当前语音识别关联用户的 ID |
msgId | string | 当前语音识别的 ID,用于关联当前语音识别结果 |
timeUTC | number | 当前语音识别的时间戳(单位:秒) |
msg | string | 当前语音识别结果 |
isEnd | boolean | 当前语音识别是否结束,true 表示已结束 |
示例代码
TypeScript
session.registerCallASRListener({
/**
* 语音识别服务开启通知
* 如需要语音识别内容和语音实时翻译, 可在此时机依次调用 session 的
* setEnableASR 方法,设置房间内的语音识别资源为可用,语音识别内容通过 `onReceiveASRContent` 回调给业务层
* startRealtimeTranslation 方法,开启语音实时翻译,实时翻译内容通过 `onReceiveRealtimeTranslationContent` 回调给业务层
*/
onReceiveStartASR() {
// 处理语音识别服务开启事件
},
// 语音识别服务停止通知
onReceiveStopASR() {
// 处理语音识别服务停止事件
},
// 语音识别内容回调
onReceiveASRContent(asrContent: RCRTCASRContent) {
// 处理语音识别结果
}
})
开启语音识别服务
通话接通后,可以调用 RCCallSession#startASR 方法开启语音识别服务。开启成功后,其他客户端会通过 IRCCallASRListener#onReceiveStartASR 方法收到通知。
注意
任何加入通话的客户端都可以调用此接口开启语音识别服务。SDK 不限制调用权限,请根据您的业务需求进行权限控制。
接口定义
TypeScript
/**
* 开启语音识别服务
*
* @returns 返回值为 RCCallErrorCode.SUCCESS 时,代表成功
*
* @description
* 语音识别功能依赖会话的音频流,
* 语音识别服务开启后且会话中有音频流时,sdk 会通过 `onReceiveStartASR` 通知业务层,代表真正开启成功
*/
startASR(): Promise<RCCallErrorCode>
示例代码
TypeScript
session.startASR();
设置是否接收语音识别
通话建立连接成功后,可以调用 RCCallSession#setEnableASR 方法来设置是否 接收语音识别。
提示
开启语音识别服务后,可以根据业务需求选择是否接收语音识别结果。如果选择接收,SDK 会通过 IRCCallASRListener#onReceiveASRContent 回调方法通知识别结果。
接口定义
TypeScript
/**
* 设置是否接收语音识别
*
* @param enable true 打开,false 关闭
* @returns 返回值为 RCCallErrorCode.SUCCESS 时,代表成功
*
* @description
* 默认关闭语音识别功能,开启后会在通话过程中自动识别用户语音并转换为文字。
*/
setEnableASR(enable: boolean): Promise<RCCallErrorCode>
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
enable | boolean | true:接收语音识别false:停止接收语音识别 |
示例代码
TypeScript
session.setEnableASR(true);
停止语音识别服务
您可以调用 RCCallSession#stopASR 方法停止语音识别服务。
注意
- 停止语音识别服务生效后,所有房间内的所有语音流撰写任务都将停止,请谨慎使用。
- 任何加入通话的客户端都可以调用此接口停止语音识别服务。SDK 不限制调用权限,请根据您的业务需求进行权限控制。停止成功后,SDK 会通过 IRCCallASRListener#onReceiveStopASR 回调方法通知其他客户端。
接口定义
TypeScript
/**
* 停止语音识别服务
*
* @returns 返回值为 RCCallErrorCode.SUCCESS 时,代表成功
*
* @description
* 停止语音识别服务。
*/
stopASR(): Promise<RCCallErrorCode>
示例代码
TypeScript
session.stopASR();