跳到主要内容

语音转文字

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

提示

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

语音转文字简介

Flutter IMLib SDK 支持对语音消息进行语音转文字(Speech To Text,STT)。应用发起 STT 请求后,SDK 会通过引擎回调把结果通知给应用。以下是时序图:

在 Flutter IMLib SDK 中,语音消息体为 RCIMIWVoiceMessage,其包含语音转文字信息 RCIMIWSpeechToTextInfo。常用属性如下:

  • RCIMIWVoiceMessage

    • speechToTextInfo: RCIMIWSpeechToTextInfo? 语音转文字信息
    • numberOfChannels: int? 声道数量(仅单声道支持 STT)
    • sampleRate: int? 采样率(仅 8000 或 16000 支持 STT)
  • RCIMIWSpeechToTextInfo

    • status: RCIMIWSpeechToTextStatus? 转换状态(notConvertedconvertingsuccessfailed
    • text: String? 转换得到的文本
    • visible: bool? 是否可见(默认 false
提示

高清语音消息需满足:单声道,采样率为 8000 或 16000。

语音转文字

设置语音转文字结果回调

通过设置引擎的 onSpeechToTextCompleted 回调,接收 STT 结果。

示例代码

Dart
engine.onSpeechToTextCompleted = (RCIMIWSpeechToTextInfo? info, String? messageUId, int? code) {
// 根据 code 判断是否成功,读取 info?.text 获取转写结果
};

参数说明

参数类型说明
infoRCIMIWSpeechToTextInfo?语音转文字信息
messageUIdString?消息唯一 ID
codeint?错误码

发起语音转换文本请求

调用 requestSpeechToTextForMessage 发起 STT 请求,结果通过 IRCIMIWOperationCallback 告知发起是否成功,最终转写结果通过 onSpeechToTextCompleted 回调返回。

参数说明

参数类型说明
messageUIdString消息唯一 ID
callbackIRCIMIWOperationCallback结果回调

示例代码

Dart
final code = await engine.requestSpeechToTextForMessage(
"messageUId",
callback: IRCIMIWOperationCallback(
onSuccess: () {
// 发起成功,仅表示请求已受理,最终结果看 onSpeechToTextCompleted
},
onError: (int? code) {
// 发起失败
},
),
);

设置语音转换文本可见性

可通过 setMessageSpeechToTextVisible 控制某条消息的 STT 结果是否对当前用户可见。

参数说明

参数类型说明
messageIdint消息本地 ID
visiblebool是否可见
callbackIRCIMIWOperationCallback结果回调

示例代码

Dart
final code = await engine.setMessageSpeechToTextVisible(
124,
true,
callback: IRCIMIWOperationCallback(
onSuccess: () {
// 设置成功
},
onError: (int? code) {
// 设置失败
},
),
);