mirror of
https://gitlab.futo.org/keyboard/latinime.git
synced 2024-09-28 14:54:30 +01:00
Type out whisper.cpp result
This commit is contained in:
parent
f6bd2c3615
commit
314cf8c84c
@ -48,7 +48,7 @@ static jlong WhisperGGML_openFromBuffer(JNIEnv *env, jclass clazz, jobject buffe
|
|||||||
return reinterpret_cast<jlong>(state);
|
return reinterpret_cast<jlong>(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void WhisperGGML_infer(JNIEnv *env, jobject instance, jlong handle, jfloatArray samples_array, jstring prompt) {
|
static jstring WhisperGGML_infer(JNIEnv *env, jobject instance, jlong handle, jfloatArray samples_array, jstring prompt) {
|
||||||
auto *state = reinterpret_cast<WhisperModelState *>(handle);
|
auto *state = reinterpret_cast<WhisperModelState *>(handle);
|
||||||
|
|
||||||
size_t num_samples = env->GetArrayLength(samples_array);
|
size_t num_samples = env->GetArrayLength(samples_array);
|
||||||
@ -102,6 +102,18 @@ static void WhisperGGML_infer(JNIEnv *env, jobject instance, jlong handle, jfloa
|
|||||||
|
|
||||||
whisper_print_timings(state->context);
|
whisper_print_timings(state->context);
|
||||||
|
|
||||||
|
std::string output = "";
|
||||||
|
const int n_segments = whisper_full_n_segments(state->context);
|
||||||
|
|
||||||
|
for (int i = 0; i < n_segments; i++) {
|
||||||
|
auto seg = whisper_full_get_segment_text(state->context, i);
|
||||||
|
output.append(seg);
|
||||||
|
}
|
||||||
|
|
||||||
|
jstring jstr = env->NewStringUTF(output.c_str());
|
||||||
|
return jstr;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
ASSERT(mel_count % 80 == 0);
|
ASSERT(mel_count % 80 == 0);
|
||||||
whisper_set_mel(state->context, mel, (int)(mel_count / 80), 80);
|
whisper_set_mel(state->context, mel, (int)(mel_count / 80), 80);
|
||||||
@ -136,7 +148,7 @@ namespace voiceinput {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
const_cast<char *>("inferNative"),
|
const_cast<char *>("inferNative"),
|
||||||
const_cast<char *>("(J[FLjava/lang/String;)V"),
|
const_cast<char *>("(J[FLjava/lang/String;)Ljava/lang/String;"),
|
||||||
reinterpret_cast<void *>(WhisperGGML_infer)
|
reinterpret_cast<void *>(WhisperGGML_infer)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -361,9 +361,23 @@ class AudioRecognizer(
|
|||||||
|
|
||||||
private suspend fun runModel() {
|
private suspend fun runModel() {
|
||||||
val floatArray = floatSamples.array().sliceArray(0 until floatSamples.position())
|
val floatArray = floatSamples.array().sliceArray(0 until floatSamples.position())
|
||||||
println("RUNNING GGML MODEL")
|
|
||||||
ggmlModel.infer(floatArray)
|
yield()
|
||||||
println("FINISHED RUNNING GGML MODEL")
|
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 {
|
||||||
|
@ -20,12 +20,12 @@ class WhisperGGML(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun infer(samples: FloatArray) = withContext(inferenceContext) {
|
suspend fun infer(samples: FloatArray): String = withContext(inferenceContext) {
|
||||||
inferNative(handle, samples, "")
|
return@withContext inferNative(handle, samples, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
external fun openNative(path: String): Long
|
external fun openNative(path: String): Long
|
||||||
external fun openFromBufferNative(buffer: Buffer): Long
|
external fun openFromBufferNative(buffer: Buffer): Long
|
||||||
external fun inferNative(handle: Long, samples: FloatArray, prompt: String)
|
external fun inferNative(handle: Long, samples: FloatArray, prompt: String): String
|
||||||
external fun closeNative(handle: Long)
|
external fun closeNative(handle: Long)
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user