AI 智能流式语音识别
该功能支持在音视频通话、音视频会议、语聊房以及直播等多种场景下实时转写音频内容。此 AI 智能流式语音识别具有高准确率和低延迟的特点。
目前支持超过 50 种语言的识别,包括中文、英文、日语、韩语、阿拉伯语、法语、西班牙语、泰语、印尼语等,详见语言代码列表。
前置条件
AI 智能流式语音识别是融云 RTC SDK 的高级功能。若要使用,请提交工单开通此功能。
设置源语言
在加入房间时,您需要通过 RCRTCRoomConfig.Builder#setSrcLanguageCode 方法设置源语言。具体支持的语言请参考语言代码列表。
提示
为提高语音识别的准确度,请根据您的业务需求设置合适的源语言。默认源语言为中文。
RCRTCRoomConfig 参数说明
参数 | 类型 | 说明 |
---|---|---|
srcLanguage | String | 语音识别的源语言代码,请参考语言代码列表。 |
示例代码
Java
RCRTCRoomConfig config = RCRTCRoomConfig.Builder.create()
.setSrcLanguageCode("zh") // 设置源语言
.build();
RCRTCEngine.getInstance()
.joinRoom(
"roomId",
config,
new IRCRTCResultDataCallback<RCRTCRoom>() {
@Override
public void onSuccess(final RCRTCRoom data) {
// 加入成功
}
@Override
public void onFailed(final RTCErrorCode errorCode) {
// 加入失败
}
});
注册语音识别结果回调
在加入房间成功后,您可以通过 RCRTCRoom#registerRoomListener 方法设置语音识别结果回调。通过此回调,您可以接收以下通知:
- 语音识别服务的开启和停止
- 语音识别结果
语音识别数据结构
RCRTCASRContent
参数 | 类型 | 说明 |
---|---|---|
userId | String | 当前语音识别关联用户的 ID |
msgId | String | 当前语音识别的 ID,用于关联当前语音识别结果 |
timeUTC | long | 当前语音识别的时间戳(单位:秒) |
msg | String | 当前语音识别结果 |
isEnd | boolean | 当前语音识别是否结束,true 表示已结束 |
示例代码
Java
room.registerRoomListener(new IRCRTCRoomEventsListener() {
/**
* 语音识别服务开启回调通知
*/
@Override
public void onReceiveStartASR() {
}
/**
* 语音识别服务停止回调通知
*/
@Override
public void onReceiveStopASR() {
}
/**
* 语音识别结果回调通知
* @param realTimeSubtitle
*/
@Override
public void onReceiveASRContent(RCRTCASRContent realTimeSubtitle) {
}
//...
});
开启语音识别服务
在加入房间成功后,您可以通过以下步骤开启语音识别服务:
- 调用 RCRTCRoom#getLocalUser 获取本地用户对象。
- 调用 RCRTCLocalUser#startASR 开启服务。
开启成功后,其他客户端会通过 IRCRTCRoomEventsListener#onReceiveStartASR
方法收到通知。
注意
任何加入房间的客户端都可以调用此接口开启语音识别服务。SDK 不限制调用权限,请根据您的业务需 求进行权限控制。
参数说明
参数 | 类型 | 说明 |
---|---|---|
callback | IRCRTCResultCallback | 开启语音识别服务的回调 |
示例代码
Java
room.getLocalUser().startASR(new IRCRTCResultCallback() {
@Override
public void onSuccess() {
// 开启成功
}
@Override
public void onFailed(RTCErrorCode errorCode) {
// 开启失败
}
});
设置是否接收语音识别
在加入房 间成功后,您可以通过以下步骤设置是否接收语音识别:
- 调用 RCRTCRoom#getLocalUser 获取本地用户对象。
- 调用 RCRTCLocalUser#setEnableASR 设置接收状态。
提示
此接口具有预设功能。您可以在房间开启语音识别服务前调用,当服务开启后,SDK 会根据您的设置自动接收语音识别结果。如果选择接收,SDK 会通过 IRCRTCRoomEventsListener#onReceiveASRContent
回调方法通知识别结果。
参数说明
参数 | 类型 | 说明 |
---|---|---|
enable | boolean | true :接收语音识别false :停止接收语音识别 |
示例代码
Java
room.getLocalUser().setEnableASR(true);
停止语音识别服务
在加入房间成功后,您可以通过以下步骤停止语音识别服务:
- 调用 RCRTCRoom#getLocalUser 获取本地用户对象。
- 调用 RCRTCLocalUser#stopASR 停止服务。
注意
- 停止语音识别服务生效后,所有房间内的所有语音流撰写任务都将停止,请谨慎使用。
- 任何加入房间的客户端都可以调用此接口停止语音识别服务。SDK 不限制调用权限,请根据您的业务需求进行权限控制。停止成功后,SDK 会通过
IRCRTCRoomEventsListener#onReceiveStopASR
回调方法通知其他客户端。
参数说明
参数 | 类型 | 说明 |
---|---|---|
callback | IRCRTCResultCallback | 停止语音识别服务的回调 |
示例代码
Java
room.getLocalUser().stopASR(new IRCRTCResultCallback() {
@Override
public void onSuccess() {
// 停止成功
}
@Override
public void onFailed(RTCErrorCode errorCode) {
// 停止失败
}
});