跳到主要内容

语音转文字

本文主要介绍如何使用 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 对象属性如下:

属性名类型描述
statusSpeechToTextStatus转换状态:NOT_CONVERTED, CONVERTING, SUCCESS, FAILED。
textString转换后的文字内容。
isVisibleboolean转文字结果是否可见,默认 false。
errorCodeint错误码,转换失败时有效。
提示
  • 发起转换请求后,数据库中默认的 SpeechToTextInfo 对象属性 isVisible 为 true。
  • Android 版本通过 UiMessage.businessState 额外维护 UI 业务状态。

SpeechToTextModel 为 IMKit SDK 用于记录当前语音转文本状态的数据模型。下表为语音转文字数据模型的主要属性,完整属性请参考 API 文档。

SpeechToTextModel 对象属性如下:

属性名类型描述
statusSpeechToTextStatus转换状态。
sttInfoSpeechToTextInfo对应数据库中的 sttInfo
isVisiblebooleansttInfo 视图是否可见,默认 false。
提示
  • 发起转换请求后,数据库中默认的 SpeechToTextInfo 对象属性 isVisible 为 true。