跳到主要内容

语音转文字

本文主要描述了如何使用 IMLib SDK 将语音消息的音频转成文本。

提示

此功能从 5.22.0 版本开始支持。

语音转文字简介

语音转文字的消息包括 VoiceMessageHQVoiceMessage,客户端 SDK 发起语音转文字请求后,会通过事件代理回调转换结果。以下是时序图:

IMLib SDK 的 VoiceMessageHQVoiceMessage 对象中,增加了语音转文字 SpeechToTextInfo 属性。下表是语音消息和语音转文字信息的属性,完整的属性列表可参考 API 文档。

VoiceMessage 中新增属性如下:

属性名类型描述
sttInfoSpeechToTextInfo语音转文本信息。

HQVoiceMessage 中新增属性如下:

属性名类型描述
sttInfoSpeechToTextInfo语音转文本信息。
numberOfChannelsint声道数量 [仅单声道支持 STT 功能]。
sampleRateint采样率 [仅 8000, 16000 支持 STT 功能]。
formatString编码格式。

SpeechToTextInfo 对象属性如下:

属性名类型描述
statusSpeechToTextStatus转换状态。
textString转换的文本内容。
isVisibleboolean是否可见,默认 false。
提示
  • 高清语音消息的音频文件需要满足这些要求:声道数量为单声道,采样率是 8000 或 16000。
  • 普通语音消息的 content 必须是 base64 的字符串。

语音转文字

SDK 发起语音转文字请求后,结果是通过代理回调的方式通知给应用。

添加语音转文字结果代理

应用可以通过 addSpeechToTextListener 方法设置语音转文字回调代理。

示例代码

Java
RongCoreClient.getInstance().addSpeechToTextListener(IRongCoreListener.SpeechToTextListener listener);

实现语音转文字代理方法

语音转文字结束后,应用程序会收到 SpeechToTextListeneronSpeechToTextComplete 回调。

参数说明

参数类型说明
infoSpeechToTextInfo语音转文字信息。
messageUIdString消息唯一 ID。
codeErrorCode错误码。

示例代码

Java
@Override
public void onSpeechToTextComplete(SpeechToTextInfo info, String messageUId, IRongCoreEnum.CoreErrorCode coreErrorCode) {
}

发起语音转换文本请求

您可以调用 requestSpeechToTextForMessage:completionHandler: 方法,发起语音转文字请求。

参数说明

参数类型说明
messageUIdString消息唯一 ID。
callbackIRongCoreCallback.OperationCallback结果回调。

示例代码

Objective C
RongCoreClient.getInstance().requestSpeechToTextForMessage("messageUId", new IRongCoreCallback.OperationCallback() {
@Override
public void onSuccess() {
}

@Override
public void onError(IRongCoreEnum.CoreErrorCode coreErrorCode) {
}
});

设置语音转换文本功能的可见性

您通过 setMessageSpeechToTextVisible:isVisible:completionHandler: 控制语音转文本的可见性。

参数说明

参数类型说明
messageIdint消息本地 ID。
isVisibleboolean是否可见。
callbackIRongCoreCallback.OperationCallback结果回调。

示例代码

Objective C
RongCoreClient.getInstance().setMessageSpeechToTextVisible(124, true, new IRongCoreCallback.OperationCallback() {
@Override
public void onSuccess() {
}

@Override
public void onError(IRongCoreEnum.CoreErrorCode coreErrorCode) {
}
});