324c427c74
STT-модуль для отладки (без UI): WhisperStt (offline whisper int8, CPU), VadSegmenter (Silero VAD, фразы), WavReader (16k mono s16), SttDebug (распознавание wav-файла по фразам с печатью в лог). Вызов: am start --ez stt_debug true (первый wav из filesDir/samples). Модели — в filesDir/models (вне git): small-encoder/decoder.int8.onnx, small-tokens.txt, silero_vad.onnx (fp32!). Грабли, найденные на эмуляторе (Android 15): - Silero VAD int8 (643КБ) молчит в Android-рантайме — нужна fp32 (2.2МБ) - WavReader: littleShort возвращал беззнаковое 0..65535 — сэмплы с DC-offset, whisper давал мусор; теперь знаковый -32768..32767 - VAD требует подачу окнами ровно window_size (целиком — переполнение) - Модели кладутся через adb push /data/local/tmp + run-as cp (внешний каталог приложения на Android 15 не видит adb-файлы) Проверено на эмуляторе (CPU): «раз два три четыре пять» → «Раз, два 3 4 5», грека → почти идеально, masha/anton → 21 фраза, диалог распознан. README: таблица жестов обновлена (TripleClick — безусловный вызов).
73 lines
2.3 KiB
Kotlin
73 lines
2.3 KiB
Kotlin
plugins {
|
|
alias(libs.plugins.android.application)
|
|
alias(libs.plugins.kotlin.android)
|
|
alias(libs.plugins.kotlinx.serialization)
|
|
alias(libs.plugins.compose.compiler)
|
|
}
|
|
|
|
android {
|
|
namespace = "pw.binom.viewmate.phone"
|
|
compileSdk = 35
|
|
|
|
defaultConfig {
|
|
applicationId = "pw.binom.viewmate.phone"
|
|
minSdk = 26
|
|
targetSdk = 34
|
|
versionCode = 1
|
|
versionName = "0.1.0"
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
isMinifyEnabled = false
|
|
}
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility = JavaVersion.VERSION_17
|
|
targetCompatibility = JavaVersion.VERSION_17
|
|
}
|
|
|
|
kotlinOptions {
|
|
jvmTarget = "17"
|
|
}
|
|
|
|
buildFeatures {
|
|
compose = true
|
|
}
|
|
|
|
}
|
|
|
|
dependencies {
|
|
implementation("androidx.appcompat:appcompat:1.3.0")
|
|
implementation("androidx.core:core-ktx:1.7.0")
|
|
implementation(libs.androidx.activity.compose)
|
|
implementation(platform(libs.androidx.compose.bom))
|
|
implementation(libs.android.material3)
|
|
implementation("androidx.compose.ui:ui")
|
|
implementation("androidx.compose.foundation:foundation")
|
|
implementation("io.coil-kt:coil-compose:2.6.0")
|
|
implementation("com.squareup.okhttp3:okhttp:4.12.0")
|
|
implementation(libs.exoplayer)
|
|
implementation(libs.media3.exoplayer)
|
|
implementation(libs.kotlinx.coroutines.android)
|
|
implementation(libs.kotlinx.serialization.json)
|
|
implementation(project(":lib-core"))
|
|
|
|
// Офлайн-распознавание речи (sherpa-onnx + Whisper), JitPack
|
|
implementation("com.github.k2-fsa.sherpa-onnx:sherpa-onnx:v1.13.6")
|
|
|
|
// WS-сервер телефона (CIO — работает на Android)
|
|
implementation("io.ktor:ktor-server-core:3.3.0")
|
|
implementation("io.ktor:ktor-server-cio:3.3.0")
|
|
implementation("io.ktor:ktor-server-websockets:3.3.0")
|
|
implementation("io.ktor:ktor-serialization-kotlinx-json:3.3.0")
|
|
|
|
testImplementation(kotlin("test"))
|
|
testImplementation("io.ktor:ktor-server-test-host:3.3.0")
|
|
testImplementation("io.ktor:ktor-client-websockets:3.3.0")
|
|
testImplementation("io.ktor:ktor-client-content-negotiation:3.3.0")
|
|
testImplementation("io.ktor:ktor-serialization-kotlinx-json:3.3.0")
|
|
testImplementation(libs.kotlinx.coroutines.test)
|
|
}
|