更新记录

1.4.0(2023-07-14)

修复上个包上传错误导致的bug

1.30(2023-07-11)

修复ios,start触发异常

1.20(2023-07-10)

修复ios 8000采样率传输不正确

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:6.0 - 14.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:9 - 15

原生插件通用使用流程:

  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原生插件配置”->”云端插件“列表中删除该插件重新选择


导入资源:

// 引入录音对象
/* #ifdef APP-PLUS */
import Record from './record.js';
/* #endif */
// 录音权限申请
const { authForApp } = require('../utils/appPermission');
// 腾讯云asr识别对象
import TengxunAsr from './TengxunAsr.js';
// 阿里云 asr识别
import AliyunAsr from './AliyunAsr.js';
// 科大讯飞 asr识别
import XunfeiAsr from './XunfeiAsr.js';
let recorderManager = null;
let asr = null;
let innerAudioContext = null;

asr初始化

   asrInit() {
      // 初始阿里云asr,输入必要的参数
      // asr = new AliyunAsr({
      //   accessKeyId: '',
      //   accessKeySecret: '',
      //   appkey: ''
      //   params: {}
      // });

      // 初始科大讯飞asr,输入必要的参数
      // asr = new XunfeiAsr({
      //   appid: '',
      //   appkey: '',
      //   params: {}
      // });

      // 初始化腾讯云asr,输入必要的参数,输入secretKey和secretId直接跑demo
      asr = new TengxunAsr({
        secretKey: '',
        secretId: '',
        appId: '1323065199',
        params: {}
      });

      // asr,有open和close两个主要方法
      asr.init({
        onOpen: res => {},
        onMessage: res => {
          console.log('第三方的asr返回的数据:', res);

          // 科大讯飞返回结果处理,不需要删除
          if (asr.type === 'xunfei') {
          }

          // 阿里云返回结果处理,不需要删除
          if (asr.type === 'ali') {
            if (res.header.name === 'TranscriptionResultChanged') {
              console.log('%c Line:92 🍓 TranscriptionResultChanged=============', res.payload.result);
              this.addContent = res.payload.result;
            } else if (res.header.name === 'TranscriptionStarted') {
              // 'frameSize':kb
              // 'sampleRate':int,//采样率(16000采样率插件写死16000)8000采样率插件的要写死8000
              // 'duration':number // 默认录音时间
              // 生成的录音格式一律是pcm,这种格式基本兼容所有市场的asr第三方
              // app端录音需要这是四个参数,其他参数内置好了默认值。不建议修改,因为这种配置比较稳定
              // 微信小程序端可以根据微信小程序文档自行写入参
              recorderManager.start({
                frameSize: 5,
                duration: 30 * 60 * 1000,
                sampleRate: 16000,
                format: 'pcm'
              });
            } else if (res.header.name === 'SentenceEnd') {
              console.log('%c Line:94 🥓 SentenceEnd====================', res.payload.result);
              this.content = this.content + res.payload.result;
              this.addContent = '';
            }
          }

          // 不同第三方的asr返回的文字数据的字段不一样,腾讯云是voice_text_str,阿里云可能是其他,自己根据对应文档去写 腾讯云asr返回结果的,不需要删除
          if (asr.type === 'tengxun') {
            const { voice_text_str = '' } = res.result || {};
            this.addContent = voice_text_str;
          }
        },
        onClose: res => {}
      });
    },

开始录音

    async start() {
      // 修改自定义入参
      asr?.changeParams(this.asrParams);
      // 开始录音前链接asr,超过15秒没发音频数据会自动断开
      await asr?.open();
      // 等一点初始化时间,可以在这个业务逻辑上添加ui 的loading
      await new Promise(resolve => setTimeout(resolve, 200));
      // 没有asr或者asr是腾讯/讯飞的时候走这个
      if (asr?.type === 'tengxun' || asr?.type === 'xunfei' || !asr) {
        // 'frameSize':kb
        // 'sampleRate':int,//采样率(16000采样率稳定,能兼容所有,不能改)
        // 'duration':number // 默认录音时间
        // 生成的录音格式一律是pcm,这种格式基本兼容所有市场的asr第三方
        // app端录音需要这是四个参数,其他参数内置好了默认值。不建议修改,因为这种配置比较稳定
        // 微信小程序端可以根据微信小程序文档自行写入参
        recorderManager.start({
          frameSize: 2,
          duration: 30 * 60 * 1000,
          sampleRate: 16000,
          format: 'PCM',
          // 是否需要生成录音临时地址。不需要最好为false,减轻开销
          createPath: true
        });
      }
    },

具体细节看demo。下载demo=》访问https://ext.dcloud.net.cn/plugin?id=9538点击右上角试用

随后:安装依赖=》打包基座=》填入(腾讯云)asr业务账号secretKey,secretId,appid就能跑起来

隐私、权限声明

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

"android.permission.RECORD_AUDIO"

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

前端websocket实现asr对接阿里云的参考地址:https://zhuanlan.zhihu.com/p/651711848 前端websocket实现asr对接阿里云的参考地址:https://zhuanlan.zhihu.com/p/651711848

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

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