• 跨平台Android和IOS百度语音在线识别原生插件


    一、插件推荐

    二、准备工作

    1. Android、IOS端证书准备工作

    2. 百度资料准备

    • 进入百度AI开放平台

    • 点击右上角控制台登录,若无账号,请先注册账号

    • 登录后,若没有实名认证,请先实名认证,推荐企业实名认证(可使用功能更多)

    • 选择语音技术 —》创建应用

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eXKf7DLI-1659206646067)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a85ce750505a4b44802f8b4cecbc8783~tplv-k3u1fbpfcp-zoom-1.image)]

    • 获取API Key、Secret Key以及License文件

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EDF366Re-1659206646069)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2369be14dbd64b4f8b0cb47cae47ed6d~tplv-k3u1fbpfcp-zoom-1.image)]

    • 百度语音识别接口收费详情,请在百度控制台—》概述查看,或者直接查看产品定价文档

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DNxJRuhq-1659206646070)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0dae8e9b71a647f89a2ba8484a089baa~tplv-k3u1fbpfcp-zoom-1.image)]

    三、快速上手

    • Step1:下载本插件示例项目,或者下载GitHub - silianpan/Seal-UniPlugin-Demo

    • Step2:打开manifest.json—》基础配置—》重新获取DCloud AppID

    • Step3:点击试用

    • Step4:打开manifest.json—》App原生插件配置—》选择云端插件

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9IzlYwGd-1659206646074)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/eb223b4f2f3644d2bf4a1214b8ad80d2~tplv-k3u1fbpfcp-zoom-1.image)]

    • 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

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lSM0AjpK-1659206646075)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d7b69f2177424a829df560f1ab0c420b~tplv-k3u1fbpfcp-zoom-1.image)]

    • Step6:选择自定义调试基座:点击运行—》运行到手机或模拟器—》基座运行选择—》自定义调试基座

    • Step7:调试运行:点击运行—》运行到手机或模拟器—》运行到Android App基座

    四、接口使用手册

    • 插件方法一:recogOnlineStart,开始在线识别
    • 方法参数
    参数类型默认值是否必填说明
    appIdstringnull百度AI开放平台控制台应用AppID
    appKeystringnull百度AI开放平台控制台应用Api Key
    appSecretstringnull百度AI开放平台控制台应用Secret Key
    pidintnullPID,语种,详细说明如下
    lmIdintnull自训练平台ID,请选PID=8002生效
    enableLongSpeechboolfalse长语音,优先级高于vad_endpoint_timeout
    vadEndpointTimeoutintnullVAD时长设置,长语音选择0
    vadstringdnnVAD是否开启,dnn,默认,推荐模型;touch,关闭静音断句功能,用户手动停止录音。
    infilestringnull外部音频,可以是:资源路径或回调方法名 该参数支持设置为: 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内部缓冲不够。
    multiInvokebooltrue是否保持多次语音识别结果回调
    checkPermRecordAudiobooltrue是否开启检查录音权限
    isFinishboolfalse是否结束识别
    • PID,语种详细说明

      • 在线参数, 请根据语言, 输入法模型及是否需要在线语义,来选择PID。

        • 语言:目前支持中文普通话,四川话,粤语,和英语四个
        • 输入法模型:适用于较长的句子输入。默认有标点,不支持在线语义; 开启标点后,不支持本地语义。
        • 自训练平台模型: 在输入法模型的基础上,可以自行上传词库和句库,生成您自己的训练模型。
        • 在线语义:在线语义只支持普通话(本地语义也是只支持普通话)。在线语义对识别结果的文字,再做结构化解析,找到语句的“关键词”。在线语义详细说明请查看“语义理解协议”文档。
        • Unit 2.0 语义:功能类似在线语义,但是可以自定义解析。
        • 补充:PID=8001,自训练平台输入法模型;PID=8002,自训练平台搜索模型。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BXsZ6cKj-1659206646080)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/45befc001c1743faaa680e4320608a90~tplv-k3u1fbpfcp-zoom-1.image)]

    • 代码示例

      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
                  // })
              }
          }
      );
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
    • 接口返回格式

      {
          code: 1001,
          result: '识别结果'
      }
      
      • 1
      • 2
      • 3
      • 4
    • 接口回调结果状态码说明

      状态码说明
      1000识别开始
      1001识别成功,返回识别结果 解析识别结果格式,参考:https://cloud.baidu.com/doc/SPEECH/s/Qkh089ydu 识别结果错误码参考:https://cloud.baidu.com/doc/SPEECH/s/qk38lxh1q
      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 = '开始在线识别';
          }
      });
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12

    五、后续计划

    • 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

    各位同学,对于插件使用还有疑问的,可以加QQ群(170683293)咨询。

  • 相关阅读:
    使用C++11实现对象池
    百度是否收录查询易语言代码
    年薪百万,一夜归零!程序员,过了 35 岁,你还能做什么?
    Java 精简字体 ttf 文件(精简后的字体文件只包含需要的文字字符)
    深入理解浏览器渲染原理
    无人机基础知识:多旋翼无人机系统基本组成
    计数排序算法
    【SpringBoot】请求与响应参数 IoC与DI 总结
    c语言入门---调试技巧
    使用分类权重解决数据不平衡的问题
  • 原文地址:https://blog.csdn.net/liupan6889/article/details/126080566