语音转文字
本文主要描述如何使用 Flutter IMLib SDK 将语音消息的音频转成文本。
提示
- 此功能从 5.24.6 版本开始支持。
- 使用前请在 IM 服务的服务购买页面开通语音转文字功能。
语音转文字简介
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)
- speechToTextInfo:
-
RCIMIWSpeechToTextInfo- status:
RCIMIWSpeechToTextStatus?转换状态(notConverted、converting、success、failed) - text:
String?转换得到的文本 - visible:
bool?是否可见(默认false)
- status:
提示
高清语音消息需满足:单声道,采样率为 8000 或 16000。
语音转文字
设置语音转文字结果回调
通过设置引擎的 onSpeechToTextCompleted 回调,接收 STT 结果。
示例代码
Dart
engine.onSpeechToTextCompleted = (RCIMIWSpeechToTextInfo? info, String? messageUId, int? code) {
// 根据 code 判断是否成功,读取 info?.text 获取转写结果
};
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| info | RCIMIWSpeechToTextInfo? | 语音转文字信息 |
| messageUId | String? | 消息唯一 ID |
| code | int? | 错误码 |
发起语音转换文本请求
调用 requestSpeechToTextForMessage 发起 STT 请求,结果通过 IRCIMIWOperationCallback 告知发起是否成功,最终转写结果通过 onSpeechToTextCompleted 回调返回。
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| messageUId | String | 消息唯一 ID |
| callback | IRCIMIWOperationCallback | 结果回调 |
示例代码
Dart
final code = await engine.requestSpeechToTextForMessage(
"messageUId",
callback: IRCIMIWOperationCallback(
onSuccess: () {
// 发起成功,仅表示请求已受理,最终结果看 onSpeechToTextCompleted
},
onError: (int? code) {
// 发起失败
},
),
);
设置语音转换文本可见性
可通过 setMessageSpeechToTextVisible 控制某条消息的 STT 结果是否对当前用户可见。
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| messageId | int | 消息本地 ID |
| visible | bool | 是否可见 |
| callback | IRCIMIWOperationCallback | 结果回调 |
示例代码
Dart
final code = await engine.setMessageSpeechToTextVisible(
124,
true,
callback: IRCIMIWOperationCallback(
onSuccess: () {
// 设置成功
},
onError: (int? code) {
// 设置失败
},
),
);