Voice2Text - 阿里云百炼实时语音转文字

张开发
2026/6/6 3:14:56 15 分钟阅读

分享文章

Voice2Text - 阿里云百炼实时语音转文字
Voice2Text - 阿里云百炼实时语音转文字基于阿里云 DashScope OpenAI Realtime API 的实时语音识别组件支持微信小程序、H5、App 三端。插件地址https://ext.dcloud.net.cn/plugin?id28221文件结构voice2text/ ├── index.js # 核心类 Voice2Text状态机管理、音频帧缓冲、结果处理 ├── audio-handler.js # 音频采集小程序用 RecorderManager 帧模式H5 用 Web Audio API ├── ws-client.js # WebSocket 客户端小程序用 uni.connectSocketH5 用原生 WebSocket ├── protocol.js # 消息协议构建 session.update / audio.append 等消息解析服务端响应 ├── constants.js # 常量WS 地址、API Key、模型名、音频参数、状态枚举 └── README.md # 本文件基本用法import{createVoice2Text}from/utils/audio-recg/voice2text// 创建实例constv2tcreateVoice2Text({onResult:(text,isFinal){console.log(isFinal?最终结果::中间结果:,text)},onError:(err){console.error(识别错误:,err)},onEnd:(){console.log(识别结束)},onStart:(){console.log(录音已开始)},enableVad:true,// 是否启用服务端 VAD默认 true})// 开始识别自动连接 WebSocket 开始录音awaitv2t.start()// 停止识别等待最终结果最多等 timeout 毫秒constfinalTextawaitv2t.stop(2000)// 取消识别不等待结果直接断开v2t.cancel()预连接模式页面加载时提前建立 WebSocket 连接用户按住按钮时可直接识别减少首次延迟// 页面 onLoad 时静默预连接v2tInstance.connect({silent:true}).catch((){})// 用户按住麦克风时直接 start连接已就绪无需等待awaitv2tInstance.start()按住说话模式推荐// touchstartasynconMicTouchStart(){this.voiceFingerDowntrueawaitthis.v2tInstance.start()}// touchendasynconMicTouchEnd(){this.voiceFingerDownfalseconsttextawaitthis.v2tInstance.stop(2000)if(text.trim()){// 发送识别结果}}// touchcancel滑动取消onMicTouchCancel(){this.v2tInstance.cancel()}APIcreateVoice2Text(options)创建实例。options可选参数类型默认值说明onResult(text: string, isFinal: boolean) voidnull识别结果回调onError(err: any) voidnull错误回调onEnd() voidnull识别结束回调onStart() voidnull录音开始回调enableVadbooleantrue启用服务端 VAD 自动断句start(): Promisevoid开始识别。内部流程建立 WebSocket 连接发送session.update配置立即开始录音缓存模式连接就绪后回放连接就绪后切换为实时推送stop(timeout?: number): Promisestring停止识别。停止录音等待服务端返回最终结果。timeout: 等待超时时间ms默认 2000返回最终识别文本cancel(): void取消识别不等待结果直接断开连接。connect(options?: { silent?: boolean }): Promisevoid预连接 WebSocket不启动录音、不发送 session.update。silent: 静默模式连接失败不触发onErrorstate: string当前状态idle|connecting|starting|recording|finishing|done|errorisRunning: boolean是否正在识别connecting / starting / recording / finishing。text: string已累积的最终文本。destroy(): void销毁实例释放所有资源。平台差异能力微信小程序H5App音频采集RecorderManager 帧模式Web Audio API ScriptProcessorNodeRecorderManager 帧模式WebSocketuni.connectSocket原生 WebSocketuni.connectSocket音频格式PCM 16kHz 16bit 单声道同左同左帧大小4KB (~128ms/帧)4096 samples4KB注意事项需要用户授权麦克风权限小程序需在app.json中配置requiredPrivateInfos和permissionWebSocket 连接使用阿里云 DashScope API Key注意调用频率VAD 模式下服务端自动断句非 VAD 模式需手动 commit

更多文章