Disable whisper.cpp pending futher work

This commit is contained in:
Aleksandras Kostarevas 2023-12-19 20:21:13 +02:00
parent 4e9e86d871
commit 39b46adca2

View File

@ -4,7 +4,6 @@ import android.Manifest
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.content.res.AssetManager
import android.hardware.SensorPrivacyManager import android.hardware.SensorPrivacyManager
import android.media.AudioFormat import android.media.AudioFormat
import android.media.AudioRecord import android.media.AudioRecord
@ -25,7 +24,6 @@ import kotlinx.coroutines.Job
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import kotlinx.coroutines.yield import kotlinx.coroutines.yield
import org.futo.voiceinput.shared.ggml.WhisperGGML
import org.futo.voiceinput.shared.types.AudioRecognizerListener import org.futo.voiceinput.shared.types.AudioRecognizerListener
import org.futo.voiceinput.shared.types.InferenceState import org.futo.voiceinput.shared.types.InferenceState
import org.futo.voiceinput.shared.types.Language import org.futo.voiceinput.shared.types.Language
@ -35,17 +33,14 @@ import org.futo.voiceinput.shared.types.ModelLoader
import org.futo.voiceinput.shared.whisper.DecodingConfiguration import org.futo.voiceinput.shared.whisper.DecodingConfiguration
import org.futo.voiceinput.shared.whisper.ModelManager import org.futo.voiceinput.shared.whisper.ModelManager
import org.futo.voiceinput.shared.whisper.MultiModelRunConfiguration import org.futo.voiceinput.shared.whisper.MultiModelRunConfiguration
import org.futo.voiceinput.shared.whisper.MultiModelRunner
import org.futo.voiceinput.shared.whisper.isBlankResult import org.futo.voiceinput.shared.whisper.isBlankResult
import org.tensorflow.lite.support.common.FileUtil
import java.io.FileInputStream
import java.nio.FloatBuffer import java.nio.FloatBuffer
import java.nio.ShortBuffer import java.nio.ShortBuffer
import java.nio.channels.FileChannel
import kotlin.math.min import kotlin.math.min
import kotlin.math.pow import kotlin.math.pow
import kotlin.math.sqrt import kotlin.math.sqrt
data class AudioRecognizerSettings( data class AudioRecognizerSettings(
val modelRunConfiguration: MultiModelRunConfiguration, val modelRunConfiguration: MultiModelRunConfiguration,
val decodingConfiguration: DecodingConfiguration val decodingConfiguration: DecodingConfiguration
@ -63,16 +58,13 @@ class AudioRecognizer(
private var isRecording = false private var isRecording = false
private var recorder: AudioRecord? = null private var recorder: AudioRecord? = null
//private val modelRunner = MultiModelRunner(modelManager) private val modelRunner = MultiModelRunner(modelManager)
private val floatSamples: FloatBuffer = FloatBuffer.allocate(16000 * 30) private val floatSamples: FloatBuffer = FloatBuffer.allocate(16000 * 30)
private var recorderJob: Job? = null private var recorderJob: Job? = null
private var modelJob: Job? = null private var modelJob: Job? = null
private var loadModelJob: Job? = null private var loadModelJob: Job? = null
private val buffer = FileUtil.loadMappedFile(context, "ggml-model.tflite")
private val ggmlModel = WhisperGGML(buffer)
@Throws(ModelDoesNotExistException::class) @Throws(ModelDoesNotExistException::class)
private fun verifyModelsExist() { private fun verifyModelsExist() {
val modelsThatDoNotExist = mutableListOf<ModelLoader>() val modelsThatDoNotExist = mutableListOf<ModelLoader>()
@ -171,7 +163,7 @@ class AudioRecognizer(
} }
private suspend fun preloadModels() { private suspend fun preloadModels() {
//modelRunner.preload(settings.modelRunConfiguration) modelRunner.preload(settings.modelRunConfiguration)
} }
private suspend fun recordingJob(recorder: AudioRecord, vad: VadModel) { private suspend fun recordingJob(recorder: AudioRecord, vad: VadModel) {
@ -360,26 +352,6 @@ class AudioRecognizer(
} }
private suspend fun runModel() { private suspend fun runModel() {
val floatArray = floatSamples.array().sliceArray(0 until floatSamples.position())
yield()
val outputText = ggmlModel.infer(floatArray).trim()
val text = when {
isBlankResult(outputText) -> ""
else -> outputText
}
yield()
lifecycleScope.launch {
withContext(Dispatchers.Main) {
yield()
listener.finished(text)
}
}
/*
loadModelJob?.let { loadModelJob?.let {
if (it.isActive) { if (it.isActive) {
println("Model was not finished loading...") println("Model was not finished loading...")
@ -387,7 +359,7 @@ class AudioRecognizer(
} }
} }
val floatArray = floatSamples.array().sliceArray(0 until floatSamples.position())
yield() yield()
val outputText = modelRunner.run( val outputText = modelRunner.run(
@ -409,8 +381,6 @@ class AudioRecognizer(
listener.finished(text) listener.finished(text)
} }
} }
*/
} }
private fun onFinishRecording() { private fun onFinishRecording() {