语音消息处理
更新时间: 2024/03/07 11:22:19
NIM SDK 提供高清的语音录制功能,用于处理语音消息。
Flutter SDK 未在 macOS 和 Web 上支持语音处理功能。
实现语音录制
NIM SDK 提供AudioService
类,支持语音的录制。
前提条件
已开启操作系统的麦克风权限。
实现方法
-
注册
onAudioRecordStatus
事件流,监听语音录制状态变化。在回调的RecordInfo
中的recordState
枚举定义了录制过程中的不同状态。字段类型 说明 READY
枚举 录音器已就绪,提供此接口用于在录音前关闭本地音视频播放(可选)(Windows 暂不支持该参数) START
枚举 开始录音回调 REACHED_MAX
枚举 到达指定的最长录音时间(Windows 暂不支持该参数) SUCCESS
枚举 录音成功 FAIL
枚举 录音出错(Windows 暂不支持该参数) CANCEL
枚举 用户主动取消录音 dart
/// 监听录音过程事件 NimCore.instance.audioService.onAudioRecordStatus.listen((RecordInfo recordInfo) { });
-
调用
startRecord
方法开始录制。参数 类型 说明 recordType
AudioOutputFormat 录制音频类型(aac/amr) maxDuration
int 最长录音时长,到该长度后,会自动停止录音,默认为 120 秒 dart
/// 启动(开始)录音,如果成功,会按照顺序回调`READY`和`START`。 // maxLength,最长录音时长,到该长度后,会自动停止录音, 默认120s NimCore.instance.audioService.startRecord(AudioOutputFormat.AAC,1000);
-
(可选)按需调用如下方法。
方法 返回值类型 说明 getAmplitude
int 获取当前录音时最大振幅, 40ms 更新一次数据(Windows 暂不支持) isAudioRecording
bool 是否正在录音(Windows 暂不支持) cancelRecord
bool 取消录音 获取最大振幅dart
/// 获取当前录音时最大振幅, 40ms更新一次数据。 NimCore.instance.audioService.getAmplitude();
判断是否正在录音dart
/// 是否正在录音 NimCore.instance.audioService.isAudioRecording();
取消录音dart
NimCore.instance.audioService.cancelRecord();
-
调用
stopRecord
停止录音。dart
// 结束录音 NimCore.instance.audioService.stopAudioRecord();
实现语音转文字
NIM SDK 支持将音频文件的语音信息转为文字。
语音转文字的原理:
- 录制音频文件 (目前最大支持 60 秒)。
- 上传到云信存储服务器,返回文件 URL。
- 通过语音转文字接口传入该 URL 和相关参数,返回转换后的文字。
前提条件
如需使用语音转文字功能,请通过云信控制台应用管理 > 产品功能 > IM即时通讯 > 全局功能申请开通语音识别功能。如果未开通功能的情况下调用接口,将返回 403
错误码。
实现方法
调用messageService
类中的voiceToText
方法进行语音转文字。
如果未开通功能的情况下调用接口,将返回 403。
dartvar result = await NimCore.instance.messageService
.voiceToText(message);
此文档是否对你有帮助?