13 package ai.picovoice.porcupine;
15 import java.util.Arrays;
16 import java.util.HashMap;
18 import java.util.stream.*;
19 import java.util.logging.Logger;
29 public class Porcupine {
55 public Porcupine(String accessKey, String libraryPath, String modelPath, String[] keywordPaths,
float[] sensitivities)
throws PorcupineException {
57 System.load(libraryPath);
58 }
catch (Exception exception) {
67 public void delete() {
108 private native
long init(String accessKey, String modelPath, String[] keywordPaths,
float[] sensitivities);
110 private native
void delete(
long object);
112 private native
int process(
long object,
short[] pcm);
114 public enum BuiltInKeyword {
130 public static Stream<BuiltInKeyword>
stream() {
142 public static class Builder {
192 this.sensitivities =
new float[]{sensitivity};
204 if (!Utils.isEnvironmentSupported()) {
206 "Execution environment not currently supported by Porcupine Java.");
214 if (Utils.isResourcesAvailable()) {
218 "provide a native Porcupine library path (-l <library_path>).");
223 if (Utils.isResourcesAvailable()) {
227 "valid Porcupine model path (-m <model_path>).");
231 if(this.keywordPaths !=
null && this.keywords !=
null){
233 "Only one of the two arguments may be set for initialization.");
236 if (this.keywordPaths ==
null) {
237 if (this.keywords ==
null) {
241 if (Utils.isResourcesAvailable()) {
242 this.keywordPaths =
new String[
keywords.length];
243 for (
int i = 0; i <
keywords.length; i++) {
248 "a valid Porcupine keyword path.");