react-native-wakeword-sid 1.1.94 → 1.1.96
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.
|
@@ -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),
|