第二章 编译运行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

相关文章

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

Python运行中频繁出现Restart提示的解决办法

《Python运行中频繁出现Restart提示的解决办法》在编程的世界里,遇到各种奇怪的问题是家常便饭,但是,当你的Python程序在运行过程中频繁出现“Restart”提示时,这可能不仅仅是令人头疼... 目录问题描述代码示例无限循环递归调用内存泄漏解决方案1. 检查代码逻辑无限循环递归调用内存泄漏2.

如何解决idea的Module:‘:app‘platform‘android-32‘not found.问题

《如何解决idea的Module:‘:app‘platform‘android-32‘notfound.问题》:本文主要介绍如何解决idea的Module:‘:app‘platform‘andr... 目录idea的Module:‘:app‘pwww.chinasem.cnlatform‘android-32

Android实现打开本地pdf文件的两种方式

《Android实现打开本地pdf文件的两种方式》在现代应用中,PDF格式因其跨平台、稳定性好、展示内容一致等特点,在Android平台上,如何高效地打开本地PDF文件,不仅关系到用户体验,也直接影响... 目录一、项目概述二、相关知识2.1 PDF文件基本概述2.2 android 文件访问与存储权限2.

Android Studio 配置国内镜像源的实现步骤

《AndroidStudio配置国内镜像源的实现步骤》本文主要介绍了AndroidStudio配置国内镜像源的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、修改 hosts,解决 SDK 下载失败的问题二、修改 gradle 地址,解决 gradle

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda