# Java JNI bindings for Whisper This package provides Java JNI bindings for whisper.cpp. They have been tested on: * Darwin (OS X) 12.6 on x64_64 * Ubuntu on x86_64 * Windows on x86_64 The "low level" bindings are in `WhisperCppJnaLibrary`. The most simple usage is as follows: ```java import io.github.ggerganov.whispercpp.WhisperCpp; public class Example { public static void main(String[] args) { WhisperCpp whisper = new WhisperCpp(); // By default, models are loaded from ~/.cache/whisper/ and are usually named "ggml-${name}.bin" // or you can provide the absolute path to the model file. long context = whisper.initContext("base.en"); try { whisper.fullTranscribe(context, samples); int segmentCount = whisper.getTextSegmentCount(context); for (int i = 0; i < segmentCount; i++) { String text = whisper.getTextSegment(context, i); System.out.println(segment.getText()); } } finally { whisper.freeContext(context); } } } ``` ## Building & Testing In order to build, you need to have the JDK 8 or higher installed. Run the tests with: ```bash git clone https://github.com/ggerganov/whisper.cpp.git cd whisper.cpp/bindings/java ./gradlew build ``` You need to have the `whisper` library in your [JNA library path](https://java-native-access.github.io/jna/4.2.1/com/sun/jna/NativeLibrary.html). On Windows the dll is included in the jar and you can update it: ```bash copy /y ..\..\build\bin\Release\whisper.dll build\generated\resources\main\win32-x86-64\whisper.dll ``` ## License The license for the Go bindings is the same as the license for the rest of the whisper.cpp project, which is the MIT License. See the `LICENSE` file for more details.