react-native-wakeword-sid 1.1.93 → 1.1.95
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/libs/com/davoice/keyworddetection/1.0.0/keyworddetection-1.0.0.aar +0 -0
- package/android/libs/com/davoice/keyworddetection/1.0.0/keyworddetection-1.0.0.aar.md5 +1 -1
- package/android/libs/com/davoice/keyworddetection/1.0.0/keyworddetection-1.0.0.aar.sha1 +1 -1
- package/android/src/main/java/com/davoice/speakeridrn/SpeakerIdRNBridge.java +54 -0
- package/package.json +1 -1
- package/speakerid/SpeakerIdRNBridge.d.ts +3 -0
- package/speakerid/SpeakerIdRNBridge.js +17 -0
- package/speakerid/index.d.ts +3 -0
- package/speakerid/index.js +6 -0
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
3993cf59d71c11eca4d70303fc49afc8 keyworddetection-1.0.0.aar
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
6fccffe87df06a250324662b3a025bff29f583d9 keyworddetection-1.0.0.aar
|
|
@@ -308,6 +308,60 @@ public class SpeakerIdRNBridge extends ReactContextBaseJavaModule {
|
|
|
308
308
|
});
|
|
309
309
|
}
|
|
310
310
|
|
|
311
|
+
// ======= WWD: create instance tuned for wake-word =======
|
|
312
|
+
@ReactMethod
|
|
313
|
+
public void createInstanceWWD(String instanceId, Promise promise) {
|
|
314
|
+
if (instances.containsKey(instanceId)) {
|
|
315
|
+
promise.reject("InstanceExists", "Instance already exists: " + instanceId);
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
318
|
+
exec.submit(() -> {
|
|
319
|
+
try {
|
|
320
|
+
SpeakerIdApi api = SpeakerIdApi.createWWD(reactContext);
|
|
321
|
+
synchronized (instances) { instances.put(instanceId, api); }
|
|
322
|
+
main.post(() -> promise.resolve(true));
|
|
323
|
+
} catch (Exception e) {
|
|
324
|
+
main.post(() -> promise.reject("CreateWWDError", e.getMessage(), e));
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
// ======= WWD: onboard from mic (embNum x 1s) =======
|
|
330
|
+
@ReactMethod
|
|
331
|
+
public void onboardFromMicrophoneWWD(String instanceId, int embNum, double maxMillis, Promise promise) {
|
|
332
|
+
SpeakerIdApi api = instances.get(instanceId);
|
|
333
|
+
if (api == null) { promise.reject("InstanceNotFound", instanceId); return; }
|
|
334
|
+
exec.submit(() -> {
|
|
335
|
+
try {
|
|
336
|
+
OnboardingResult r = api.onboardFromMicrophoneWWD(embNum, (long)maxMillis);
|
|
337
|
+
WritableMap out = toJs(r);
|
|
338
|
+
main.post(() -> promise.resolve(out));
|
|
339
|
+
} catch (SecurityException se) {
|
|
340
|
+
main.post(() -> promise.reject("MicPermission", "RECORD_AUDIO permission missing", se));
|
|
341
|
+
} catch (Exception e) {
|
|
342
|
+
main.post(() -> promise.reject("OnboardWWDError", e.getMessage(), e));
|
|
343
|
+
}
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
// ======= WWD: verify from mic (exactly 1s) =======
|
|
348
|
+
@ReactMethod
|
|
349
|
+
public void verifyFromMicrophoneWWD(String instanceId, double maxMillis, Promise promise) {
|
|
350
|
+
SpeakerIdApi api = instances.get(instanceId);
|
|
351
|
+
if (api == null) { promise.reject("InstanceNotFound", instanceId); return; }
|
|
352
|
+
exec.submit(() -> {
|
|
353
|
+
try {
|
|
354
|
+
VerificationResult r = api.verifyFromMicrophoneWWD((long)maxMillis);
|
|
355
|
+
WritableMap out = (r == null) ? null : toJs(r);
|
|
356
|
+
main.post(() -> promise.resolve(out));
|
|
357
|
+
} catch (SecurityException se) {
|
|
358
|
+
main.post(() -> promise.reject("MicPermission", "RECORD_AUDIO permission missing", se));
|
|
359
|
+
} catch (Exception e) {
|
|
360
|
+
main.post(() -> promise.reject("VerifyWWDError", e.getMessage(), e));
|
|
361
|
+
}
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
|
|
311
365
|
// -------------------- Export helpers --------------------
|
|
312
366
|
|
|
313
367
|
@ReactMethod
|
package/package.json
CHANGED
|
@@ -6,6 +6,9 @@ export class SpeakerIdInstance {
|
|
|
6
6
|
* Lifecycle
|
|
7
7
|
*/
|
|
8
8
|
createInstance(): Promise<any>;
|
|
9
|
+
createInstanceWWD(): Promise<any>;
|
|
10
|
+
onboardFromMicrophoneWWD(embNum?: number, maxMillis?: number): Promise<any>;
|
|
11
|
+
verifyFromMicrophoneWWD(maxMillis?: number): Promise<any>;
|
|
9
12
|
destroyInstance(): Promise<any>;
|
|
10
13
|
/**
|
|
11
14
|
* Onboarding
|
|
@@ -33,6 +33,23 @@ export class SpeakerIdInstance {
|
|
|
33
33
|
return SpeakerIdRNBridge.createInstance(this.instanceId);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
async createInstanceWWD() {
|
|
37
|
+
ensureAndroid();
|
|
38
|
+
return SpeakerIdRNBridge.createInstanceWWD(this.instanceId);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
async onboardFromMicrophoneWWD(embNum = 3, maxMillis = 8000) {
|
|
42
|
+
ensureAndroid();
|
|
43
|
+
// Resolves to { clusterSize, embeddingDim }
|
|
44
|
+
return SpeakerIdRNBridge.onboardFromMicrophoneWWD(this.instanceId, embNum, maxMillis);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
async verifyFromMicrophoneWWD(maxMillis = 5000) {
|
|
48
|
+
ensureAndroid();
|
|
49
|
+
// Resolves to { fullSec, voicedSec, bestScore, bestStrategy, bestTargetLabel, perTargetStrategy }
|
|
50
|
+
return SpeakerIdRNBridge.verifyFromMicrophoneWWD(this.instanceId, maxMillis);
|
|
51
|
+
}
|
|
52
|
+
|
|
36
53
|
async destroyInstance() {
|
|
37
54
|
ensureAndroid();
|
|
38
55
|
return SpeakerIdRNBridge.destroyInstance(this.instanceId);
|
package/speakerid/index.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
export function createSpeakerIdInstance(instanceId?: string): Promise<{
|
|
2
2
|
createInstance: () => any;
|
|
3
|
+
createInstanceWWD: () => any;
|
|
4
|
+
onboardFromMicrophoneWWD: (embNum: any, ms: any) => any;
|
|
5
|
+
verifyFromMicrophoneWWD: (ms: any) => any;
|
|
3
6
|
initVerificationUsingDefaults: () => any;
|
|
4
7
|
initVerificationWithFiles: (m: any, c: any) => any;
|
|
5
8
|
onboardFromMicrophone: (ms: any) => any;
|
package/speakerid/index.js
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
|
+
//speakerid/index.js
|
|
1
2
|
import { NativeModules } from 'react-native';
|
|
2
3
|
const { SpeakerIdRNBridge } = NativeModules;
|
|
3
4
|
|
|
4
5
|
export const createSpeakerIdInstance = async (instanceId = 'sid1') => ({
|
|
5
6
|
createInstance: () => SpeakerIdRNBridge.createInstance(instanceId),
|
|
7
|
+
createInstanceWWD: () => SpeakerIdRNBridge.createInstanceWWD(instanceId),
|
|
8
|
+
onboardFromMicrophoneWWD: (embNum, ms) =>
|
|
9
|
+
SpeakerIdRNBridge.onboardFromMicrophoneWWD(instanceId, embNum ?? 3, ms ?? 8000),
|
|
10
|
+
verifyFromMicrophoneWWD: (ms) =>
|
|
11
|
+
SpeakerIdRNBridge.verifyFromMicrophoneWWD(instanceId, ms ?? 5000),
|
|
6
12
|
initVerificationUsingDefaults: () => SpeakerIdRNBridge.initVerificationUsingDefaults(instanceId),
|
|
7
13
|
initVerificationWithFiles: (m, c) => SpeakerIdRNBridge.initVerificationWithFiles(instanceId, m, c),
|
|
8
14
|
onboardFromMicrophone: (ms) => SpeakerIdRNBridge.onboardFromMicrophone(instanceId, ms ?? 12000),
|