react-native-wakeword 1.1.80 → 1.1.81
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.
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
#import "KeyWordRNBridge.h"
|
|
4
4
|
#import <AVFoundation/AVFoundation.h>
|
|
5
|
+
#import <Speech/Speech.h>
|
|
5
6
|
#import <React/RCTBridge.h>
|
|
6
7
|
#import <React/RCTLog.h>
|
|
7
8
|
#import <React/RCTEventEmitter.h>
|
|
@@ -389,6 +390,11 @@ static BOOL KWRNBHasMicPermission(void) {
|
|
|
389
390
|
return permission == AVAudioSessionRecordPermissionGranted;
|
|
390
391
|
}
|
|
391
392
|
|
|
393
|
+
static BOOL KWRNBHasSpeechRecognitionPermission(void) {
|
|
394
|
+
SFSpeechRecognizerAuthorizationStatus status = [SFSpeechRecognizer authorizationStatus];
|
|
395
|
+
return status == SFSpeechRecognizerAuthorizationStatusAuthorized;
|
|
396
|
+
}
|
|
397
|
+
|
|
392
398
|
@interface KeyWordRNBridge () <RCTBridgeModule>
|
|
393
399
|
|
|
394
400
|
@property (nonatomic, strong) NSMutableDictionary *instances;
|
|
@@ -967,6 +973,54 @@ RCT_EXPORT_METHOD(requestMicPermissions:(nonnull NSNumber *)wait_timeout
|
|
|
967
973
|
});
|
|
968
974
|
}
|
|
969
975
|
|
|
976
|
+
RCT_EXPORT_METHOD(hasSpeechRecognitionPermissions:(RCTPromiseResolveBlock)resolve
|
|
977
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
978
|
+
{
|
|
979
|
+
resolve(@(KWRNBHasSpeechRecognitionPermission()));
|
|
980
|
+
}
|
|
981
|
+
|
|
982
|
+
RCT_EXPORT_METHOD(requestSpeechRecognitionPermissions:(nonnull NSNumber *)wait_timeout
|
|
983
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
984
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
985
|
+
{
|
|
986
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
987
|
+
SFSpeechRecognizerAuthorizationStatus status = [SFSpeechRecognizer authorizationStatus];
|
|
988
|
+
if (status == SFSpeechRecognizerAuthorizationStatusAuthorized) {
|
|
989
|
+
resolve(@YES);
|
|
990
|
+
return;
|
|
991
|
+
}
|
|
992
|
+
|
|
993
|
+
if (status == SFSpeechRecognizerAuthorizationStatusDenied ||
|
|
994
|
+
status == SFSpeechRecognizerAuthorizationStatusRestricted) {
|
|
995
|
+
resolve(@NO);
|
|
996
|
+
return;
|
|
997
|
+
}
|
|
998
|
+
|
|
999
|
+
NSTimeInterval timeoutSeconds = MAX(wait_timeout.doubleValue, 0.0) / 1000.0;
|
|
1000
|
+
__block BOOL didResolve = NO;
|
|
1001
|
+
void (^finish)(BOOL) = ^(BOOL granted) {
|
|
1002
|
+
if (didResolve) {
|
|
1003
|
+
return;
|
|
1004
|
+
}
|
|
1005
|
+
didResolve = YES;
|
|
1006
|
+
resolve(@(granted));
|
|
1007
|
+
};
|
|
1008
|
+
|
|
1009
|
+
if (timeoutSeconds > 0.0) {
|
|
1010
|
+
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(timeoutSeconds * NSEC_PER_SEC)),
|
|
1011
|
+
dispatch_get_main_queue(), ^{
|
|
1012
|
+
finish(KWRNBHasSpeechRecognitionPermission());
|
|
1013
|
+
});
|
|
1014
|
+
}
|
|
1015
|
+
|
|
1016
|
+
[SFSpeechRecognizer requestAuthorization:^(SFSpeechRecognizerAuthorizationStatus updatedStatus) {
|
|
1017
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
1018
|
+
finish(updatedStatus == SFSpeechRecognizerAuthorizationStatusAuthorized);
|
|
1019
|
+
});
|
|
1020
|
+
}];
|
|
1021
|
+
});
|
|
1022
|
+
}
|
|
1023
|
+
|
|
970
1024
|
RCT_EXPORT_METHOD(setKeywordDetectionLicense:(NSString *)instanceId licenseKey:(NSString *)licenseKey resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
971
1025
|
{
|
|
972
1026
|
KeyWordsDetectionWrapper *wrapper = self.instances[instanceId];
|
package/package.json
CHANGED
|
@@ -49,5 +49,7 @@ export function restartListeningAfterDucking(): Promise<void>;
|
|
|
49
49
|
export function initAudioSessAndDuckManage(): Promise<void>;
|
|
50
50
|
export function hasIOSMicPermissions(): Promise<any>;
|
|
51
51
|
export function requestIOSMicPermissions(wait_timeout: any): Promise<any>;
|
|
52
|
+
export function hasIOSSpeechRecognitionPermissions(): Promise<any>;
|
|
53
|
+
export function requestIOSSpeechRecognitionPermissions(wait_timeout: any): Promise<any>;
|
|
52
54
|
export function disableDuckingAndCleanup(): Promise<void>;
|
|
53
55
|
export function setWakewordAudioRoutingConfig(config: any): Promise<any>;
|
|
@@ -283,6 +283,14 @@ export const requestIOSMicPermissions = async (wait_timeout) => {
|
|
|
283
283
|
return await KeyWordRNBridge.requestMicPermissions(wait_timeout);
|
|
284
284
|
}
|
|
285
285
|
|
|
286
|
+
export const hasIOSSpeechRecognitionPermissions = async () => {
|
|
287
|
+
return await KeyWordRNBridge.hasSpeechRecognitionPermissions();
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
export const requestIOSSpeechRecognitionPermissions = async (wait_timeout) => {
|
|
291
|
+
return await KeyWordRNBridge.requestSpeechRecognitionPermissions(wait_timeout);
|
|
292
|
+
}
|
|
293
|
+
|
|
286
294
|
export const disableDuckingAndCleanup = async () => {
|
|
287
295
|
if (Platform.OS === 'ios') {
|
|
288
296
|
await KeyWordRNBridge.disableDuckingAndCleanup();
|
package/wakewords/index.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ import { initAudioSessAndDuckManage } from './KeyWordRNBridge';
|
|
|
5
5
|
import { restartListeningAfterDucking } from './KeyWordRNBridge';
|
|
6
6
|
import { hasIOSMicPermissions } from './KeyWordRNBridge';
|
|
7
7
|
import { requestIOSMicPermissions } from './KeyWordRNBridge';
|
|
8
|
+
import { hasIOSSpeechRecognitionPermissions } from './KeyWordRNBridge';
|
|
9
|
+
import { requestIOSSpeechRecognitionPermissions } from './KeyWordRNBridge';
|
|
8
10
|
import { pauseDetection } from './KeyWordRNBridge';
|
|
9
11
|
import { unPauseDetection } from './KeyWordRNBridge';
|
|
10
12
|
import { removeAllRNBridgeListeners } from './KeyWordRNBridge';
|
|
@@ -20,7 +22,7 @@ import { onSpeakerVerificationOnboardingDone } from './SpeakerVerificationRNBrid
|
|
|
20
22
|
import { onSpeakerVerificationVerifyResult } from './SpeakerVerificationRNBridge';
|
|
21
23
|
import { onSpeakerVerificationError } from './SpeakerVerificationRNBridge';
|
|
22
24
|
import useModel from './useModel';
|
|
23
|
-
export { enableDucking, disableDucking, initAudioSessAndDuckManage, restartListeningAfterDucking, hasIOSMicPermissions, requestIOSMicPermissions, pauseDetection, unPauseDetection, removeAllRNBridgeListeners, createKeyWordRNBridgeInstance, KeyWordRNBridgeInstance, setWakewordAudioRoutingConfig, createSpeakerVerificationInstance, SpeakerVerificationRNBridgeInstance, createSpeakerVerificationMicController, SpeakerVerificationMicController, onSpeakerVerificationOnboardingProgress, onSpeakerVerificationOnboardingDone, onSpeakerVerificationVerifyResult, onSpeakerVerificationError, useModel };
|
|
25
|
+
export { enableDucking, disableDucking, initAudioSessAndDuckManage, restartListeningAfterDucking, hasIOSMicPermissions, requestIOSMicPermissions, hasIOSSpeechRecognitionPermissions, requestIOSSpeechRecognitionPermissions, pauseDetection, unPauseDetection, removeAllRNBridgeListeners, createKeyWordRNBridgeInstance, KeyWordRNBridgeInstance, setWakewordAudioRoutingConfig, createSpeakerVerificationInstance, SpeakerVerificationRNBridgeInstance, createSpeakerVerificationMicController, SpeakerVerificationMicController, onSpeakerVerificationOnboardingProgress, onSpeakerVerificationOnboardingDone, onSpeakerVerificationVerifyResult, onSpeakerVerificationError, useModel };
|
|
24
26
|
|
|
25
27
|
// Re-export routing types for consumers:
|
|
26
28
|
export type { AudioRoutingConfig, RouteConfigEntry } from './audioRoutingConfig';
|
package/wakewords/index.js
CHANGED
|
@@ -11,6 +11,8 @@ import {
|
|
|
11
11
|
restartListeningAfterDucking,
|
|
12
12
|
hasIOSMicPermissions,
|
|
13
13
|
requestIOSMicPermissions,
|
|
14
|
+
hasIOSSpeechRecognitionPermissions,
|
|
15
|
+
requestIOSSpeechRecognitionPermissions,
|
|
14
16
|
pauseDetection,
|
|
15
17
|
unPauseDetection,
|
|
16
18
|
setWakewordAudioRoutingConfig, // ← NEW
|
|
@@ -34,6 +36,8 @@ export { initAudioSessAndDuckManage }
|
|
|
34
36
|
export { restartListeningAfterDucking }
|
|
35
37
|
export { hasIOSMicPermissions }
|
|
36
38
|
export { requestIOSMicPermissions }
|
|
39
|
+
export { hasIOSSpeechRecognitionPermissions }
|
|
40
|
+
export { requestIOSSpeechRecognitionPermissions }
|
|
37
41
|
export { pauseDetection }
|
|
38
42
|
export { unPauseDetection }
|
|
39
43
|
export { removeAllRNBridgeListeners }
|