更新记录

1.0.1(2022-11-17)

  • 解决插件包Android配置文件冲突问题

1.0.0(2022-08-01)

Android端百度语音在线识别发布

  • 支持多种高级配置,也可以使用默认配置

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.1 - 11.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


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

一、插件推荐

二、准备工作

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

2. 百度资料准备

三、快速上手

  • 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 是否结束识别
  • PID,语种详细说明

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

    百度PID语种.png

  • 代码示例

    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/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 = '开始在线识别';
      }
    });

五、后续计划

  • [ ] 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)咨询。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

* android.permission.READ_EXTERNAL_STORAGE 读取 SD 卡中的内容 * android.permission.WRITE_EXTERNAL_STORAGE 修改或删除 SD 卡中的内容 * android.permission.INTERNET 访问网络连接 * android.permission.RECORD_AUDIO 录音权限

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件功能使用百度开放平台语音识别SDK,参考其官方网站 https://ai.baidu.com/tech/speech

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问