sherpa-onnx:构建SherpaOnnxTts APK -- 文本转语音大模型


更多内容: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安装包。

.


参考:

.


声明:资源可能存在第三方来源,若有侵权请联系删除!

相关推荐
带电的小王1 天前
Matcha-TTS:论文阅读 -- 文本转语音大模型
tts·matcha-tts
不老刘1 天前
Sherpa-onnx 离线 TTS 集成解决 openharmony 下语音播报完整方案
harmonyos·鸿蒙·tts·sherpa
skywalk81632 天前
VibeVoice轻量级实时文本转语音模型VibeVoice-Realtime-0.5B(暂不支持中文)
tts·voice
paopao_wu3 天前
声音克隆与情感合成:Dify接入IndexTTS2
人工智能·ai·tts
OpenBayes6 天前
教程上新丨微软开源VibeVoice,可实现90分钟4角色自然对话
人工智能·深度学习·机器学习·大语言模型·tts·对话生成·语音生成
丹宇码农8 天前
Index-TTS2 从零到一:完整安装与核心使用教程
人工智能·ai·tts
paopao_wu11 天前
智普GLM-TTS开源:可控且富含情感的零样本语音合成模型
人工智能·ai·开源·大模型·tts
minhuan12 天前
大模型应用:完整语音交互闭环:TTS+ASR融合系统可视化场景实践.22
人工智能·语音识别·tts·asr·语音大模型应用
モンキー・D・小菜鸡儿15 天前
Android 系统TTS(文字转语音)解析
android·tts