build-apk.sh 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. #!/usr/bin/env bash
  2. # Please set the environment variable ANDROID_NDK
  3. # before running this script
  4. # Inside the $ANDROID_NDK directory, you can find a binary ndk-build
  5. # and some other files like the file "build/cmake/android.toolchain.cmake"
  6. set -e
  7. log() {
  8. # This function is from espnet
  9. local fname=${BASH_SOURCE[1]##*/}
  10. echo -e "$(date '+%Y-%m-%d %H:%M:%S') (${fname}:${BASH_LINENO[0]}:${FUNCNAME[1]}) $*"
  11. }
  12. SHERPA_NCNN_VERSION=$(grep "SHERPA_NCNN_VERSION" ./CMakeLists.txt | cut -d " " -f 2 | cut -d '"' -f 2)
  13. log "Building APK for sherpa-ncnn v${SHERPA_NCNN_VERSION}"
  14. log "====================arm64-v8a================="
  15. ./build-android-arm64-v8a.sh
  16. log "====================armv7-eabi================"
  17. ./build-android-armv7-eabi.sh
  18. log "====================x86-64===================="
  19. ./build-android-x86-64.sh
  20. log "====================x86===================="
  21. ./build-android-x86.sh
  22. mkdir -p apks
  23. # type 2
  24. log "https://huggingface.co/csukuangfj/sherpa-ncnn-streaming-zipformer-bilingual-zh-en-2023-02-13"
  25. # Download the model
  26. # see https://k2-fsa.github.io/sherpa/ncnn/pretrained_models/zipformer-transucer-models.html#csukuangfj-sherpa-ncnn-streaming-zipformer-bilingual-zh-en-2023-02-13-bilingual-chinese-english
  27. repo_url=https://huggingface.co/csukuangfj/sherpa-ncnn-streaming-zipformer-bilingual-zh-en-2023-02-13
  28. log "Start testing ${repo_url}"
  29. repo=$(basename $repo_url)
  30. log "Download pretrained model and test-data from $repo_url"
  31. GIT_LFS_SKIP_SMUDGE=1 git clone $repo_url
  32. pushd $repo
  33. git lfs pull --include "*.bin"
  34. # remove .git to save spaces
  35. rm -rf .git
  36. rm .gitattributes
  37. rm -rfv test_wavs
  38. rm -v export-for-ncnn-bilingual.sh
  39. rm README.md
  40. ls -lh
  41. popd
  42. mv -v $repo ./android/SherpaNcnn/app/src/main/assets/
  43. tree ./android/SherpaNcnn/app/src/main/assets/
  44. pushd android/SherpaNcnn/app/src/main/java/com/k2fsa/sherpa/ncnn
  45. sed -i.bak s/"type = 1"/"type = 2"/ ./MainActivity.kt
  46. git diff
  47. popd
  48. for arch in arm64-v8a armeabi-v7a x86_64 x86; do
  49. log "------------------------------------------------------------"
  50. log "build apk for $arch"
  51. log "------------------------------------------------------------"
  52. src_arch=$arch
  53. if [ $arch == "armeabi-v7a" ]; then
  54. src_arch=armv7-eabi
  55. elif [ $arch == "x86_64" ]; then
  56. src_arch=x86-64
  57. fi
  58. ls -lh ./build-android-$src_arch/install/lib/*.so
  59. cp -v ./build-android-$src_arch/install/lib/*.so ./android/SherpaNcnn/app/src/main/jniLibs/$arch/
  60. pushd ./android/SherpaNcnn
  61. ./gradlew build
  62. popd
  63. mv android/SherpaNcnn/app/build/outputs/apk/debug/app-debug.apk ./apks/sherpa-ncnn-${SHERPA_NCNN_VERSION}-cpu-$arch-bilingual-en-zh.apk
  64. ls -lh apks
  65. rm -v ./android/SherpaNcnn/app/src/main/jniLibs/$arch/*.so
  66. done
  67. git checkout .
  68. rm -rf ./android/SherpaNcnn/app/src/main/assets/$repo
  69. # type 3
  70. log "https://huggingface.co/csukuangfj/sherpa-ncnn-streaming-zipformer-en-2023-02-13"
  71. # Download the model
  72. # see https://k2-fsa.github.io/sherpa/ncnn/pretrained_models/zipformer-transucer-models.html#csukuangfj-sherpa-ncnn-streaming-zipformer-en-2023-02-13-english
  73. repo_url=https://huggingface.co/csukuangfj/sherpa-ncnn-streaming-zipformer-en-2023-02-13
  74. log "Start testing ${repo_url}"
  75. repo=$(basename $repo_url)
  76. log "Download pretrained model and test-data from $repo_url"
  77. GIT_LFS_SKIP_SMUDGE=1 git clone $repo_url
  78. pushd $repo
  79. git lfs pull --include "*.bin"
  80. # remove .git to save spaces
  81. rm -rf .git
  82. rm .gitattributes
  83. rm -rfv test_wavs
  84. rm -v README.md
  85. rm -v export*.sh
  86. ls -lh
  87. popd
  88. mv -v $repo ./android/SherpaNcnn/app/src/main/assets/
  89. tree ./android/SherpaNcnn/app/src/main/assets/
  90. pushd android/SherpaNcnn/app/src/main/java/com/k2fsa/sherpa/ncnn
  91. sed -i.bak s/"type = 1"/"type = 3"/ ./MainActivity.kt
  92. git diff
  93. popd
  94. for arch in arm64-v8a armeabi-v7a x86_64 x86; do
  95. log "------------------------------------------------------------"
  96. log "build apk for $arch"
  97. log "------------------------------------------------------------"
  98. src_arch=$arch
  99. if [ $arch == "armeabi-v7a" ]; then
  100. src_arch=armv7-eabi
  101. elif [ $arch == "x86_64" ]; then
  102. src_arch=x86-64
  103. fi
  104. ls -lh ./build-android-$src_arch/install/lib/*.so
  105. cp -v ./build-android-$src_arch/install/lib/*.so ./android/SherpaNcnn/app/src/main/jniLibs/$arch/
  106. pushd ./android/SherpaNcnn
  107. ./gradlew build
  108. popd
  109. mv android/SherpaNcnn/app/build/outputs/apk/debug/app-debug.apk ./apks/sherpa-ncnn-${SHERPA_NCNN_VERSION}-cpu-$arch-en.apk
  110. ls -lh apks
  111. rm -v ./android/SherpaNcnn/app/src/main/jniLibs/$arch/*.so
  112. done
  113. git checkout .
  114. rm -rf ./android/SherpaNcnn/app/src/main/assets/$repo
  115. # type 4
  116. log "https://huggingface.co/shaojieli/sherpa-ncnn-streaming-zipformer-fr-2023-04-14"
  117. # Download the model
  118. # see https://k2-fsa.github.io/sherpa/ncnn/pretrained_models/zipformer-transucer-models.html#shaojieli-sherpa-ncnn-streaming-zipformer-fr-2023-04-14
  119. repo_url=https://huggingface.co/shaojieli/sherpa-ncnn-streaming-zipformer-fr-2023-04-14
  120. log "Start testing ${repo_url}"
  121. repo=$(basename $repo_url)
  122. log "Download pretrained model and test-data from $repo_url"
  123. GIT_LFS_SKIP_SMUDGE=1 git clone $repo_url
  124. pushd $repo
  125. git lfs pull --include "*.bin"
  126. # remove .git to save spaces
  127. rm -rf .git
  128. rm .gitattributes
  129. rm -rfv test_wavs
  130. rm -v README.md
  131. rm -v export*.sh
  132. ls -lh
  133. popd
  134. mv -v $repo ./android/SherpaNcnn/app/src/main/assets/
  135. tree ./android/SherpaNcnn/app/src/main/assets/
  136. pushd android/SherpaNcnn/app/src/main/java/com/k2fsa/sherpa/ncnn
  137. sed -i.bak s/"type = 1"/"type = 4"/ ./MainActivity.kt
  138. git diff
  139. popd
  140. for arch in arm64-v8a armeabi-v7a x86_64 x86; do
  141. log "------------------------------------------------------------"
  142. log "build apk for $arch"
  143. log "------------------------------------------------------------"
  144. src_arch=$arch
  145. if [ $arch == "armeabi-v7a" ]; then
  146. src_arch=armv7-eabi
  147. elif [ $arch == "x86_64" ]; then
  148. src_arch=x86-64
  149. fi
  150. ls -lh ./build-android-$src_arch/install/lib/*.so
  151. cp -v ./build-android-$src_arch/install/lib/*.so ./android/SherpaNcnn/app/src/main/jniLibs/$arch/
  152. pushd ./android/SherpaNcnn
  153. ./gradlew build
  154. popd
  155. mv android/SherpaNcnn/app/build/outputs/apk/debug/app-debug.apk ./apks/sherpa-ncnn-${SHERPA_NCNN_VERSION}-cpu-$arch-fr.apk
  156. ls -lh apks
  157. rm -v ./android/SherpaNcnn/app/src/main/jniLibs/$arch/*.so
  158. done
  159. git checkout .
  160. rm -rf ./android/SherpaNcnn/app/src/main/assets/$repo
  161. ls -lh apks/