基于 Sherpa-ONNX + SenseVoice int8 实现 APK 端侧语音识别: - VoiceBridge: AudioRecord 录音 + 整段识别 + JS Bridge 回调 - ModelManager: 模型下载管理(自有服务器),支持断点续传/校验/删除 - 前端:语音按钮仅 APK 环境显示,识别结果回填 ProseMirror 编辑器 - 调试:文件日志 + /api/voice_debug 接收路由 - demo/sense_voice_demo.py: Python 端测 Demo versionCode 24→36, versionName 1.0.22→1.0.34
74 lines
2.3 KiB
Plaintext
74 lines
2.3 KiB
Plaintext
plugins {
|
||
id("com.android.application")
|
||
id("org.jetbrains.kotlin.android")
|
||
}
|
||
|
||
fun resolveConfig(name: String): String? {
|
||
return (project.findProperty(name) as String?)?.takeIf { it.isNotBlank() }
|
||
?: System.getenv(name)?.takeIf { it.isNotBlank() }
|
||
}
|
||
|
||
android {
|
||
namespace = "com.cyjai.agent"
|
||
compileSdk = 35
|
||
|
||
defaultConfig {
|
||
applicationId = "com.cyjai.agent"
|
||
minSdk = 24
|
||
targetSdk = 35
|
||
versionCode = 36
|
||
versionName = "1.0.34"
|
||
|
||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||
}
|
||
|
||
signingConfigs {
|
||
create("release") {
|
||
val storeFilePath = resolveConfig("ANDROID_KEYSTORE_PATH")
|
||
val storePass = resolveConfig("ANDROID_KEYSTORE_PASSWORD")
|
||
val keyAliasValue = resolveConfig("ANDROID_KEY_ALIAS")
|
||
val keyPass = resolveConfig("ANDROID_KEY_PASSWORD")
|
||
|
||
if (!storeFilePath.isNullOrBlank()) {
|
||
storeFile = file(storeFilePath)
|
||
}
|
||
storePassword = storePass
|
||
keyAlias = keyAliasValue
|
||
keyPassword = keyPass
|
||
}
|
||
}
|
||
|
||
buildTypes {
|
||
release {
|
||
isMinifyEnabled = false
|
||
signingConfig = signingConfigs.getByName("release")
|
||
proguardFiles(
|
||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||
"proguard-rules.pro"
|
||
)
|
||
}
|
||
}
|
||
|
||
compileOptions {
|
||
sourceCompatibility = JavaVersion.VERSION_17
|
||
targetCompatibility = JavaVersion.VERSION_17
|
||
}
|
||
kotlinOptions {
|
||
jvmTarget = "17"
|
||
}
|
||
}
|
||
|
||
dependencies {
|
||
implementation("androidx.core:core-ktx:1.13.1")
|
||
implementation("androidx.appcompat:appcompat:1.7.0")
|
||
implementation("com.google.android.material:material:1.12.0")
|
||
implementation("androidx.activity:activity-ktx:1.9.2")
|
||
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.8.0")
|
||
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1")
|
||
|
||
// sherpa-onnx 语音识别库(需手动下载 AAR 放到 app/libs/)
|
||
// 下载地址:https://huggingface.co/csukuangfj/sherpa-onnx-libs/tree/main/android/aar
|
||
// 下载最新 sherpa-onnx-*.aar 放到 app/libs/ 目录即可
|
||
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.aar"))))
|
||
}
|