更新记录

1.0.2(2023-11-12)

支持引用APK内部语音包

1.0.1(2023-05-04)

解决与其他插件编译冲突的问题

1.0.0(2022-12-07)

首次发布

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.1 - 10.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原生插件配置”->”云端插件“列表中删除该插件重新选择


离线语音识别插件(基于VOSK封装)

注意

本插件只是基于VOSK-API对语音识别功能进行了封装,并不包括语音识别的语音包,语音包需要单独下载。

下载地址:https://alphacephei.com/vosk/models

使用方式一(引用APK外部语音包)

  1. 引用插件

    const testModule = uni.requireNativePlugin("firefly-vosk")
  2. 下载语音包(如果有的话,可跳过)

    testModule.downloadModel(
       "http://192.168.0.105:8080/test/vosk-model-small-cn-0.22.zip", // 下载地址
       "vosk-model-small-cn-0.22.zip",  // 下载后,存放的文件名称
       (result) => {
           modal.toast({
               message: result.data, // 这个是下载后zip文件的存放位置
               duration: 2
           });
       }
    );
  3. 解压语音包(如果已解压,可跳过)

    testModule.unzipModel(
       “xxxx”,                       // 第2步获取的zip文件位置 
       "vosk-model-small-cn",        // 解压要存放的文件夹名称
       (result) => {
           modal.toast({
               message: result.data, // 解压后,语音模型的文件夹
               duration: 2
           });
       }
    );
  4. 初始化语音模型(识别之前必须要初始化)

    testModule.init(
       {
           "modelFilePath" : "xxxxxx" // 第3步解压后的文件夹
       }, 
       (result) => {
           modal.toast({
               message: result.msg,
               duration: 2
           });
       }
    );
  5. 启动语音识别并获取结果

    testModule.startMic();
    // 启动定时任务,每隔500毫秒,获取语音识别结果
    setInterval(() => {
       testModule.getResult((ret) => {
           console.log(ret.data)
           if (ret.data.partial != "") {
               console.log(ret.data.final + ret.data.partial)
           }
           if (ret.data.result != "") {
               console.log(ret.data.final + ret.data.result)
           }
       });
    }, 500);
  6. 停止语音识别

    // 停止之前,最好延迟一下,避免识别不全
    setTimeout(() => {
       testModule.stopMic()
    }, 2000);

使用方式二(引用APK内部语音包)

  1. 引用插件

    const testModule = uni.requireNativePlugin("firefly-vosk")
  2. HBuilder中添加语音包

    将语音包(zip格式的文件),放到HBuilder项目的static目录下。

    注意:云打包超过40M是要收费的,所以打自定义基座的时候,先不要把语音包(zip格式的文件)放到static目录下,等打完自定义基座再放。

  3. 初始化语音模型

    testModule.init({
       // static目录下压缩包的名字(默认为vosk-model-small-cn.zip),压缩文件要放到static目录下
    "zipFileName" : "vosk-model-small-cn.zip", 
       // 解压之后文件夹名称,如非必要请不要修改
    "modelName" : "vosk-model-small-cn" 
    }, (result) => {
    // result.data是压缩包解压之后的路径,为了避免每次初始化都解压缩,
       // 前端可把这个路径放到localStorage中,
       // 下次初始化的时候,直接把这个路径传过去,参数格式参照方式一的第4步
    console.log(result.data);
    modal.toast({
        message: result.msg,
        duration: 2
    });
    });
  4. 启动语音识别并获取结果

    testModule.startMic();
    // 启动定时任务,每隔500毫秒,获取语音识别结果
    setInterval(() => {
       testModule.getResult((ret) => {
           console.log(ret.data)
           if (ret.data.partial != "") {
               console.log(ret.data.final + ret.data.partial)
           }
           if (ret.data.result != "") {
               console.log(ret.data.final + ret.data.result)
           }
       });
    }, 500);
  5. 停止语音识别

    // 停止之前,最好延迟一下,避免识别不全
    setTimeout(() => {
       testModule.stopMic()
    }, 2000);

具体用法参照示例工程

隐私、权限声明

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

WRITE_EXTERNAL_STORAGE READ_EXTERNAL_STORAGE RECORD_AUDIO

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

插件不采集任何数据

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

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