Unity打包Android平台调用sherpa-onnx
https://github.com/xue-fei/sherpa-onnx-unity
最初测试了PC的Win和Linux平台,直接从nuget缓存包中拷贝相关文件,按示例写了语音转文字和文字转语音的测试代码,功能都正常。
然后是Android端,看了示例发现有编译好的jni.so之类的,装AndroidStudio建library一顿折腾,发现这种方法怕是要写很多Java代码,而且Unity里也要写很多代码,挺费劲,翻了翻 Issues 发现有预编译针对Android的libsherpa-onnx-cxx-api.so和libsherpa-onnx-c-api.so 等,sherpa-onnx-v1.10.46-android.tar.bz2 拷贝进Unity直接使用
对于打包安卓的相关修改,勾选了两个模板
mainTemplate.gradle 忽略了模型相关文件
apply plugin: 'com.android.library'
**APPLY_PLUGINS**
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
**DEPS**}
android {
compileSdkVersion **APIVERSION**
buildToolsVersion '**BUILDTOOLS**'
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
defaultConfig {
minSdkVersion **MINSDKVERSION**
targetSdkVersion **TARGETSDKVERSION**
ndk {
abiFilters **ABIFILTERS**
}
versionCode **VERSIONCODE**
versionName '**VERSIONNAME**'
consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD**
}
lintOptions {
abortOnError false
}
aaptOptions {
noCompress = **BUILTIN_NOCOMPRESS** + unityStreamingAssets.tokenize(', ')
//ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~"
ignoreAssetsPattern = 'sherpa-onnx-punct-ct-transformer-zh-en-vocab272727-2024-04-12:sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20:vits-melo-tts-zh_en:!silero_vad.onnx'
}**PACKAGING_OPTIONS**
}**REPOSITORIES**
**IL_CPP_BUILD_SETUP**
**SOURCE_BUILD_SETUP**
**EXTERNAL_SOURCES**
gradleTemplate.properties 注释了android.enableR8
org.gradle.jvmargs=-Xmx**JVM_HEAP_SIZE**M
org.gradle.parallel=true
#android.enableR8=**MINIFY_WITH_R_EIGHT**
unityStreamingAssets=**STREAMING_ASSETS**
**ADDITIONAL_PROPERTIES**