更新记录
1.0.0(2026-04-17)
- 初始化
UTS API插件结构 - 增加实时录音帧采集接口:
startRecordFrameStreamstopRecordFrameStream
- 完成 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默认16000channels默认1frameSizeAndroid 默认3200onFrame每次收到一帧实时 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
- Base64 转
已知说明
- Android 已验证基础采集链路
- iOS 仍建议在真实设备上继续联调
- 如果用于流式识别,建议固定:
sampleRate = 16000channels = 1
更新计划
- 完善 iOS 实时帧采集
- 增加更多异常处理
- 增加示例工程
License
请根据你的发布策略自行补充。

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 0
赞赏 0
下载 11615717
赞赏 1906
赞赏
京公网安备:11010802035340号