#!/usr/bin/env bash # # Auto generated! Please DO NOT EDIT! # Please set the environment variable ANDROID_NDK # before running this script # Inside the $ANDROID_NDK directory, you can find a binary ndk-build # and some other files like the file "build/cmake/android.toolchain.cmake" set -ex log() { # This function is from espnet local fname=${BASH_SOURCE[1]##*/} echo -e "$(date '+%Y-%m-%d %H:%M:%S') (${fname}:${BASH_LINENO[0]}:${FUNCNAME[1]}) $*" } SHERPA_ONNX_VERSION=$(grep "SHERPA_ONNX_VERSION" ./CMakeLists.txt | cut -d " " -f 2 | cut -d '"' -f 2) log "Building TTS engine APK for sherpa-onnx v${SHERPA_ONNX_VERSION}" log "====================arm64-v8a=================" ./build-android-arm64-v8a.sh log "====================armv7-eabi================" ./build-android-armv7-eabi.sh log "====================x86-64====================" ./build-android-x86-64.sh log "====================x86====================" ./build-android-x86.sh export SHERPA_ONNX_ENABLE_TTS=ON mkdir -p apks {% for tts_model in tts_model_list %} pushd ./android/SherpaOnnxTtsEngine/app/src/main/assets/ model_dir={{ tts_model.model_dir }} model_name={{ tts_model.model_name }} acoustic_model_name={{ tts_model.acoustic_model_name }} vocoder={{ tts_model.vocoder }} voices={{ tts_model.voices }} lang={{ tts_model.lang }} lang_iso_639_3={{ tts_model.lang_iso_639_3 }} wget -qq https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/$model_dir.tar.bz2 tar xf $model_dir.tar.bz2 rm $model_dir.tar.bz2 {% if tts_model.vocoder %} curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/vocoder-models/$vocoder {% endif %} popd # Now we are at the project root directory git checkout . pushd android/SherpaOnnxTtsEngine/app/src/main/java/com/k2fsa/sherpa/onnx/tts/engine sed -i.bak s/"modelDir = null"/"modelDir = \"$model_dir\""/ ./TtsEngine.kt sed -i.bak s/"lang = null"/"lang = \"$lang_iso_639_3\""/ ./TtsEngine.kt {% if tts_model.model_name %} sed -i.bak s/"modelName = null"/"modelName = \"$model_name\""/ ./TtsEngine.kt {% endif %} {% if tts_model.acoustic_model_name %} sed -i.bak s/"acousticModelName = null"/"acousticModelName = \"$acoustic_model_name\""/ ./TtsEngine.kt {% endif %} {% if tts_model.vocoder %} sed -i.bak s/"vocoder = null"/"vocoder = \"$vocoder\""/ ./TtsEngine.kt {% endif %} {% if tts_model.voices %} sed -i.bak s/"voices = null"/"voices = \"$voices\""/ ./TtsEngine.kt {% endif %} {% if tts_model.rule_fsts %} rule_fsts={{ tts_model.rule_fsts }} sed -i.bak s%"ruleFsts = null"%"ruleFsts = \"$rule_fsts\""% ./TtsEngine.kt {% endif %} {% if tts_model.rule_fars %} rule_fars={{ tts_model.rule_fars }} sed -i.bak s%"ruleFsts = null"%"ruleFars = \"$rule_fars\""% ./TtsEngine.kt {% endif %} {% if tts_model.dict_dir %} dict_dir={{ tts_model.dict_dir }} sed -i.bak s%"dictDir = null"%"dictDir = \"$dict_dir\""% ./TtsEngine.kt {% endif %} {% if tts_model.data_dir %} data_dir={{ tts_model.data_dir }} sed -i.bak s%"dataDir = null"%"dataDir = \"$data_dir\""% ./TtsEngine.kt {% elif not tts_model.is_char %} sed -i.bak s/"lexicon = null"/"lexicon = \"lexicon.txt\""/ ./TtsEngine.kt {% endif %} {% if tts_model.lexicon %} lexicon={{ tts_model.lexicon }} sed -i.bak s%"lexicon = null"%"lexicon = \"$lexicon\""% ./TtsEngine.kt {% endif %} git diff popd if [[ $model_dir == vits-melo-tts-zh_en ]]; then lang=zh_en fi if [[ $model_dir == kokoro-multi-lang-v1_0 ]]; then lang=zh_en fi for arch in arm64-v8a armeabi-v7a x86_64 x86; do log "------------------------------------------------------------" log "build tts apk for $arch" log "------------------------------------------------------------" src_arch=$arch if [ $arch == "armeabi-v7a" ]; then src_arch=armv7-eabi elif [ $arch == "x86_64" ]; then src_arch=x86-64 fi ls -lh ./build-android-$src_arch/install/lib/*.so cp -v ./build-android-$src_arch/install/lib/*.so ./android/SherpaOnnxTtsEngine/app/src/main/jniLibs/$arch/ pushd ./android/SherpaOnnxTtsEngine sed -i.bak s/2048/9012/g ./gradle.properties git diff ./gradle.properties ./gradlew assembleRelease popd mv android/SherpaOnnxTtsEngine/app/build/outputs/apk/release/app-release-unsigned.apk ./apks/sherpa-onnx-${SHERPA_ONNX_VERSION}-$arch-$lang-tts-engine-$model_dir.apk ls -lh apks rm -v ./android/SherpaOnnxTtsEngine/app/src/main/jniLibs/$arch/*.so done rm -rf ./android/SherpaOnnxTtsEngine/app/src/main/assets/$model_dir rm -fv ./android/SherpaOnnxTtsEngine/app/src/main/assets/*.onnx {% endfor %} git checkout . ls -lh apks/