2023-05-20 15:25:02 +00:00
# Java JNI bindings for Whisper
This package provides Java JNI bindings for whisper.cpp. They have been tested on:
* < strike > Darwin (OS X) 12.6 on x64_64</ strike >
* Ubuntu on x86_64
* Windows on x86_64
2023-05-28 23:38:58 +00:00
The "low level" bindings are in `WhisperCppJnaLibrary` . The most simple usage is as follows:
2023-05-20 15:25:02 +00:00
2023-06-06 00:27:26 +00:00
JNA will attempt to load the `whispercpp` shared library from:
- jna.library.path
- jna.platform.library
- ~/Library/Frameworks
- /Library/Frameworks
- /System/Library/Frameworks
- classpath
2023-05-20 15:25:02 +00:00
```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.
2023-06-01 06:53:56 +00:00
long context = whisper.initContext("base.en");
2023-05-20 15:25:02 +00:00
try {
2023-06-06 00:27:26 +00:00
var whisperParams = whisper.getFullDefaultParams(WhisperSamplingStrategy.WHISPER_SAMPLING_GREEDY);
// custom configuration if required
whisperParams.temperature_inc = 0f;
var samples = readAudio(); // divide each value by 32767.0f
whisper.fullTranscribe(whisperParams, samples);
2023-05-20 15:25:02 +00:00
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
```
2023-06-01 06:53:56 +00:00
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
```
2023-05-20 15:25:02 +00:00
## 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.