更新记录

1.0.0(2026-04-21)

  • 实时录音
  • 持续回调 Base64 编码后的音频数据分片
  • 录音时同步写入本地文件
  • 回调音频规格固定为 16kHz / 单声道 / 16-bit

平台兼容性

uni-app(4.84)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android Android插件版本 iOS iOS插件版本 鸿蒙
- - × × - - 5.0 1.0.0 12 1.0.0 -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

uni-app x(4.84)

Chrome Safari Android Android插件版本 iOS iOS插件版本 鸿蒙 微信小程序
× × 5.0 1.0.0 12 1.0.0 - ×

mm-recorder

简介

mm-recorder 是一个 UTS 录音插件,当前源码实际提供的是“开始实时录音并持续回调 Base64 音频分片”这一套能力。

功能特性

  • 实时录音
  • 持续回调 Base64 编码后的音频数据分片
  • 录音时同步写入本地文件
  • 回调音频规格固定为 16kHz / 单声道 / 16-bit

导出 API

startRecordWithPCM(onPCM: (base64: string) => void): void

开始录音,并持续通过 onPCM 回调返回 Base64 字符串。

  • base64 对应的是单次采集到的音频分片,不是整段录音文件
  • 回调会持续触发,直到调用 stopRecordWithPCM()
  • 录音中重复调用该方法会被忽略

stopRecordWithPCM(): void

停止录音并释放资源。

  • 未开始录音时调用会被忽略
  • 当前没有单独的“停止完成”回调

getPCMFilePath(): string

返回当前平台默认的录音文件路径。

注意:

  • 方法名虽然叫 getPCMFilePath
  • 但 iOS 实际返回的是 .caf 文件路径

使用示例

import {
  startRecordWithPCM,
  stopRecordWithPCM,
  getPCMFilePath
} from '@/uni_modules/mm-recorder'

let recording = false

export default {
  methods: {
    startRecord() {
      if (recording) return
      recording = true

      startRecordWithPCM((base64) => {
        console.log('收到音频分片:', base64)

        // 这里可以把 base64 分片发给语音识别服务
        // 也可以先转回二进制后自行处理
      })
    },

    stopRecord() {
      if (!recording) return
      recording = false

      stopRecordWithPCM()
      console.log('录音文件路径:', getPCMFilePath())
    }
  }
}

平台差异

平台 实时回调数据 本地文件 默认文件路径
Android 原始 PCM 分片,16kHz / 单声道 / 16-bit .pcm 应用缓存目录下的 temp_recording.pcm
iOS 回调数据会转换为 16kHz / 单声道 / 16-bit PCM .caf 应用数据目录下的 temp_recording.caf
Harmony 原始 PCM 分片,16kHz / 单声道 / 16-bit .pcm cacheDir/temp_recording.pcm

补充说明:

  • Android、Harmony 本地文件是原始 PCM 文件
  • iOS 本地文件是 caf 容器,录音参数同样按线性 PCM 配置
  • 不同平台单次回调的数据块大小和回调频率可能不同

权限说明

Android

插件内部只检查录音权限,不主动拉起权限申请。

调用 startRecordWithPCM 前,请先确保宿主应用已经拿到:

  • android.permission.RECORD_AUDIO

如果权限未授予,当前实现不会抛出 JS 错误,只会启动失败且没有音频回调。

iOS

首次录音会触发系统麦克风权限申请。

插件已在 iOS 配置中声明:

  • NSMicrophoneUsageDescription

Harmony

首次录音会检查并申请:

  • ohos.permission.MICROPHONE

注意事项

  • 鸿蒙没有真机实测,相当于免费赠送,如果有bug,联系作者免费修复
  • 当前插件没有暂停、恢复、销毁、状态查询这类接口
  • onPCM 只用于接收录音分片,不会在停止时额外回调一个结束标记
  • 回调里的 Base64 数据是音频分片内容,不带 WAV 头
  • 如果要把数据发给语音识别或服务端,请明确告知服务端音频格式是:
    • sampleRate: 16000
    • channels: 1
    • bitDepth: 16
  • 如果调用后一直没有收到回调,请优先检查:
    • 麦克风权限是否已授予
    • 真机是否有可用输入设备
    • 平台原生日志中是否有启动失败信息

开发文档

隐私、权限声明

1. 本插件需要申请的系统权限列表:

需要麦克风权限用于录音功能

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

录音数据将以BASE64格式提供回调

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。