Files
fegger 50d00286d7 Android: remote transcription via whisper.cpp server (Phase 2)
- 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
2026-09-07 13:26:02 +02:00

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)
}