更多内容:XiaoJ的知识星球
目录
-
- 1.Android环境
-
- 1)Android Studio安装
- 2)NDK安装
- 2.构建sherpa-onnx
-
- 1)克隆仓库
- 2)为arm64-v8a构建
- 3.准备模型
-
- 1)下载模型
- 2)定义APK工程中使用模型
- 4.生成运行APK
-
- 0)替换gradle镜像
- 1)ADB连接设备
- 2)构建APK
- 3)使用APK
- 脚本构建APK
- 参考:
.
1.Android环境
1)Android Studio安装
(1)安装你的Android Studio,请参阅 https://developer.android.com/studio
(2)设置环境变量:
- 注意:使用Android Studio 2024.1.2.12,其他版本可能存在报错
shell
export MY_ENV_HOME=$HOME/Env
export AS_DIR=$MY_ENV_HOME/App/Android_Studio/android-studio-2024.1.2.12
export ANDROID_HOME=$MY_ENV_HOME/App/Android_Studio/Android-2024.1.2.12
export ANDROID_NDK=$ANDROID_HOME/Sdk/ndk/28.0.12674087
export ANDROID_NDK_HOME=$ANDROID_HOME/Sdk/ndk/28.0.12674087
export PATH=$PATH:$AS_DIR/bin
2)NDK安装
(1)安装你的Android NDK,请参阅:。。。
(2)设置环境变量:
shell
export ANDROID_NDK=<path>/ndk/22.1.7171670
.
2.构建sherpa-onnx
1)克隆仓库
shell
git clone https://github.com/k2-fsa/sherpa-onnx
# 进入工程目录进行以下操作
cd sherpa-onnx
: << COMMENT
# 查看当前仓库版本
$ git rev-parse HEAD
5f0049bd6aae3bf90eb3d5a0d13df4427bee1306
# 克隆该仓库
git clone https://github.com/k2-fsa/sherpa-onnx
cd sherpa-onnx
git checkout 5f0049bd6aae3bf90eb3d5a0d13df4427bee1306
COMMENT
目前支持 Android ABI 构建类型 :arm64-v8a、armeabi-v7a、x86_64、x86;
2)为arm64-v8a构建
(1)github访问失败问题:修改为镜像(bgithub.xyz)
shell
# 修改github地址:避免访问github失败,下载库失败
vi cmake/kaldi-native-fbank.cmake
# Please also change ../pack-for-embedded-systems.sh
#set(kaldi_native_fbank_URL "https://github.com/csukuangfj/kaldi-native-fbank/archive/refs/tags/v1.18.7.tar.gz")
set(kaldi_native_fbank_URL "https://bgithub.xyz/csukuangfj/kaldi-native-fbank/archive/refs/tags/v1.18.7.tar.gz")
vi cmake/kaldifst.cmake
#set(kaldifst_URL "https://github.com/k2-fsa/kaldifst/archive/refs/tags/v1.7.17.tar.gz")
set(kaldifst_URL "https://bgithub.xyz/k2-fsa/kaldifst/archive/refs/tags/v1.7.17.tar.gz")
# 直接替换构建脚本中内容
cp build-android-arm64-v8a.sh build-android-arm64-v8a.sh.bak
sed -i 's/github\.com/bgithub\.xyz/g' build-android-arm64-v8a.sh
(2)构建arm64-v8a版so:
shell
# 设置ANDROID_NDK环境变量
export ANDROID_NDK=<you_path>
# 构建
./build-android-arm64-v8a.sh
# 构建成功,则存在如下so
ls -lh build-android-arm64-v8a/install/lib/
-rw-r--r-- 1 user user 15M Jul 28 12:54 libonnxruntime.so
-rwxr-xr-x 1 user user 3.7M Jul 28 12:54 libsherpa-onnx-jni.so
(3)复制文件到Android工程:
shell
# 复制so
cp build-android-arm64-v8a/install/lib/lib*.so android/SherpaOnnxTts/app/src/main/jniLibs/arm64-v8a/
# 覆盖软连接文件
cp ./sherpa-onnx/kotlin-api/Tts.kt android/SherpaOnnxTts/app/src/main/java/com/k2fsa/sherpa/onnx
.
3.准备模型
1)下载模型
下载预训练模型模型,并将其放入APP对应路径中:
-
这里使用:matcha-icefall-zh-en
-
需要下载声学模型和声码器模型(acoustic model 、vocoder model)
shell
cd android/SherpaOnnxTts/app/src/main/assets/
# Download acoustic model
wget https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/matcha-icefall-zh-en.tar.bz2
tar xvf matcha-icefall-zh-en.tar.bz2
rm matcha-icefall-zh-en.tar.bz2
# Download vocoder model
wget https://github.com/k2-fsa/sherpa-onnx/releases/download/vocoder-models/vocos-16khz-univ.onnx
2)定义APK工程中使用模型
修改Android APK工程中,对应模型相关内容。
-
在 android/SherpaOnnxTts/app/src/main/java/com/k2fsa/sherpa/onnx/MainActivity.kt 文件中,
-
initTts函数里,取消以下内容的注释即可:
kotlin
// Example 12
// matcha-icefall-zh-en
// https://k2-fsa.github.io/sherpa/onnx/tts/all/Chinese-English/matcha-icefall-zh-en.html
modelDir = "matcha-icefall-zh-en"
acousticModelName = "model-steps-3.onnx"
vocoder = "vocos-16khz-univ.onnx" // Vocoder should be downloaded separately; place in the **root directory of your resources folder**, not under modelDir.
dataDir = "matcha-icefall-zh-en/espeak-ng-data"
lexicon = "lexicon.txt"
.
4.生成运行APK
0)替换gradle镜像
shell
vi android/SherpaOnnxTts/gradle/wrapper/gradle-wrapper.properties
# distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.2-bin.zip
1)ADB连接设备
shell
# 1.USB连接Android设备:使用数据线将Android设备(如Android手机),连接到电脑
# 2.打开设备开发者模式、USB调试:
# 2.1 开启开发者选项:
# - 进入手机"设置" → "关于手机"
# - 找到"设备版本"或"MIUI版本"等信息,连续点击7次(不同品牌手机名称可能略有不同)
# - 系统会提示"您已进入开发者模式"
# 2.2 启用USB调试:
# - 返回设置主界面,找到新出现的"系统"或"更多设置"中的"开发者选项"
# - 找到并开启"USB调试"选项
# - 部分手机还需开启"USB安装"和"无线调试"选项
# 3.查看确保设备已连接
adb devices
2)构建APK
注意:使用Android Studio 2024.1.2.12,其他版本可能存在报错。
shell
# 1.构建APK
studio.sh # Linux系统中打开Android studio 2024.1.2.12
# 打开app文件夹:sherpa-ncnn/android/SherpaOnnxTts
# 等待build :首次构建较慢
# 点击:Run 'app' 图标
# 2.验证APK
# 同意APK安装及权限
# 打开APK -> 键入文本内容 -> Generate:生成并播放 --> Play:播放 --> Stop:停止
更多安卓APK可在以下网站找到:https://k2-fsa.github.io/sherpa/onnx/tts/apk.html
.
报错:缺失的Android SDK
shell
# 构建项目时,可能报错:
Failed to find Platform SDK with path: platforms;android-32
# 原因:
缺少项目配置要求使用的 Android SDK 32 版本
- 解决方法:
shell
# 1.安装 Android SDK Platform 32
(1)在 Android Studio 软件中
(2)转到 Tools → SDK Manager
(3)在 SDK Platforms 标签页中
(4)勾选 Android 12.1 (S+) 或 API Level 32
(5)点击 Apply 并确认安装
# 2.清理构建内容,重新构建
(1)删除文件夹:.gradle 和 app/build 文件夹
(2)Android Studio 运行重新构建
.
3)使用APK
去以下路径获取APK:android/SherpaOnnxTts/app/build/outputs/apk/debug/app-debug.apk
使用命令安装APK:adb install <your_path>/app-debug.apk
.
脚本构建APK
shell
pip install iso639-lang jinja2
cd scripts/apk/
python generate-tts-apk-script.py
chmod 777 build-apk-tts.sh
cd -
export ANDROID_NDK=<you_path> # 设置你自己的ANDROID_NDK路径
./scripts/apk/build-apk-tts.sh
以上将为sherpa-onnx项目中包含的众多TTS模型批量生成Android APK安装包。
.
参考:
-
主页:https://k2-fsa.github.io/sherpa/onnx/tts/all/Chinese-English/matcha-icefall-zh-en.html
-
SherpaOnnxTts:https://k2-fsa.github.io/sherpa/onnx/tts/index.html
-
APK构建参考:https://k2-fsa.github.io/sherpa/onnx/android/build-sherpa-onnx.html
.
声明:资源可能存在第三方来源,若有侵权请联系删除!