跳到主要内容

语音转文字

本文主要介绍如何使用 IMKit SDK 将语音消息的音频内容转为文本。

准备工作

在开始之前,请确保 SDK 版本 ≥ 5.22.0,并在 IM 服务的服务购买页面开通语音转文字功能

提示

此功能自 5.22.0 版本起支持,仅适用于 5.22.0 及之后的语音消息。高清语音要求采样率为 8000Hz 或 16000Hz,声道为 1,格式为 aac,且时长不超过 60 秒。历史语音消息暂不支持该功能。

效果展示

语音转文字简介

IMKit SDK 支持录制最长 60 秒的语音文件。用户进入聊天界面后,可长按消息列表中的语音消息气泡,在弹出的菜单中点击转文字,调用 IMLib SDK 将语音消息转换为文本并展示。SDK 会记录语音转文本的可见性状态,下次进入会话时,根据可见性控制文字 UI 的展示。

提示

未开启语音转文本功能、未发送成功或转换中的消息,长按菜单中不会显示转文字选项。

从 5.38.0 开始,如果已开启引用消息功能升级,用户发送的引用回复内容是普通语音消息或高清语音消息,IMKit 会按语音消息原有规则展示转文字结果。转换后的文字是否显示,由消息中 RCSpeechToTextInfo.isVisible 状态控制。

组件关系图

语音转文本相关类

类名用途描述
RCSTTContentView语音转文本内容视图展示语音转文本的各种状态。
RCSTTDetailView转换成功后的文本视图展示转换后的文本内容。
RCSTTFailureView转换失败视图展示转换请求失败后的状态。
RCDotLoadingView转换中视图展示请求发送成功后的加载状态。
RCSTTContentViewModel语音转文本核心类负责发起请求、文本高度计算,通知 RCSTTContentView 刷新高度和内容。
RCSpeechToTextModel语音转文本数据模型记录当前语音转文本状态。
RCSTTObserverContext语音转文本监听上下文统一处理所有语音转文本请求,发起请求前注册监听,收到回调后移除监听。

以下为类图:

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

RCSpeechToTextModel 对象属性如下:

属性名类型描述
statusRCSpeechToTextStatus转换状态。
sttInfoRCSpeechToTextInfo对应数据库中的 sttInfo
isVisibleBOOLsttInfo 视图是否可见,默认 NO。
提示
  • 发起转换请求后,数据库中默认的 RCSpeechToTextInfo 对象属性 isVisible 为 YES。

语音转文字工作流程

RCSTTContentViewModel 通过 RCSTTContentViewModelDelegate 代理与 RCSTTContentView 绑定。当内部 RCSpeechToTextModel 状态发生变化时,通过代理通知 RCSTTContentView 更新 UI。