Flutter

语音消息处理

更新时间: 2024/03/07 11:22:19

NIM SDK 提供高清的语音录制功能,用于处理语音消息。

Flutter SDK 未在 macOS 和 Web 上支持语音处理功能。

实现语音录制

NIM SDK 提供AudioService 类,支持语音的录制。

前提条件

已开启操作系统的麦克风权限。

实现方法

  1. 注册onAudioRecordStatus事件流,监听语音录制状态变化。在回调的 RecordInfo 中的recordState 枚举定义了录制过程中的不同状态。

    字段
    类型 说明
    READY 枚举 录音器已就绪,提供此接口用于在录音前关闭本地音视频播放(可选)(Windows 暂不支持该参数)
    START 枚举 开始录音回调
    REACHED_MAX 枚举 到达指定的最长录音时间(Windows 暂不支持该参数)
    SUCCESS 枚举 录音成功
    FAIL 枚举 录音出错(Windows 暂不支持该参数)
    CANCEL 枚举 用户主动取消录音
    dart/// 监听录音过程事件
    NimCore.instance.audioService.onAudioRecordStatus.listen((RecordInfo recordInfo) {
    
            });
    
    
  2. 调用 startRecord方法开始录制。

    参数 类型 说明
    recordType AudioOutputFormat 录制音频类型(aac/amr)
    maxDuration int 最长录音时长,到该长度后,会自动停止录音,默认为 120 秒
    dart/// 启动(开始)录音,如果成功,会按照顺序回调`READY``START`
     // maxLength,最长录音时长,到该长度后,会自动停止录音, 默认120s
      NimCore.instance.audioService.startRecord(AudioOutputFormat.AAC,1000);
    
  3. (可选)按需调用如下方法。

    方法 返回值类型 说明
    getAmplitude int 获取当前录音时最大振幅, 40ms 更新一次数据(Windows 暂不支持)
    isAudioRecording bool 是否正在录音(Windows 暂不支持)
    cancelRecord bool 取消录音
    获取最大振幅
    dart/// 获取当前录音时最大振幅, 40ms更新一次数据。
    NimCore.instance.audioService.getAmplitude();
    
    
    判断是否正在录音
    dart/// 是否正在录音
    NimCore.instance.audioService.isAudioRecording();
    
    取消录音
    dartNimCore.instance.audioService.cancelRecord();
    
  4. 调用 stopRecord停止录音。

    dart// 结束录音
    NimCore.instance.audioService.stopAudioRecord();
    

实现语音转文字

NIM SDK 支持将音频文件的语音信息转为文字。

语音转文字的原理:

  • 录制音频文件 (目前最大支持 60 秒)。
  • 上传到云信存储服务器,返回文件 URL。
  • 通过语音转文字接口传入该 URL 和相关参数,返回转换后的文字。

前提条件

如需使用语音转文字功能,请通过云信控制台应用管理 > 产品功能 > IM即时通讯 > 全局功能申请开通语音识别功能。如果未开通功能的情况下调用接口,将返回 403 错误码。

实现方法

调用messageService类中的voiceToText方法进行语音转文字。

如果未开通功能的情况下调用接口,将返回 403。


dartvar result = await NimCore.instance.messageService
            .voiceToText(message);
此文档是否对你有帮助?
有帮助
去反馈
  • 实现语音录制
  • 前提条件
  • 实现方法
  • 实现语音转文字
  • 前提条件
  • 实现方法