第二章 编译运行Android Wenet语音识别

2024-06-22 02:20

本文主要是介绍第二章 编译运行Android Wenet语音识别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

系列文章目录

第一章 基于Ubuntu 24.04 搭建wenet语音转文字
第二章 编译运行Android Wenet语音识别


文章目录

  • 系列文章目录
  • 前言
  • 一、Android Wenet语音识别
  • 二、使用步骤
    • 1.修改gradle配置
    • 2.下载预训练模型
    • 3.执行task extractAARForNativeBuild
    • 4.构建并运行APK
    • 5.遇到问题
  • 总结


前言

本文继续前一章内容,开始前,请先准备好Wenet源码。


一、Android Wenet语音识别

本文目标是使用Android studio 运行Wenet语音识别-Android Demo。

二、使用步骤

1.修改gradle配置

  • 修改文件 wenet/runtime/android/build.gradle,
    gradle:8.4.1 版本号改为与自己的Android studio匹配;
buildscript {repositories {google()
//        jcenter()mavenCentral()gradlePluginPortal()}dependencies {classpath 'com.android.tools.build:gradle:8.4.1'}
}allprojects {repositories {google()
//        jcenter()mavenCentral()maven { url 'https://jitpack.io' }}
}task clean(type: Delete) {delete rootProject.buildDir
}
  • 修改文件 wenet/runtime/android/app/build.gradle,
// 增加命名空间
namespace "com.mobvoi.wenet"
  • 修改文件 wenet/runtime/android/gradle/wrapper/gradle-wrapper.properties,
    将gradle版本号改为与自己的Android studio匹配;
    distributionUrl=https://services.gradle.org/distributions/gradle-8.6-bin.zip

2.下载预训练模型

官方提供了两种,这里我们下载中文的即可;

  • 中文演讲
  • 英语(GigaSpeech)

下载解压后,将“final.zip”和“units.txt”放入Androidde(“app/src/main/assets”)文件夹中;

3.执行task extractAARForNativeBuild

在文件wenet/runtime/android/app/build.gradle中点击运行按钮 执行task extractAARForNativeBuild

在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/a0c6431095fa44a7957be1391bc1ca7c.png =300)在build下生成pytorch_android*.aar文件;
在这里插入图片描述
修改wenet/runtime/android/app/src/main/cpp/cmake/libtorch.cmake,配置版本号

# Change version in runtime/android/app/build.gradle.file(GLOB PYTORCH_INCLUDE_DIRS "${build_DIR}/pytorch_android-1.13.0.aar/headers")file(GLOB PYTORCH_LINK_DIRS "${build_DIR}/pytorch_android-1.13.0.aar/jni/${ANDROID_ABI}")

4.构建并运行APK

最后构建并运行APK即可。
在这里插入图片描述

5.遇到问题

  • CMake Error: The following variables are used in this project, but they are set to NOTFOUND. PYTORCH_LIBRARY

原因是没有执行第3步:执行task extractAARForNativeBuild;


总结

至此Wenet的Android Demo 已跑通运行。
注意:此方式运行的Android Demo 语音识别过程无需移动网络或Wifi。

参考
https://github.com/wenet-e2e/wenet/blob/main/runtime/android/README.md

这篇关于第二章 编译运行Android Wenet语音识别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1083018

相关文章

Java使用Spire.Barcode for Java实现条形码生成与识别

《Java使用Spire.BarcodeforJava实现条形码生成与识别》在现代商业和技术领域,条形码无处不在,本教程将引导您深入了解如何在您的Java项目中利用Spire.Barcodefor... 目录1. Spire.Barcode for Java 简介与环境配置2. 使用 Spire.Barco

Android使用java实现网络连通性检查详解

《Android使用java实现网络连通性检查详解》这篇文章主要为大家详细介绍了Android使用java实现网络连通性检查的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录NetCheck.Java(可直接拷贝)使用示例(Activity/Fragment 内)权限要求

2025最新版Android Studio安装及组件配置教程(SDK、JDK、Gradle)

《2025最新版AndroidStudio安装及组件配置教程(SDK、JDK、Gradle)》:本文主要介绍2025最新版AndroidStudio安装及组件配置(SDK、JDK、Gradle... 目录原生 android 简介Android Studio必备组件一、Android Studio安装二、A

Java编译错误java.lang.NoSuchFieldError的解决方案详析

《Java编译错误java.lang.NoSuchFieldError的解决方案详析》java.lang.NoSuchFieldError是Java中的一种运行时错误,:本文主要介绍Java编译错... 目录前言解决方案1. 统一JDK版本环境2. 优化maven-compiler-plugin配置3. 清

GO语言中gox交叉编译的实现

《GO语言中gox交叉编译的实现》本文主要介绍了GO语言中gox交叉编译的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、安装二、使用三、遇到的问题1、开启CGO2、修改环境变量最近在工作中使用GO语言进行编码开发,因

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

如何正确识别一台POE交换机的好坏? 选购可靠的POE交换机注意事项

《如何正确识别一台POE交换机的好坏?选购可靠的POE交换机注意事项》POE技术已经历多年发展,广泛应用于安防监控和无线覆盖等领域,需求量大,但质量参差不齐,市场上POE交换机的品牌繁多,如何正确识... 目录生产标识1. 必须包含的信息2. 劣质设备的常见问题供电标准1. 正规的 POE 标准2. 劣质设

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

在Android中使用WebView在线查看PDF文件的方法示例

《在Android中使用WebView在线查看PDF文件的方法示例》在Android应用开发中,有时我们需要在客户端展示PDF文件,以便用户可以阅读或交互,:本文主要介绍在Android中使用We... 目录简介:1. WebView组件介绍2. 在androidManifest.XML中添加Interne

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手