该问题请在专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。
uni.getRecorderManager().onFrameRecorded 在 App-Android 端确实不支持,文档已明确标注「App 暂不支持」。因此,若您需要在 Android 端实现“边录边转”的实时语音转文字功能,需采用以下替代方案:
✅ 推荐方案:使用 5+ 原生语音识别(百度语音)
实现思路
- 通过
plus.speech.startRecognize() 调用百度语音识别 SDK(已集成在 5+ 引擎中)
- 支持 流式识别(实时回调部分结果)
- 需在
manifest.json 中勾选 Speech(语音输入) 模块,并填写百度语音的 AppId、API Key、SecretKey
配置步骤
- 登录 百度语音开放平台 创建应用,获取:
- 在
manifest.json → App模块配置 → Speech(语音输入) 中勾选 百度语音识别,并填入上述参数
- 提交云端打包或使用自定义基座运行(真机调试需自定义基座)
示例代码(App端)
// #ifdef APP-PLUS
const options = {
engine: 'baidu',
lang: 'zh-cn',
continue: true, // 持续识别
interimResults: true, // 实时回调中间结果
sampleRate: 16000,
format: 'pcm'
}
plus.speech.startRecognize(options, (res) => {
console.log('实时结果:', res.results[0])
}, (err) => {
console.error('识别错误:', JSON.stringify(err))
})
// #endif
⚠️ 注意事项(来自社区经验)
-
全局单例问题:plus.speech 是全局单例,多个页面同时监听可能导致事件冲突。建议:
- 在页面隐藏时通过变量标记“当前页面是否激活”,非激活状态直接
return 忽略回调
- 或在页面切换时统一停止识别(
plus.speech.stopRecognize())
-
权限声明(Android)
需确保 manifest.json 中已声明以下权限:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
其他可选方案
| 方案 |
适用场景 |
说明 |
| UTS 原生插件 |
需集成讯飞、阿里、腾讯等第三方实时 ASR |
需自行开发 UTS 插件,技术门槛较高 |
| 小程序端 |
各平台小程序 |
使用各平台提供的语音识别 API(如微信 wx.startRecord),但不支持 onFrameRecorded |
| H5 端 |
浏览器环境 |
使用 MediaRecorder 采集音频,通过 WebSocket 推流至后端进行流式 ASR |
总结
| 平台 |
是否支持 onFrameRecorded |
推荐做法 |
| App-Android |
❌ |
5+ plus.speech.startRecognize(百度语音) |
| App-iOS |
❌ |
同上 |
| 各家小程序 |
❌ |
使用各平台语音识别 API |
| H5 |
❌ |
MediaRecorder + 后端 ASR |
建议您直接采用 5+ 原生百度语音识别 方案,可满足 Android 端实时语音转文字的需求。
1 个回复
Ask小助手 - Ask社区AI助手
uni.getRecorderManager().onFrameRecorded 在 App-Android 端确实不支持,文档已明确标注「App 暂不支持」。因此,若您需要在 Android 端实现“边录边转”的实时语音转文字功能,需采用以下替代方案:
✅ 推荐方案:使用 5+ 原生语音识别(百度语音)
实现思路
plus.speech.startRecognize()调用百度语音识别 SDK(已集成在 5+ 引擎中)manifest.json中勾选 Speech(语音输入) 模块,并填写百度语音的 AppId、API Key、SecretKey配置步骤
manifest.json→ App模块配置 → Speech(语音输入) 中勾选 百度语音识别,并填入上述参数示例代码(App端)
⚠️ 注意事项(来自社区经验)
全局单例问题:
plus.speech是全局单例,多个页面同时监听可能导致事件冲突。建议:return忽略回调plus.speech.stopRecognize())权限声明(Android)
需确保
manifest.json中已声明以下权限:其他可选方案
wx.startRecord),但不支持onFrameRecordedMediaRecorder采集音频,通过 WebSocket 推流至后端进行流式 ASR总结
onFrameRecordedplus.speech.startRecognize(百度语音)MediaRecorder+ 后端 ASR建议您直接采用 5+ 原生百度语音识别 方案,可满足 Android 端实时语音转文字的需求。
要回复问题请先登录或注册
公告
更多>相关问题