语音转文字
本文主要介绍如何使用 IMKit SDK 将语音消息的音频内容转为文本。
准备工作
在开始之前,请确保 SDK 版本 ≥ 5.22.0,并已在融云控制台开启语音转文字功能。
提示
此功能自 5.22.0 版本起支持,仅适用于 5.22.0 及之后的语音消息。高清语音要求采样率为 8000Hz 或 16000Hz,声道为 1,格式为 aac
,且时长不超过 60 秒。历史语音消息暂不支持该功能。
效果展示





语音转文字简介
IMKit SDK 支持录制最长 60 秒的语音文件。用户进入聊天界面后,可长按消息列表中的语音消息气泡,在弹出的菜单中点击转文字,调用 IMLib SDK 将语音消息转换为文本并展示。SDK 会记录语音转文本的可见性状态,下次进入会话时,根据可见性控制文字 UI 的展示。
提示
未开启语音转文本功能 、未发送成功或转换中的消息,长按菜单中不会显示转文字选项。
组件关系图
语音转文字相关类
类名 | 用途 | 描述 |
---|---|---|
SpeechToTextHandler | 语音转文字处理器 | 负责发起请求、设置可见性、处理回调。核心业务处理类。 |
VoiceMessageItemProvider | 普通语音消息提供器 | 处理 VoiceMessage 的 UI 显示,包含语音转文字 UI 逻辑。 |
HQVoiceMessageItemProvider | 高清语音消息提供器 | 处理 HQVoiceMessage 的 UI 显示,包含语音转文字 UI 逻辑。 |
MessageViewModel | 消息视图模型 | 集成 SpeechToTextHandler,处理长按菜单和 UI 状态管理。 |
SpeechToTextViews | 语音转文字视图组合 | 封装语音转文字相关的 UI 组件。 |
SpeechToTextInfo | 语音转文 字数据模型 | 记录当前语音转文字状态和结果。 |
以下为类图:
SpeechToTextInfo
为 IMLib SDK 用于记录当前语音转文字状态的数据模型。下表为语音转文字数据模型的主要属性,完整属性请参考 API 文档。
SpeechToTextInfo
对象属性如下:
属性名 | 类型 | 描述 |
---|---|---|
status | SpeechToTextStatus | 转换状态:NOT_CONVERTED, CONVERTING, SUCCESS, FAILED。 |
text | String | 转换后的文字内容。 |
isVisible | boolean | 转文字结果是否可见,默认 false。 |
errorCode | int | 错误码,转换失败时有效。 |
提示
- 发起转换请求后,数据库中默认的
SpeechToTextInfo
对象属性isVisible
为 true。 - Android 版本通过
UiMessage.businessState
额外维护 UI 业务状态。
SpeechToTextModel
为 IMKit SDK 用于记录当前语音转文本状态的数据模型。下表为语音转文字数据模型的主要属性,完整属性请参考 API 文档。
SpeechToTextModel
对象属性如下:
属性名 | 类型 | 描述 |
---|---|---|
status | SpeechToTextStatus | 转换状态。 |
sttInfo | SpeechToTextInfo | 对应数据库中的 sttInfo 。 |
isVisible | boolean | sttInfo 视图是否可见,默认 false。 |
提示
- 发起转换请求后,数据库中默认的
SpeechToTextInfo
对象属性isVisible
为 true。