50d00286d7
- new Transcriber interface makes the recorder service engine-agnostic; WhisperEngine (local JNI) and new RemoteWhisperEngine (POST /inference, verbose_json, in-memory WAV upload via new WavEncoder) implement it - SessionConfig carries serverUrl; when set, BOTH the live pass and the final pass transcribe remotely (server owns the model, e.g. large-v3 on GPU); local engine remains the offline fallback - UI: Transcribe on: phone/server dropdown + server URL field, persisted in SharedPreferences; model controls grey out in server mode; manual Transcribe also routes to the server - network security config permits cleartext HTTP for user-configured LAN/tailnet servers (documented; HTTPS works either way) - WavEncoder round-trip unit test (11 total green); validated phone -> Tailscale -> R9700 with large-v3 before the app-side change
36 lines
822 B
Kotlin
36 lines
822 B
Kotlin
plugins {
|
|
alias(libs.plugins.android.library)
|
|
}
|
|
|
|
android {
|
|
namespace = "com.meetrec.core.whisper"
|
|
compileSdk = 36
|
|
|
|
defaultConfig {
|
|
minSdk = 29
|
|
ndk {
|
|
// Fairphone 6 (and virtually all current phones) are arm64.
|
|
abiFilters += "arm64-v8a"
|
|
}
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility = JavaVersion.VERSION_17
|
|
targetCompatibility = JavaVersion.VERSION_17
|
|
}
|
|
|
|
externalNativeBuild {
|
|
cmake {
|
|
path = file("src/main/cpp/CMakeLists.txt")
|
|
version = "3.22.1"
|
|
}
|
|
}
|
|
|
|
ndkVersion = "27.1.12297006"
|
|
}
|
|
|
|
dependencies {
|
|
implementation(project(":core:recording")) // WavEncoder/Audio for uploads
|
|
// TranscriptFiles is pure Kotlin and unit tested on the JVM.
|
|
testImplementation(libs.junit)
|
|
} |