跳到主要内容

语音转文字

本文主要描述了如何使用 IMLib SDK 将语音消息的音频转成文本。

提示

此功能从 5.22.0 版本开始支持。

语音转文字简介

语音转文字的消息包括 RCVoiceMessageRCHQVoiceMessage,客户端 SDK 发起语音转文字请求后,会通过事件代理回调转换结果。以下是时序图:

IMLib SDK 的 RCVoiceMessageRCHQVoiceMessage 对象中,增加了语音转文字 RCSpeechToTextInfo 属性。下表是语音消息和语音转文字信息的属性,完整的属性列表可参考 API 文档。

RCVoiceMessage 中新增属性如下:

属性名类型描述
sttInfoRCSpeechToTextInfo语音转文本信息。

RCHQVoiceMessage 中新增属性如下:

属性名类型描述
sttInfoRCSpeechToTextInfo语音转文本信息。
numberOfChannelsNSUInteger声道数量 [仅单声道支持 STT 功能]。
sampleRateNSUInteger采样率 [仅 8000, 16000 支持 STT 功能]。
formatNSString编码格式。

RCSpeechToTextInfo 对象属性如下:

属性名类型描述
statusRCSpeechToTextStatus转换状态。
textNSString转换的文本内容。
isVisibleBOOL是否可见,默认 NO。
提示
  • 通过 messageWithPath:duration: 接口初始化 RCHQVoiceMessage 时,SDK 会自动识别音频文件信息。
  • 高清语音消息的音频文件需要满足这些要求:声道数量为单声道,采样率是 8000 或 16000。
  • 普通语音消息的 content 必须是 base64 的字符串。

语音转文字

SDK 发起语音转文字请求后,结果是通过代理回调的方式通知给应用。

添加语音转文字结果代理

应用可以通过 addSpeechToTextDelegate: 方法设置语音转文字回调代理。

示例代码

Objective C
[[RCCoreClient sharedCoreClient] addSpeechToTextDelegate:self];

实现语音转文字代理方法

语音转文字结束后,应用程序会收到 speechToTextDidComplete:messageUId:code: 代理。

参数说明

参数类型说明
infoRCSpeechToTextInfo语音转文字信息。
messageUIdNSString消息唯一 ID。
codeRCErrorCode错误码。

示例代码

Objective C
- (void)speechToTextDidComplete:(RCSpeechToTextInfo *)info
messageUId:(nonnull NSString *)messageUId
code:(RCErrorCode)code {
// TODO 业务逻辑。
}

发起语音转换文本请求

您可以调用 requestSpeechToTextForMessage:completionHandler: 方法,发起语音转文字请求。

参数说明

参数类型说明
messageUIdNSString消息唯一 ID。
completionHandlerBlock结果回调。

示例代码

Objective C
[[RCCoreClient sharedCoreClient] requestSpeechToTextForMessage:@"messageUId" completionHandler:^(RCErrorCode code) {
// TODO 业务逻辑。
}];

设置语音转换文本功能的可见性

您通过 setMessageSpeechToTextVisible:isVisible:completionHandler: 控制语音转文本的可见性。

参数说明

参数类型说明
messageIdNSInteger消息本地 ID。
isVisibleBOOL是否可见。
completionHandlerBlock结果回调。

示例代码

Objective C
[[RCCoreClient sharedCoreClient] setMessageSpeechToTextVisible:messageId
isVisible:YES
completionHandler:^(RCErrorCode code) {
// TODO 业务逻辑。
}];