diff --git a/examples/whisper.android/lib/src/main/java/com/whispercpp/whisper/LibWhisper.kt b/examples/whisper.android/lib/src/main/java/com/whispercpp/whisper/LibWhisper.kt index 513202f..65ebbe5 100644 --- a/examples/whisper.android/lib/src/main/java/com/whispercpp/whisper/LibWhisper.kt +++ b/examples/whisper.android/lib/src/main/java/com/whispercpp/whisper/LibWhisper.kt @@ -16,11 +16,11 @@ class WhisperContext private constructor(private var ptr: Long) { Executors.newSingleThreadExecutor().asCoroutineDispatcher() ) - suspend fun transcribeData(data: FloatArray): String = withContext(scope.coroutineContext) { + suspend fun transcribeData(data: FloatArray, language: String = "en", translate: Boolean = false): String = withContext(scope.coroutineContext) { require(ptr != 0L) val numThreads = WhisperCpuConfig.preferredThreadCount Log.d(LOG_TAG, "Selecting $numThreads threads") - WhisperLib.fullTranscribe(ptr, numThreads, data) + WhisperLib.fullTranscribe(ptr, numThreads, data, language, translate) val textCount = WhisperLib.getTextSegmentCount(ptr) return@withContext buildString { for (i in 0 until textCount) { @@ -128,7 +128,7 @@ private class WhisperLib { external fun initContextFromAsset(assetManager: AssetManager, assetPath: String): Long external fun initContext(modelPath: String): Long external fun freeContext(contextPtr: Long) - external fun fullTranscribe(contextPtr: Long, numThreads: Int, audioData: FloatArray) + external fun fullTranscribe(contextPtr: Long, numThreads: Int, audioData: FloatArray, language: String, translate: Boolean) external fun getTextSegmentCount(contextPtr: Long): Int external fun getTextSegment(contextPtr: Long, index: Int): String external fun getSystemInfo(): String diff --git a/examples/whisper.android/lib/src/main/jni/whisper/jni.c b/examples/whisper.android/lib/src/main/jni/whisper/jni.c index 08825ed..6a5ef86 100644 --- a/examples/whisper.android/lib/src/main/jni/whisper/jni.c +++ b/examples/whisper.android/lib/src/main/jni/whisper/jni.c @@ -163,7 +163,7 @@ Java_com_whispercpp_whisper_WhisperLib_00024Companion_freeContext( JNIEXPORT void JNICALL Java_com_whispercpp_whisper_WhisperLib_00024Companion_fullTranscribe( - JNIEnv *env, jobject thiz, jlong context_ptr, jint num_threads, jfloatArray audio_data) { + JNIEnv *env, jobject thiz, jlong context_ptr, jint num_threads, jfloatArray audio_data, jstring language, jboolean translate) { UNUSED(thiz); struct whisper_context *context = (struct whisper_context *) context_ptr; jfloat *audio_data_arr = (*env)->GetFloatArrayElements(env, audio_data, NULL); @@ -175,8 +175,8 @@ Java_com_whispercpp_whisper_WhisperLib_00024Companion_fullTranscribe( params.print_progress = false; params.print_timestamps = true; params.print_special = false; - params.translate = false; - params.language = "en"; + params.translate = (bool) translate; + params.language = (*env)->GetStringUTFChars(env, language, NULL); params.n_threads = num_threads; params.offset_ms = 0; params.no_context = true;