跨平台Android和IOS百度语音在线识别原生插件
一、插件推荐
- 跨平台Office文档、图片在线预览,视频播放原生插件
- Android和IOS图片在线预览,视频播放原生插件
- 跨平台Android和IOS百度OCR文字识别、证卡识别、票据识别原生插件
- Android端:生成Android打包keystore证书文件及获取MD5(非常重要),参考文档:Android平台签名证书(.keystore)生成指南 - DCloud问答
- IOS端:Windows系统下申请IOS证书、Mac系统下申请IOS证书
- 进入百度AI开放平台
- 点击右上角控制台登录,若无账号,请先注册账号
- 登录后,若没有实名认证,请先实名认证,推荐企业实名认证(可使用功能更多)
- 选择语音技术 —》创建应用
文章图片
- 获取API Key、Secret Key以及License文件
文章图片
- 百度语音识别接口收费详情,请在百度控制台—》概述查看,或者直接查看产品定价文档
文章图片
- Step1:下载本插件示例项目,或者下载GitHub - silianpan/Seal-UniPlugin-Demo
- Step2:打开manifest.json—》基础配置—》重新获取DCloud AppID
- Step3:点击试用
- Step4:打开manifest.json—》App原生插件配置—》选择云端插件
文章图片
- Step5:制作自定义调试基座:在HBuilderX菜单中点击运行—》运行到手机或模拟器—》制作自定义调试基座,填写步骤及注意事项如下图
附:debug.keystore下载链接,仅仅用作测试
Keystore name: “debug.keystore” Keystore password: “android” Key alias: “AndroidDebugKey” Key password: “android”
md5:A5:61:77:2E:AA:63:15:18:47:D6:5B:EC:6A:FA:F4:0A
文章图片
- Step6:选择自定义调试基座:点击运行—》运行到手机或模拟器—》基座运行选择—》自定义调试基座
- Step7:调试运行:点击运行—》运行到手机或模拟器—》运行到Android App基座
- 插件方法一:
recogOnlineStart
,开始在线识别 - 方法参数
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
appId | string | null | 否 | 百度AI开放平台控制台应用AppID |
appKey | string | null | 否 | 百度AI开放平台控制台应用Api Key |
appSecret | string | null | 否 | 百度AI开放平台控制台应用Secret Key |
pid | int | null | 否 | PID,语种,详细说明如下 |
lmId | int | null | 否 | 自训练平台ID,请选PID=8002生效 |
enableLongSpeech | bool | false | 否 | 长语音,优先级高于vad_endpoint_timeout |
vadEndpointTimeout | int | null | 否 | VAD时长设置,长语音选择0 |
vad | string | dnn | 否 | VAD是否开启,dnn,默认,推荐模型;touch,关闭静音断句功能,用户手动停止录音。 |
infile | string | null | 否 | 外部音频,可以是:资源路径或回调方法名 该参数支持设置为: a. pcm文件,系统路径,如:/sdcard/test/test.pcm;音频pcm文件不超过3分钟 b. pcm文件, JAVA资源路径,如:res:///com/baidu.test/16k_test.pcm;音频pcm文件不超过3分钟 c. InputStream数据流,#方法全名的字符串,格式如:”#com.test.Factory.create16KInputStream()”(解释:Factory类中存在一个返回InputStream的方法create16kInputStream()),注意:必须以井号开始;方法原型必须为:public static InputStream create16KInputStream()。 超过3分钟的录音文件,请在每次read中sleep,避免SDK内部缓冲不够。 |
multiInvoke | bool | true | 否 | 是否保持多次语音识别结果回调 |
checkPermRecordAudio | bool | true | 否 | 是否开启检查录音权限 |
isFinish | bool | false | 否 | 是否结束识别 |
- 【跨平台Android和IOS百度语音在线识别原生插件】PID,语种详细说明
- 在线参数, 请根据语言, 输入法模型及是否需要在线语义,来选择PID。
- 语言:目前支持中文普通话,四川话,粤语,和英语四个
- 输入法模型:适用于较长的句子输入。默认有标点,不支持在线语义; 开启标点后,不支持本地语义。
- 自训练平台模型: 在输入法模型的基础上,可以自行上传词库和句库,生成您自己的训练模型。
- 在线语义:在线语义只支持普通话(本地语义也是只支持普通话)。在线语义对识别结果的文字,再做结构化解析,找到语句的“关键词”。在线语义详细说明请查看“语义理解协议”文档。
- Unit 2.0 语义:功能类似在线语义,但是可以自定义解析。
- 补充:PID=8001,自训练平台输入法模型;PID=8002,自训练平台搜索模型。
文章图片
- 在线参数, 请根据语言, 输入法模型及是否需要在线语义,来选择PID。
- 代码示例
sealVoiceASRModule.recogOnlineStart( { // appId: '', // appKey: '', // appSecret: '', enableLongSpeech: true }, ret => { const resultCode = ret.code; console.log('resultCode', resultCode); if (resultCode === 1000) { modal.toast({ message: `正在在线识别,开始标识:${resultCode}`, duration: 3 }); this.recogOnlineBtn = '正在在线识别...'; } else if (resultCode === 1001) { this.recogText += JSON.parse(ret.result).result + ' ' // uni.showModal({ //content: `获取在线识别结果(${resultCode}):` + ret.result // }); // modal.toast({ //message: '获取在线识别结果:' + ret.result, //duration: 3 // }) } } );
- 接口返回格式
{ code: 1001, result: '识别结果' }
- 接口回调结果状态码说明
状态码 说明 1000 识别开始 1001 识别成功,返回识别结果 解析识别结果格式,参考:https://cloud.baidu.com/doc/S... 1002 识别结束 - 插件方法二:
recogOnlineEnd
,结束识别 - 也可以调用
recogOnlineStart
方法,传递{ isFinish: true }
参数 - 代码示例
// 调用recogOnlineStart接口,传递isFinish为true // sealVoiceASRModule.recogOnlineStart({ isFinish: true }, ret => { sealVoiceASRModule.recogOnlineEnd({}, ret => { const resultCode = ret.code; if (resultCode === 1002) { modal.toast({ message: `识别结束,结束标识:${resultCode}`, duration: 3 }); this.recogOnlineBtn = '开始在线识别'; } });
- IOS端支持
- Android端需要申请的权限列表
- android.permission.READ_EXTERNAL_STORAGE 读取 SD 卡中的内容
- android.permission.WRITE_EXTERNAL_STORAGE 修改或删除 SD 卡中的内容
- android.permission.INTERNET 访问网络连接
- android.permission.RECORD_AUDIO 录音权限
- Android端:插件功能使用百度开放平台语音识别SDK,参考其官方网站 https://ai.baidu.com/tech/speech
推荐阅读
- 不要露出自我迷恋和自我可怜的味道
- .NET|.NET 跨平台应用开发动手教程 |用 Uno Platform 构建一个 Kanban-style Todo App
- 指针函数和函数指针的区别
- .NET 跨平台应用开发动手教程 |用 Uno Platform 构建一个 Kanban-style Todo App
- 爱
- Go十大常见错误第3篇(Go指针的性能问题和内存逃逸)
- springboot文件上传服务器|springboot文件上传服务器,SpringBoot: 浅谈文件上传和访问的坑 (MultiPartFile)
- python和excel的优缺点_Excel不好吗(为什么非要学python?)
- 考研失败
- 做正确的事和正确的做事