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.
Files changed (51) hide show
  1. package/.nvmrc +1 -0
  2. package/.prettierrc +5 -0
  3. package/.releaserc +15 -0
  4. package/CONTRIBUTING.md +293 -0
  5. package/LICENSE +21 -0
  6. package/MIGRATION_SUMMARY.md +510 -0
  7. package/README.md +576 -0
  8. package/android/build.gradle +126 -0
  9. package/android/gradle.properties +5 -0
  10. package/android/src/main/AndroidManifest.xml +8 -0
  11. package/android/src/main/VoiceSpec.kt +55 -0
  12. package/android/src/main/java/com/wenkesj/voice/Voice.kt +343 -0
  13. package/android/src/main/java/com/wenkesj/voice/VoiceModule.kt +63 -0
  14. package/android/src/main/java/com/wenkesj/voice/VoicePackage.kt +35 -0
  15. package/android/src/newarch/VoiceSpec.kt +55 -0
  16. package/android/src/oldarch/VoiceSpec.kt +30 -0
  17. package/app.plugin.js +1 -0
  18. package/dist/NativeVoiceAndroid.d.ts +22 -0
  19. package/dist/NativeVoiceAndroid.d.ts.map +1 -0
  20. package/dist/NativeVoiceAndroid.js +3 -0
  21. package/dist/NativeVoiceAndroid.js.map +1 -0
  22. package/dist/NativeVoiceIOS.d.ts +18 -0
  23. package/dist/NativeVoiceIOS.d.ts.map +1 -0
  24. package/dist/NativeVoiceIOS.js +3 -0
  25. package/dist/NativeVoiceIOS.js.map +1 -0
  26. package/dist/VoiceModuleTypes.d.ts +54 -0
  27. package/dist/VoiceModuleTypes.d.ts.map +1 -0
  28. package/dist/VoiceModuleTypes.js +2 -0
  29. package/dist/VoiceModuleTypes.js.map +1 -0
  30. package/dist/VoiceUtilTypes.d.ts +43 -0
  31. package/dist/VoiceUtilTypes.d.ts.map +1 -0
  32. package/dist/VoiceUtilTypes.js +8 -0
  33. package/dist/VoiceUtilTypes.js.map +1 -0
  34. package/dist/index.d.ts +72 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +395 -0
  37. package/dist/index.js.map +1 -0
  38. package/ios/Voice/Voice.h +14 -0
  39. package/ios/Voice/Voice.mm +672 -0
  40. package/ios/Voice.xcodeproj/project.pbxproj +272 -0
  41. package/ios/Voice.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  42. package/package.json +101 -0
  43. package/plugin/build/withVoice.d.ts +13 -0
  44. package/plugin/build/withVoice.js +47 -0
  45. package/plugin/tsconfig.tsbuildinfo +1 -0
  46. package/react-native-voice.podspec +46 -0
  47. package/src/NativeVoiceAndroid.ts +28 -0
  48. package/src/NativeVoiceIOS.ts +24 -0
  49. package/src/VoiceModuleTypes.ts +64 -0
  50. package/src/VoiceUtilTypes.ts +46 -0
  51. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=VoiceModuleTypes.js.map
@@ -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,8 @@
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 {};
8
+ //# sourceMappingURL=VoiceUtilTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VoiceUtilTypes.js","sourceRoot":"","sources":["../src/VoiceUtilTypes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -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