You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关于在独立Android应用中集成AlphaCephei(Vosk)库:能否直接引入含可用模型的.aar依赖而非添加独立模型模块

在独立Android应用中集成AlphaCephei(Vosk)库:能否直接引入含可用模型的.aar依赖而非添加独立模型模块

当然可以!我之前也纠结过这个问题——不想因为一个模型就多维护一个额外模块,后来摸索出了两种靠谱的方法,分享给你:

方法一:自行打包包含模型的AAR

这是最可控的方式,步骤也不复杂:

  • 新建一个空的Android Library模块(不用写任何业务代码),把Vosk的模型文件(就是那些.bin.json格式的核心文件)放到这个模块的src/main/assets目录下
  • 同步并编译这个Library模块,编译完成后,你可以在模块的build/outputs/aar/目录下找到生成的AAR文件
  • 把这个AAR文件复制到你主项目的libs目录里(如果主项目没有libs文件夹,直接新建一个就行)
  • 打开主项目的Module级别build.gradle文件,添加以下配置:
    // 在repositories块里添加本地libs目录的引用
    repositories {
        flatDir {
            dirs 'libs'
        }
    }
    
    // 在dependencies块里引入AAR和Vosk核心库
    dependencies {
        implementation(name: '你的AAR文件名(去掉.aar后缀)', ext: 'aar')
        // 注意替换成你实际使用的Vosk核心库版本
        implementation 'org.vosk:vosk-android:0.3.45'
    }
    
  • 同步项目后,模型文件就会被打包到你的APK中,完全不需要维护额外的模型模块

方法二:使用社区预打包的含模型AAR

  • 部分开发者或社区会打包好包含常用语言模型的AAR(比如英文、中文通用模型),你可以找找看这类资源
  • 如果找到匹配你Vosk版本的AAR,同样可以用方法一里的flatDir方式引入;如果该AAR发布到了Maven仓库,直接用标准的Maven依赖引入即可:
    implementation 'groupId:artifactId:version'
    

一些需要注意的点

  • 模型文件体积通常不小,打包到AAR后会让APK体积显著增加,如果你在意体积,可以考虑后续结合App Bundle的拆分功能,或者按需下载模型(不过这就偏离了直接引入AAR的需求了)
  • 一定要保证AAR中的模型版本和你使用的Vosk核心库版本完全匹配,否则可能出现识别失败、崩溃等兼容性问题
  • 如果你自己打包AAR,后续更新模型时,记得重新打包替换旧的AAR文件

希望这些方案能帮你解决问题,我当时就是用方法一搞定的,省了不少维护模块的精力!

内容来源于stack exchange

火山引擎 最新活动