跳到主要内容

语音转文字

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

准备工作

在开始之前,请确保 SDK 版本 ≥ 5.22.0,并已在融云控制台开启语音转文字功能。

提示

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

效果展示

语音转文字简介

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

提示

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

组件关系图

语音转文本相关类

类名用途描述
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。