语音消息转文字
自 5.22.0 版本开始,SDK 支持将语音消息转文字功能,开发者可以通过管理后台自行开启。
注意
- 目前语音转文字功能仅支持
RC:VcMsg
和RC: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
参数解构可参考 IConvertVoiceMessageToTextOption、IConvertHQVoiceMessageToTextOption。
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)