更新记录

1.0.0(2026-04-17)

  • 初始化 UTS API 插件结构
  • 增加实时录音帧采集接口:
    • startRecordFrameStream
    • stopRecordFrameStream
  • 完成 Android 端基础实时 PCM 帧采集链路
  • 增加统一的接口定义与错误码定义
  • 增加插件使用说明文档

平台兼容性

uni-app(3.7.6)

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

coder-ll

coder-ll 是一个 uni-app UTS API 插件,用于在 App 端获取录音实时帧,适合接入 WebSocket 流式 ASR、实时字幕、语音输入等场景。

当前版本重点支持:

  • Android 实时 PCM 帧采集
  • uni-app 项目内直接调用
  • 通过回调持续返回音频帧

当前状态说明:

  • Android:已完成基础链路验证,可获取实时音频帧并接入前端 ASR 推流
  • iOS:已预留实现结构,建议在真实 iOS 设备和 macOS 环境下继续验证与完善

功能特性

  • 基于 UTS API 插件实现
  • 支持 startRecordFrameStream / stopRecordFrameStream
  • 支持设置采样率、声道数、帧大小
  • 持续回调 Base64 编码的 PCM 音频帧
  • 适合对接流式语音识别服务

适用场景

  • 语音输入时的实时字幕
  • WebSocket 推流 ASR
  • 语音助手
  • 实时语音转文字

平台支持

平台 支持情况 说明
Android 支持 最低 Android 5.0(API 21)
iOS 开发中 已有接口结构,建议自行验证

最低要求

  • HBuilderX 3.6.8+
  • uni-app 3.1.0+
  • Android 5.0+
  • iOS 12.0+

安装方式

方式一:项目内本地使用

将插件放入:

uni_modules/coder-ll

然后直接在业务代码中调用:

import {
  startRecordFrameStream,
  stopRecordFrameStream
} from '@/uni_modules/coder-ll'

方式二:插件市场安装

发布到 uni-app 插件市场后,可通过 HBuilderX 安装到项目。

权限说明

Android

需要麦克风权限:

android.permission.RECORD_AUDIO

iOS

需要麦克风权限说明,确保应用已正确配置录音权限文案。

API 说明

startRecordFrameStream(options)

开始实时录音并返回音频帧。

参数

type RecordFrameEvent = {
  pcmBase64: string
  byteLength: number
  sampleRate: number
  channels: number
  timestamp: number
}

type StartRecordFrameOptions = {
  sampleRate?: number
  channels?: number
  frameSize?: number
  onFrame: (event: RecordFrameEvent) => void
  onStart?: () => void
  onStop?: () => void
  onError?: (error: any) => void
}

参数说明

  • sampleRate 默认 16000
  • channels 默认 1
  • frameSize Android 默认 3200
  • onFrame 每次收到一帧实时 PCM 数据时触发
  • onStart 录音开始时触发
  • onStop 录音结束时触发
  • onError 录音错误时触发

stopRecordFrameStream()

停止实时录音。

返回帧说明

插件回调的 pcmBase64 是一段 Base64 编码后的 PCM 数据。业务层可转成 ArrayBuffer 再发送给后端 ASR:

import {
  startRecordFrameStream,
  stopRecordFrameStream
} from '@/uni_modules/coder-ll'

startRecordFrameStream({
  sampleRate: 16000,
  channels: 1,
  frameSize: 3200,
  onStart() {
    console.log('record start')
  },
  onFrame(event) {
    const pcmBuffer = uni.base64ToArrayBuffer(event.pcmBase64)
    console.log('frame byteLength:', pcmBuffer.byteLength)

    // websocket / socketTask 发送给流式 ASR
    // socket.send({ data: pcmBuffer })
  },
  onError(error) {
    console.error('record error:', error)
  },
  onStop() {
    console.log('record stop')
  }
})

// 停止
stopRecordFrameStream()

集成建议

推荐在业务层再封一层:

  • 录音插件负责采集实时帧
  • 业务代码负责:
    • Base64 转 ArrayBuffer
    • WebSocket 推流
    • 识别结果更新 UI

已知说明

  • Android 已验证基础采集链路
  • iOS 仍建议在真实设备上继续联调
  • 如果用于流式识别,建议固定:
    • sampleRate = 16000
    • channels = 1

更新计划

  • 完善 iOS 实时帧采集
  • 增加更多异常处理
  • 增加示例工程

License

请根据你的发布策略自行补充。

隐私、权限声明

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

Android 需要 RECORD_AUDIO 权限;iOS 需要麦克风录音权限说明。

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

插件仅用于本地音频采集,不主动采集、上传或存储任何用户数据。具体数据流转由接入方业务代码自行控制。

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

暂无用户评论。