Spaces:
Sleeping
Sleeping
# 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 | |
The "low level" bindings are in `WhisperCppJnaLibrary`. The most simple usage is as follows: | |
JNA will attempt to load the `whispercpp` shared library from: | |
- jna.library.path | |
- jna.platform.library | |
- ~/Library/Frameworks | |
- /Library/Frameworks | |
- /System/Library/Frameworks | |
- classpath | |
```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 { | |
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); | |
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. | |