跳到主要内容

版本:5.X

语音消息转文字

自 5.22.0 版本开始,SDK 支持将语音消息转文字功能,开发者可以通过管理后台自行开启。

注意
  • 目前语音转文字功能仅支持 RC:VcMsgRC:HQVcMsg 类型消息。
  • 对于 RC:HQVcMsg 高清语音消息,目前仅支持采样率 16000/8000、单声道的 aac 音频数据。

查询功能是否可用

调用 getAppSettings 接口可查询是否已开启语音转文字功能;

该接口仅支持 IM 建立连接后调用,否则无法获取应用配置信息。

JavaScript
RongIMLib
.getAppSettings()
.then(({ code, data }) => {
if (code !== ErrorCode.SUCCESS) {
console.log('应用配置查询失败', code)
return;
}

console.log('语音转文字功能是否已开启:', data.isSpeechToTextEnabled);
});

语音消息转文字

通过调用 requestSpeechToTextForMessage 接口,发起实现语音消息转文字请求,并通过监听 Events.SPEECH_TO_TEXT_RESPONSE 事件获取转换结果。

监听转换结果

JavaScript
RongIMLib.addEventListener(Events.SPEECH_TO_TEXT_RESPONSE, (response) => {
const { code, messageUId, sttInfo } = response;

console.log('转换是否成功:', code === ErrorCode.SUCCESS);
console.log('消息 UId:', messageUId);
console.log('转换数据:', sttInfo)
});

其中 sttInfo 数据为 ISpeechToTextInfo 结构,详细定义请参考 APIDoc 文档。

发起转换请求

注意

需要注意,requestSpeechToTextForMessage 接口在 Electron 和其他平台下,接收参数有所差异。

非 Electron 平台下,由于本地没有消息数据库,因此需要业务层将语音消息的 content 数据和消息类型作为第二参数发送给 SDK。

JavaScript
// 解构 msg (语音消息或高清语音消息)的 content 数据,并增加 messageType
const opts = { messageType: msg.messageType, ...msg.content };

RongIMLib
.requestSpeechToTextForMessage('<消息 UId>', opts)
.then(({ code }) => {
if (code === ErrorCode.SUCCESS) {
console.log('转换请求发送成功');
} else {
console.log('转换请求发送失败:', code);
}
});

opts 参数解构可参考 IConvertVoiceMessageToTextOptionIConvertHQVoiceMessageToTextOption

Electron 平台下,开发者无需传递第二参数 opts,SDK 将从本地消息数据库中读取消息内容,并发起转换请求。已转换的结果会被存储在本地数据库中,在从本地数据库获取语音消息或高清语音消息时,可根据消息 content.sttInfo.status 属性值,来判断是否有必要再发起转换请求。

JavaScript
RongIMLib
.requestSpeechToTextForMessage('<消息 UId>')
.then(({ code }) => {
if (code === ErrorCode.SUCCESS) {
console.log('转换请求发送成功');
} else {
console.log('转换请求发送失败:', code);
}
});

设置文字结果可见性

该功能仅 Electron 平台支持,用于隐藏或显示已本地数据库所存储的已转换文字信息。

TypeScript
RongIMLib.electronExtension.setMessageSpeechToTextVisible(msg.messageId, false)