react-native-voice-ts 1.0.0
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/.nvmrc +1 -0
- package/.prettierrc +5 -0
- package/.releaserc +15 -0
- package/CONTRIBUTING.md +293 -0
- package/LICENSE +21 -0
- package/MIGRATION_SUMMARY.md +510 -0
- package/README.md +576 -0
- package/android/build.gradle +126 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +8 -0
- package/android/src/main/VoiceSpec.kt +55 -0
- package/android/src/main/java/com/wenkesj/voice/Voice.kt +343 -0
- package/android/src/main/java/com/wenkesj/voice/VoiceModule.kt +63 -0
- package/android/src/main/java/com/wenkesj/voice/VoicePackage.kt +35 -0
- package/android/src/newarch/VoiceSpec.kt +55 -0
- package/android/src/oldarch/VoiceSpec.kt +30 -0
- package/app.plugin.js +1 -0
- package/dist/NativeVoiceAndroid.d.ts +22 -0
- package/dist/NativeVoiceAndroid.d.ts.map +1 -0
- package/dist/NativeVoiceAndroid.js +3 -0
- package/dist/NativeVoiceAndroid.js.map +1 -0
- package/dist/NativeVoiceIOS.d.ts +18 -0
- package/dist/NativeVoiceIOS.d.ts.map +1 -0
- package/dist/NativeVoiceIOS.js +3 -0
- package/dist/NativeVoiceIOS.js.map +1 -0
- package/dist/VoiceModuleTypes.d.ts +54 -0
- package/dist/VoiceModuleTypes.d.ts.map +1 -0
- package/dist/VoiceModuleTypes.js +2 -0
- package/dist/VoiceModuleTypes.js.map +1 -0
- package/dist/VoiceUtilTypes.d.ts +43 -0
- package/dist/VoiceUtilTypes.d.ts.map +1 -0
- package/dist/VoiceUtilTypes.js +8 -0
- package/dist/VoiceUtilTypes.js.map +1 -0
- package/dist/index.d.ts +72 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +395 -0
- package/dist/index.js.map +1 -0
- package/ios/Voice/Voice.h +14 -0
- package/ios/Voice/Voice.mm +672 -0
- package/ios/Voice.xcodeproj/project.pbxproj +272 -0
- package/ios/Voice.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/package.json +101 -0
- package/plugin/build/withVoice.d.ts +13 -0
- package/plugin/build/withVoice.js +47 -0
- package/plugin/tsconfig.tsbuildinfo +1 -0
- package/react-native-voice.podspec +46 -0
- package/src/NativeVoiceAndroid.ts +28 -0
- package/src/NativeVoiceIOS.ts +24 -0
- package/src/VoiceModuleTypes.ts +64 -0
- package/src/VoiceUtilTypes.ts +46 -0
- package/src/index.ts +500 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export type SpeechEvents = {
|
|
2
|
+
onSpeechStart?: (e: SpeechStartEvent) => void;
|
|
3
|
+
onSpeechRecognized?: (e: SpeechRecognizedEvent) => void;
|
|
4
|
+
onSpeechEnd?: (e: SpeechEndEvent) => void;
|
|
5
|
+
onSpeechError?: (e: SpeechErrorEvent) => void;
|
|
6
|
+
onSpeechResults?: (e: SpeechResultsEvent) => void;
|
|
7
|
+
onSpeechPartialResults?: (e: SpeechResultsEvent) => void;
|
|
8
|
+
onSpeechVolumeChanged?: (e: SpeechVolumeChangeEvent) => void;
|
|
9
|
+
};
|
|
10
|
+
export type TranscriptionEvents = {
|
|
11
|
+
onTranscriptionStart?: (e: TranscriptionStartEvent) => void;
|
|
12
|
+
onTranscriptionEnd?: (e: TranscriptionEndEvent) => void;
|
|
13
|
+
onTranscriptionError?: (e: TranscriptionErrorEvent) => void;
|
|
14
|
+
onTranscriptionResults?: (e: TranscriptionResultsEvent) => void;
|
|
15
|
+
};
|
|
16
|
+
export type SpeechStartEvent = {
|
|
17
|
+
error?: boolean;
|
|
18
|
+
};
|
|
19
|
+
export type TranscriptionStartEvent = {
|
|
20
|
+
error?: boolean;
|
|
21
|
+
};
|
|
22
|
+
export type SpeechRecognizedEvent = {
|
|
23
|
+
isFinal?: boolean;
|
|
24
|
+
};
|
|
25
|
+
export type SpeechResultsEvent = {
|
|
26
|
+
value?: string[];
|
|
27
|
+
};
|
|
28
|
+
export type TranscriptionResultsEvent = {
|
|
29
|
+
segments?: string[];
|
|
30
|
+
transcription?: string;
|
|
31
|
+
isFinal?: boolean;
|
|
32
|
+
};
|
|
33
|
+
export type SpeechErrorEvent = {
|
|
34
|
+
error?: {
|
|
35
|
+
code?: string;
|
|
36
|
+
message?: string;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
export type TranscriptionErrorEvent = {
|
|
40
|
+
error?: {
|
|
41
|
+
code?: string;
|
|
42
|
+
message?: string;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
export type SpeechEndEvent = {
|
|
46
|
+
error?: boolean;
|
|
47
|
+
};
|
|
48
|
+
export type TranscriptionEndEvent = {
|
|
49
|
+
error?: boolean;
|
|
50
|
+
};
|
|
51
|
+
export type SpeechVolumeChangeEvent = {
|
|
52
|
+
value?: number;
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=VoiceModuleTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceModuleTypes.d.ts","sourceRoot":"","sources":["../src/VoiceModuleTypes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC9C,kBAAkB,CAAC,EAAE,CAAC,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACxD,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IAC1C,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC9C,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAClD,sBAAsB,CAAC,EAAE,CAAC,CAAC,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACzD,qBAAqB,CAAC,EAAE,CAAC,CAAC,EAAE,uBAAuB,KAAK,IAAI,CAAC;CAC9D,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,oBAAoB,CAAC,EAAE,CAAC,CAAC,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAC5D,kBAAkB,CAAC,EAAE,CAAC,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACxD,oBAAoB,CAAC,EAAE,CAAC,CAAC,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAC5D,sBAAsB,CAAC,EAAE,CAAC,CAAC,EAAE,yBAAyB,KAAK,IAAI,CAAC;CACjE,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceModuleTypes.js","sourceRoot":"","sources":["../src/VoiceModuleTypes.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React Native Voice - Speech Recognition Utility Types
|
|
3
|
+
*
|
|
4
|
+
* This file contains helper types and interfaces for working with
|
|
5
|
+
* speech recognition functionality.
|
|
6
|
+
*/
|
|
7
|
+
export interface VoiceOptions {
|
|
8
|
+
/** Android: Language model type (LANGUAGE_MODEL_FREE_FORM or LANGUAGE_MODEL_WEB_SEARCH) */
|
|
9
|
+
EXTRA_LANGUAGE_MODEL?: string;
|
|
10
|
+
/** Android: Maximum number of results */
|
|
11
|
+
EXTRA_MAX_RESULTS?: number;
|
|
12
|
+
/** Android: Enable partial results */
|
|
13
|
+
EXTRA_PARTIAL_RESULTS?: boolean;
|
|
14
|
+
/** Android: Auto request permissions */
|
|
15
|
+
REQUEST_PERMISSIONS_AUTO?: boolean;
|
|
16
|
+
/** iOS: Detection mode (automatic, manual) */
|
|
17
|
+
iosCategory?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface RecognitionStats {
|
|
20
|
+
/** Duration of recognition in milliseconds */
|
|
21
|
+
duration: number;
|
|
22
|
+
/** Whether recognition is currently active */
|
|
23
|
+
isActive: boolean;
|
|
24
|
+
/** Last recognized results */
|
|
25
|
+
lastResults: string[];
|
|
26
|
+
/** Start timestamp */
|
|
27
|
+
startTime: number;
|
|
28
|
+
}
|
|
29
|
+
export interface PermissionResult {
|
|
30
|
+
/** Whether permission was granted */
|
|
31
|
+
granted: boolean;
|
|
32
|
+
/** Error message if permission check failed */
|
|
33
|
+
error?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface Language {
|
|
36
|
+
/** Language code (e.g., 'en-US') */
|
|
37
|
+
code: string;
|
|
38
|
+
/** Display name */
|
|
39
|
+
name: string;
|
|
40
|
+
/** Whether language is available */
|
|
41
|
+
available: boolean;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=VoiceUtilTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceUtilTypes.d.ts","sourceRoot":"","sources":["../src/VoiceUtilTypes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,YAAY;IAC3B,2FAA2F;IAC3F,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,yCAAyC;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sCAAsC;IACtC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,wCAAwC;IACxC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,QAAQ,EAAE,OAAO,CAAC;IAClB,8BAA8B;IAC9B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,sBAAsB;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,SAAS,EAAE,OAAO,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceUtilTypes.js","sourceRoot":"","sources":["../src/VoiceUtilTypes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { type SpeechEvents, type TranscriptionEvents, type TranscriptionEndEvent, type TranscriptionErrorEvent, type TranscriptionStartEvent, type SpeechRecognizedEvent, type SpeechErrorEvent, type SpeechResultsEvent, type SpeechStartEvent, type SpeechEndEvent, type SpeechVolumeChangeEvent, type TranscriptionResultsEvent } from './VoiceModuleTypes';
|
|
2
|
+
declare class RCTVoice {
|
|
3
|
+
private _loaded;
|
|
4
|
+
private _listeners;
|
|
5
|
+
private _events;
|
|
6
|
+
private _isRecognizing;
|
|
7
|
+
private _debounceTimeout;
|
|
8
|
+
private _lastResults;
|
|
9
|
+
private _recognitionStartTime;
|
|
10
|
+
constructor();
|
|
11
|
+
removeAllListeners(): void;
|
|
12
|
+
destroy(): Promise<void>;
|
|
13
|
+
destroyTranscription(): Promise<void>;
|
|
14
|
+
start(locale: string, options?: {}): Promise<void>;
|
|
15
|
+
startTranscription(url: string, locale: string, options?: {}): Promise<void>;
|
|
16
|
+
stop(): Promise<void>;
|
|
17
|
+
stopTranscription(): Promise<void>;
|
|
18
|
+
cancel(): Promise<void>;
|
|
19
|
+
cancelTranscription(): Promise<void>;
|
|
20
|
+
isAvailable(): Promise<0 | 1>;
|
|
21
|
+
/**
|
|
22
|
+
* (Android) Get a list of the speech recognition engines available on the device
|
|
23
|
+
* */
|
|
24
|
+
getSpeechRecognitionServices(): any;
|
|
25
|
+
isRecognizing(): Promise<0 | 1>;
|
|
26
|
+
/**
|
|
27
|
+
* Check if speech recognition is currently in progress (synchronous)
|
|
28
|
+
*/
|
|
29
|
+
get recognizing(): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Get the last recognition results without triggering a new recognition
|
|
32
|
+
*/
|
|
33
|
+
getLastResults(): string[];
|
|
34
|
+
/**
|
|
35
|
+
* Get recognition duration in milliseconds
|
|
36
|
+
*/
|
|
37
|
+
getRecognitionDuration(): number;
|
|
38
|
+
/**
|
|
39
|
+
* Request microphone permission (Android)
|
|
40
|
+
*/
|
|
41
|
+
requestMicrophonePermission(): Promise<boolean>;
|
|
42
|
+
/**
|
|
43
|
+
* Check microphone permission status (Android)
|
|
44
|
+
*/
|
|
45
|
+
checkMicrophonePermission(): Promise<boolean>;
|
|
46
|
+
/**
|
|
47
|
+
* Get supported languages for speech recognition
|
|
48
|
+
*/
|
|
49
|
+
getSupportedLanguages(): Promise<string[]>;
|
|
50
|
+
/**
|
|
51
|
+
* Debounce results to avoid excessive updates
|
|
52
|
+
* Reserved for future use
|
|
53
|
+
* @private
|
|
54
|
+
*/
|
|
55
|
+
private debounceResults;
|
|
56
|
+
set onSpeechStart(fn: (e: SpeechStartEvent) => void);
|
|
57
|
+
set onTranscriptionStart(fn: (e: TranscriptionStartEvent) => void);
|
|
58
|
+
set onSpeechRecognized(fn: (e: SpeechRecognizedEvent) => void);
|
|
59
|
+
set onSpeechEnd(fn: (e: SpeechEndEvent) => void);
|
|
60
|
+
set onTranscriptionEnd(fn: (e: SpeechEndEvent) => void);
|
|
61
|
+
set onSpeechError(fn: (e: SpeechErrorEvent) => void);
|
|
62
|
+
set onTranscriptionError(fn: (e: TranscriptionErrorEvent) => void);
|
|
63
|
+
set onSpeechResults(fn: (e: SpeechResultsEvent) => void);
|
|
64
|
+
set onTranscriptionResults(fn: (e: TranscriptionResultsEvent) => void);
|
|
65
|
+
set onSpeechPartialResults(fn: (e: SpeechResultsEvent) => void);
|
|
66
|
+
set onSpeechVolumeChanged(fn: (e: SpeechVolumeChangeEvent) => void);
|
|
67
|
+
}
|
|
68
|
+
export type { SpeechEndEvent, SpeechErrorEvent, SpeechEvents, SpeechStartEvent, SpeechRecognizedEvent, SpeechResultsEvent, SpeechVolumeChangeEvent, TranscriptionEndEvent, TranscriptionErrorEvent, TranscriptionEvents, TranscriptionStartEvent, TranscriptionResultsEvent, };
|
|
69
|
+
export type { VoiceOptions, RecognitionStats, PermissionResult, Language, } from './VoiceUtilTypes';
|
|
70
|
+
declare const _default: RCTVoice;
|
|
71
|
+
export default _default;
|
|
72
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
import { NativeModules, NativeEventEmitter, Platform, PermissionsAndroid, } from 'react-native';
|
|
2
|
+
import invariant from 'invariant';
|
|
3
|
+
const LINKING_ERROR = `The package 'react-native-voice-ts' doesn't seem to be linked. Make sure: \n\n` +
|
|
4
|
+
Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) +
|
|
5
|
+
'- You rebuilt the app after installing the package\n' +
|
|
6
|
+
'- You are not using Expo Go\n';
|
|
7
|
+
// @ts-ignore - turboModuleProxy is not in React Native types
|
|
8
|
+
const isTurboModuleEnabled = global.__turboModuleProxy != null;
|
|
9
|
+
const VoiceNativeModule = isTurboModuleEnabled
|
|
10
|
+
? Platform.OS === 'android'
|
|
11
|
+
? require('./NativeVoiceAndroid').default
|
|
12
|
+
: require('./NativeVoiceIOS').default
|
|
13
|
+
: NativeModules.Voice;
|
|
14
|
+
const Voice = VoiceNativeModule
|
|
15
|
+
? VoiceNativeModule
|
|
16
|
+
: new Proxy({}, {
|
|
17
|
+
get() {
|
|
18
|
+
throw new Error(LINKING_ERROR);
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
// NativeEventEmitter is only availabe on React Native platforms, so this conditional is used to avoid import conflicts in the browser/server
|
|
22
|
+
const voiceEmitter = Platform.OS !== 'web' ? new NativeEventEmitter(Voice) : null;
|
|
23
|
+
class RCTVoice {
|
|
24
|
+
constructor() {
|
|
25
|
+
this._loaded = false;
|
|
26
|
+
this._listeners = [];
|
|
27
|
+
this._isRecognizing = false;
|
|
28
|
+
this._debounceTimeout = null;
|
|
29
|
+
this._lastResults = [];
|
|
30
|
+
this._recognitionStartTime = 0;
|
|
31
|
+
this._events = {
|
|
32
|
+
onSpeechStart: () => { },
|
|
33
|
+
onSpeechRecognized: () => { },
|
|
34
|
+
onSpeechEnd: () => { },
|
|
35
|
+
onSpeechError: () => { },
|
|
36
|
+
onSpeechResults: () => { },
|
|
37
|
+
onSpeechPartialResults: () => { },
|
|
38
|
+
onSpeechVolumeChanged: () => { },
|
|
39
|
+
onTranscriptionStart: () => { },
|
|
40
|
+
onTranscriptionEnd: () => { },
|
|
41
|
+
onTranscriptionError: () => { },
|
|
42
|
+
onTranscriptionResults: () => { },
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
removeAllListeners() {
|
|
46
|
+
if (this._listeners && this._listeners.length > 0) {
|
|
47
|
+
this._listeners.forEach((listener) => {
|
|
48
|
+
if (listener?.remove) {
|
|
49
|
+
listener.remove();
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
this._listeners = [];
|
|
53
|
+
}
|
|
54
|
+
if (this._debounceTimeout) {
|
|
55
|
+
clearTimeout(this._debounceTimeout);
|
|
56
|
+
this._debounceTimeout = null;
|
|
57
|
+
}
|
|
58
|
+
this._isRecognizing = false;
|
|
59
|
+
this._lastResults = [];
|
|
60
|
+
}
|
|
61
|
+
destroy() {
|
|
62
|
+
if (!this._loaded && !this._listeners) {
|
|
63
|
+
return Promise.resolve();
|
|
64
|
+
}
|
|
65
|
+
return new Promise((resolve, reject) => {
|
|
66
|
+
Voice.destroySpeech((error) => {
|
|
67
|
+
if (error) {
|
|
68
|
+
reject(new Error(error));
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
this.removeAllListeners();
|
|
72
|
+
this._loaded = false;
|
|
73
|
+
resolve();
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
destroyTranscription() {
|
|
79
|
+
if (!this._loaded && !this._listeners) {
|
|
80
|
+
return Promise.resolve();
|
|
81
|
+
}
|
|
82
|
+
return new Promise((resolve, reject) => {
|
|
83
|
+
Voice.destroyTranscription((error) => {
|
|
84
|
+
if (error) {
|
|
85
|
+
reject(new Error(error));
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
if (this._listeners?.length > 0) {
|
|
89
|
+
this._listeners.forEach((listener) => listener.remove());
|
|
90
|
+
this._listeners = [];
|
|
91
|
+
}
|
|
92
|
+
this._loaded = false;
|
|
93
|
+
resolve();
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
start(locale, options = {}) {
|
|
99
|
+
if (!this._loaded &&
|
|
100
|
+
this._listeners.length === 0 &&
|
|
101
|
+
voiceEmitter !== null) {
|
|
102
|
+
this._listeners = Object.keys(this._events).map((key) => voiceEmitter.addListener(key, this._events[key]));
|
|
103
|
+
}
|
|
104
|
+
this._recognitionStartTime = Date.now();
|
|
105
|
+
this._isRecognizing = true;
|
|
106
|
+
return new Promise((resolve, reject) => {
|
|
107
|
+
const callback = (error) => {
|
|
108
|
+
if (error) {
|
|
109
|
+
this._isRecognizing = false;
|
|
110
|
+
this._recognitionStartTime = 0;
|
|
111
|
+
reject(new Error(error));
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
resolve();
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
if (Platform.OS === 'android') {
|
|
118
|
+
Voice.startSpeech(locale, Object.assign({
|
|
119
|
+
EXTRA_LANGUAGE_MODEL: 'LANGUAGE_MODEL_FREE_FORM',
|
|
120
|
+
EXTRA_MAX_RESULTS: 5,
|
|
121
|
+
EXTRA_PARTIAL_RESULTS: true,
|
|
122
|
+
REQUEST_PERMISSIONS_AUTO: true,
|
|
123
|
+
}, options), callback);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
Voice.startSpeech(locale, callback);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
startTranscription(url, locale, options = {}) {
|
|
131
|
+
if (!this._loaded && !this._listeners && voiceEmitter !== null) {
|
|
132
|
+
this._listeners = Object.keys(this._events).map((key) => voiceEmitter.addListener(key, this._events[key]));
|
|
133
|
+
}
|
|
134
|
+
return new Promise((resolve, reject) => {
|
|
135
|
+
const callback = (error) => {
|
|
136
|
+
if (error) {
|
|
137
|
+
reject(new Error(error));
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
resolve();
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
if (Platform.OS === 'android') {
|
|
144
|
+
Voice.startTranscription(url, locale, Object.assign({
|
|
145
|
+
EXTRA_LANGUAGE_MODEL: 'LANGUAGE_MODEL_FREE_FORM',
|
|
146
|
+
EXTRA_MAX_RESULTS: 5,
|
|
147
|
+
EXTRA_PARTIAL_RESULTS: true,
|
|
148
|
+
REQUEST_PERMISSIONS_AUTO: true,
|
|
149
|
+
}, options), callback);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
Voice.startTranscription(url, locale, callback);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
stop() {
|
|
157
|
+
if (!this._loaded && !this._listeners) {
|
|
158
|
+
return Promise.resolve();
|
|
159
|
+
}
|
|
160
|
+
this._isRecognizing = false;
|
|
161
|
+
return new Promise((resolve, reject) => {
|
|
162
|
+
Voice.stopSpeech((error) => {
|
|
163
|
+
if (error) {
|
|
164
|
+
reject(new Error(error));
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
resolve();
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
stopTranscription() {
|
|
173
|
+
if (!this._loaded && !this._listeners) {
|
|
174
|
+
return Promise.resolve();
|
|
175
|
+
}
|
|
176
|
+
return new Promise((resolve, reject) => {
|
|
177
|
+
Voice.stopTranscription((error) => {
|
|
178
|
+
if (error) {
|
|
179
|
+
reject(new Error(error));
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
resolve();
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
cancel() {
|
|
188
|
+
if (!this._loaded && !this._listeners) {
|
|
189
|
+
return Promise.resolve();
|
|
190
|
+
}
|
|
191
|
+
return new Promise((resolve, reject) => {
|
|
192
|
+
Voice.cancelSpeech((error) => {
|
|
193
|
+
if (error) {
|
|
194
|
+
reject(new Error(error));
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
resolve();
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
cancelTranscription() {
|
|
203
|
+
if (!this._loaded && !this._listeners) {
|
|
204
|
+
return Promise.resolve();
|
|
205
|
+
}
|
|
206
|
+
return new Promise((resolve, reject) => {
|
|
207
|
+
Voice.cancelSpeech((error) => {
|
|
208
|
+
if (error) {
|
|
209
|
+
reject(new Error(error));
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
resolve();
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
isAvailable() {
|
|
218
|
+
return new Promise((resolve, reject) => {
|
|
219
|
+
Voice.isSpeechAvailable((isAvailable, error) => {
|
|
220
|
+
if (error) {
|
|
221
|
+
reject(new Error(error));
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
resolve(isAvailable);
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* (Android) Get a list of the speech recognition engines available on the device
|
|
231
|
+
* */
|
|
232
|
+
getSpeechRecognitionServices() {
|
|
233
|
+
if (Platform.OS !== 'android') {
|
|
234
|
+
invariant(Voice, 'Speech recognition services can be queried for only on Android');
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
return Voice.getSpeechRecognitionServices();
|
|
238
|
+
}
|
|
239
|
+
isRecognizing() {
|
|
240
|
+
return new Promise((resolve) => {
|
|
241
|
+
Voice.isRecognizing((isRecognizing) => {
|
|
242
|
+
this._isRecognizing = isRecognizing === 1;
|
|
243
|
+
resolve(isRecognizing);
|
|
244
|
+
});
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Check if speech recognition is currently in progress (synchronous)
|
|
249
|
+
*/
|
|
250
|
+
get recognizing() {
|
|
251
|
+
return this._isRecognizing;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Get the last recognition results without triggering a new recognition
|
|
255
|
+
*/
|
|
256
|
+
getLastResults() {
|
|
257
|
+
return [...this._lastResults];
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Get recognition duration in milliseconds
|
|
261
|
+
*/
|
|
262
|
+
getRecognitionDuration() {
|
|
263
|
+
if (this._recognitionStartTime === 0)
|
|
264
|
+
return 0;
|
|
265
|
+
return Date.now() - this._recognitionStartTime;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Request microphone permission (Android)
|
|
269
|
+
*/
|
|
270
|
+
async requestMicrophonePermission() {
|
|
271
|
+
if (Platform.OS !== 'android') {
|
|
272
|
+
return true; // iOS handles permissions automatically
|
|
273
|
+
}
|
|
274
|
+
try {
|
|
275
|
+
const permission = PermissionsAndroid.PERMISSIONS.RECORD_AUDIO;
|
|
276
|
+
if (!permission) {
|
|
277
|
+
return false;
|
|
278
|
+
}
|
|
279
|
+
const granted = await PermissionsAndroid.request(permission, {
|
|
280
|
+
title: 'Microphone Permission',
|
|
281
|
+
message: 'This app needs access to your microphone for voice recognition',
|
|
282
|
+
buttonNeutral: 'Ask Me Later',
|
|
283
|
+
buttonNegative: 'Cancel',
|
|
284
|
+
buttonPositive: 'OK',
|
|
285
|
+
});
|
|
286
|
+
return granted === PermissionsAndroid.RESULTS.GRANTED;
|
|
287
|
+
}
|
|
288
|
+
catch (err) {
|
|
289
|
+
console.warn('Error requesting microphone permission:', err);
|
|
290
|
+
return false;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Check microphone permission status (Android)
|
|
295
|
+
*/
|
|
296
|
+
async checkMicrophonePermission() {
|
|
297
|
+
if (Platform.OS !== 'android') {
|
|
298
|
+
return true;
|
|
299
|
+
}
|
|
300
|
+
try {
|
|
301
|
+
const permission = PermissionsAndroid.PERMISSIONS.RECORD_AUDIO;
|
|
302
|
+
if (!permission) {
|
|
303
|
+
return false;
|
|
304
|
+
}
|
|
305
|
+
const granted = await PermissionsAndroid.check(permission);
|
|
306
|
+
return granted;
|
|
307
|
+
}
|
|
308
|
+
catch (err) {
|
|
309
|
+
console.warn('Error checking microphone permission:', err);
|
|
310
|
+
return false;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Get supported languages for speech recognition
|
|
315
|
+
*/
|
|
316
|
+
async getSupportedLanguages() {
|
|
317
|
+
try {
|
|
318
|
+
if (Platform.OS === 'android') {
|
|
319
|
+
// Android implementation would need native support
|
|
320
|
+
return [];
|
|
321
|
+
}
|
|
322
|
+
// iOS implementation would need native support
|
|
323
|
+
return [];
|
|
324
|
+
}
|
|
325
|
+
catch (error) {
|
|
326
|
+
console.warn('Error getting supported languages:', error);
|
|
327
|
+
return [];
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Debounce results to avoid excessive updates
|
|
332
|
+
* Reserved for future use
|
|
333
|
+
* @private
|
|
334
|
+
*/
|
|
335
|
+
debounceResults(callback, results, delay = 300) {
|
|
336
|
+
if (this._debounceTimeout) {
|
|
337
|
+
clearTimeout(this._debounceTimeout);
|
|
338
|
+
}
|
|
339
|
+
this._debounceTimeout = setTimeout(() => {
|
|
340
|
+
callback(results);
|
|
341
|
+
this._debounceTimeout = null;
|
|
342
|
+
}, delay);
|
|
343
|
+
}
|
|
344
|
+
set onSpeechStart(fn) {
|
|
345
|
+
this._events.onSpeechStart = (e) => {
|
|
346
|
+
this._recognitionStartTime = Date.now();
|
|
347
|
+
this._isRecognizing = true;
|
|
348
|
+
fn(e);
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
set onTranscriptionStart(fn) {
|
|
352
|
+
this._events.onTranscriptionStart = fn;
|
|
353
|
+
}
|
|
354
|
+
set onSpeechRecognized(fn) {
|
|
355
|
+
this._events.onSpeechRecognized = fn;
|
|
356
|
+
}
|
|
357
|
+
set onSpeechEnd(fn) {
|
|
358
|
+
this._events.onSpeechEnd = (e) => {
|
|
359
|
+
this._isRecognizing = false;
|
|
360
|
+
fn(e);
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
set onTranscriptionEnd(fn) {
|
|
364
|
+
this._events.onTranscriptionEnd = fn;
|
|
365
|
+
}
|
|
366
|
+
set onSpeechError(fn) {
|
|
367
|
+
this._events.onSpeechError = (e) => {
|
|
368
|
+
this._isRecognizing = false;
|
|
369
|
+
fn(e);
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
set onTranscriptionError(fn) {
|
|
373
|
+
this._events.onTranscriptionError = fn;
|
|
374
|
+
}
|
|
375
|
+
set onSpeechResults(fn) {
|
|
376
|
+
this._events.onSpeechResults = (e) => {
|
|
377
|
+
if (e.value) {
|
|
378
|
+
this._lastResults = e.value;
|
|
379
|
+
}
|
|
380
|
+
this._isRecognizing = false;
|
|
381
|
+
fn(e);
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
set onTranscriptionResults(fn) {
|
|
385
|
+
this._events.onTranscriptionResults = fn;
|
|
386
|
+
}
|
|
387
|
+
set onSpeechPartialResults(fn) {
|
|
388
|
+
this._events.onSpeechPartialResults = fn;
|
|
389
|
+
}
|
|
390
|
+
set onSpeechVolumeChanged(fn) {
|
|
391
|
+
this._events.onSpeechVolumeChanged = fn;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
export default new RCTVoice();
|
|
395
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
|
|
2
|
+
#import <React/RCTEventEmitter.h>
|
|
3
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
4
|
+
#import "RNVoiceSpec.h"
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@interface Voice : RCTEventEmitter <NativeVoiceIOSSpec>
|
|
8
|
+
#else
|
|
9
|
+
#import <React/RCTBridgeModule.h>
|
|
10
|
+
|
|
11
|
+
@interface Voice : RCTEventEmitter <RCTBridgeModule>
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
@end
|