whisper.rn 0.5.0-rc.1 → 0.5.0-rc.3

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 (106) hide show
  1. package/README.md +119 -50
  2. package/android/src/main/java/com/rnwhisper/RNWhisper.java +26 -0
  3. package/android/src/main/java/com/rnwhisper/WhisperContext.java +25 -0
  4. package/android/src/main/jni.cpp +81 -0
  5. package/android/src/newarch/java/com/rnwhisper/RNWhisperModule.java +5 -0
  6. package/android/src/oldarch/java/com/rnwhisper/RNWhisperModule.java +5 -0
  7. package/ios/RNWhisper.mm +11 -0
  8. package/ios/RNWhisperContext.h +1 -0
  9. package/ios/RNWhisperContext.mm +46 -0
  10. package/lib/commonjs/AudioSessionIos.js +2 -1
  11. package/lib/commonjs/AudioSessionIos.js.map +1 -1
  12. package/lib/commonjs/NativeRNWhisper.js.map +1 -1
  13. package/lib/commonjs/index.js +26 -0
  14. package/lib/commonjs/index.js.map +1 -1
  15. package/lib/commonjs/jest-mock.js +126 -0
  16. package/lib/commonjs/jest-mock.js.map +1 -0
  17. package/lib/commonjs/realtime-transcription/RealtimeTranscriber.js +831 -0
  18. package/lib/commonjs/realtime-transcription/RealtimeTranscriber.js.map +1 -0
  19. package/lib/commonjs/realtime-transcription/SliceManager.js +233 -0
  20. package/lib/commonjs/realtime-transcription/SliceManager.js.map +1 -0
  21. package/lib/commonjs/realtime-transcription/adapters/AudioPcmStreamAdapter.js +133 -0
  22. package/lib/commonjs/realtime-transcription/adapters/AudioPcmStreamAdapter.js.map +1 -0
  23. package/lib/commonjs/realtime-transcription/adapters/JestAudioStreamAdapter.js +201 -0
  24. package/lib/commonjs/realtime-transcription/adapters/JestAudioStreamAdapter.js.map +1 -0
  25. package/lib/commonjs/realtime-transcription/adapters/SimulateFileAudioStreamAdapter.js +309 -0
  26. package/lib/commonjs/realtime-transcription/adapters/SimulateFileAudioStreamAdapter.js.map +1 -0
  27. package/lib/commonjs/realtime-transcription/index.js +27 -0
  28. package/lib/commonjs/realtime-transcription/index.js.map +1 -0
  29. package/lib/commonjs/realtime-transcription/types.js +114 -0
  30. package/lib/commonjs/realtime-transcription/types.js.map +1 -0
  31. package/lib/commonjs/utils/WavFileReader.js +158 -0
  32. package/lib/commonjs/utils/WavFileReader.js.map +1 -0
  33. package/lib/commonjs/utils/WavFileWriter.js +181 -0
  34. package/lib/commonjs/utils/WavFileWriter.js.map +1 -0
  35. package/lib/commonjs/utils/common.js +25 -0
  36. package/lib/commonjs/utils/common.js.map +1 -0
  37. package/lib/module/AudioSessionIos.js +2 -1
  38. package/lib/module/AudioSessionIos.js.map +1 -1
  39. package/lib/module/NativeRNWhisper.js.map +1 -1
  40. package/lib/module/index.js +24 -0
  41. package/lib/module/index.js.map +1 -1
  42. package/lib/module/jest-mock.js +124 -0
  43. package/lib/module/jest-mock.js.map +1 -0
  44. package/lib/module/realtime-transcription/RealtimeTranscriber.js +825 -0
  45. package/lib/module/realtime-transcription/RealtimeTranscriber.js.map +1 -0
  46. package/lib/module/realtime-transcription/SliceManager.js +226 -0
  47. package/lib/module/realtime-transcription/SliceManager.js.map +1 -0
  48. package/lib/module/realtime-transcription/adapters/AudioPcmStreamAdapter.js +124 -0
  49. package/lib/module/realtime-transcription/adapters/AudioPcmStreamAdapter.js.map +1 -0
  50. package/lib/module/realtime-transcription/adapters/JestAudioStreamAdapter.js +194 -0
  51. package/lib/module/realtime-transcription/adapters/JestAudioStreamAdapter.js.map +1 -0
  52. package/lib/module/realtime-transcription/adapters/SimulateFileAudioStreamAdapter.js +302 -0
  53. package/lib/module/realtime-transcription/adapters/SimulateFileAudioStreamAdapter.js.map +1 -0
  54. package/lib/module/realtime-transcription/index.js +8 -0
  55. package/lib/module/realtime-transcription/index.js.map +1 -0
  56. package/lib/module/realtime-transcription/types.js +107 -0
  57. package/lib/module/realtime-transcription/types.js.map +1 -0
  58. package/lib/module/utils/WavFileReader.js +151 -0
  59. package/lib/module/utils/WavFileReader.js.map +1 -0
  60. package/lib/module/utils/WavFileWriter.js +174 -0
  61. package/lib/module/utils/WavFileWriter.js.map +1 -0
  62. package/lib/module/utils/common.js +18 -0
  63. package/lib/module/utils/common.js.map +1 -0
  64. package/lib/typescript/AudioSessionIos.d.ts +1 -1
  65. package/lib/typescript/AudioSessionIos.d.ts.map +1 -1
  66. package/lib/typescript/NativeRNWhisper.d.ts +1 -0
  67. package/lib/typescript/NativeRNWhisper.d.ts.map +1 -1
  68. package/lib/typescript/index.d.ts +4 -0
  69. package/lib/typescript/index.d.ts.map +1 -1
  70. package/lib/typescript/jest-mock.d.ts +2 -0
  71. package/lib/typescript/jest-mock.d.ts.map +1 -0
  72. package/lib/typescript/realtime-transcription/RealtimeTranscriber.d.ts +165 -0
  73. package/lib/typescript/realtime-transcription/RealtimeTranscriber.d.ts.map +1 -0
  74. package/lib/typescript/realtime-transcription/SliceManager.d.ts +72 -0
  75. package/lib/typescript/realtime-transcription/SliceManager.d.ts.map +1 -0
  76. package/lib/typescript/realtime-transcription/adapters/AudioPcmStreamAdapter.d.ts +22 -0
  77. package/lib/typescript/realtime-transcription/adapters/AudioPcmStreamAdapter.d.ts.map +1 -0
  78. package/lib/typescript/realtime-transcription/adapters/JestAudioStreamAdapter.d.ts +44 -0
  79. package/lib/typescript/realtime-transcription/adapters/JestAudioStreamAdapter.d.ts.map +1 -0
  80. package/lib/typescript/realtime-transcription/adapters/SimulateFileAudioStreamAdapter.d.ts +75 -0
  81. package/lib/typescript/realtime-transcription/adapters/SimulateFileAudioStreamAdapter.d.ts.map +1 -0
  82. package/lib/typescript/realtime-transcription/index.d.ts +6 -0
  83. package/lib/typescript/realtime-transcription/index.d.ts.map +1 -0
  84. package/lib/typescript/realtime-transcription/types.d.ts +216 -0
  85. package/lib/typescript/realtime-transcription/types.d.ts.map +1 -0
  86. package/lib/typescript/utils/WavFileReader.d.ts +61 -0
  87. package/lib/typescript/utils/WavFileReader.d.ts.map +1 -0
  88. package/lib/typescript/utils/WavFileWriter.d.ts +57 -0
  89. package/lib/typescript/utils/WavFileWriter.d.ts.map +1 -0
  90. package/lib/typescript/utils/common.d.ts +9 -0
  91. package/lib/typescript/utils/common.d.ts.map +1 -0
  92. package/package.json +18 -6
  93. package/src/AudioSessionIos.ts +3 -2
  94. package/src/NativeRNWhisper.ts +2 -0
  95. package/src/index.ts +34 -0
  96. package/{jest/mock.js → src/jest-mock.ts} +2 -2
  97. package/src/realtime-transcription/RealtimeTranscriber.ts +983 -0
  98. package/src/realtime-transcription/SliceManager.ts +252 -0
  99. package/src/realtime-transcription/adapters/AudioPcmStreamAdapter.ts +143 -0
  100. package/src/realtime-transcription/adapters/JestAudioStreamAdapter.ts +251 -0
  101. package/src/realtime-transcription/adapters/SimulateFileAudioStreamAdapter.ts +378 -0
  102. package/src/realtime-transcription/index.ts +34 -0
  103. package/src/realtime-transcription/types.ts +277 -0
  104. package/src/utils/WavFileReader.ts +202 -0
  105. package/src/utils/WavFileWriter.ts +206 -0
  106. package/src/utils/common.ts +17 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_SliceManager","require","_WavFileWriter","_types","RealtimeTranscriber","callbacks","isActive","isTranscribing","vadEnabled","transcriptionQueue","accumulatedData","Uint8Array","wavFileWriter","lastSpeechDetectedTime","lastVadState","lastStatsSnapshot","transcriptionResults","Map","constructor","dependencies","options","arguments","length","undefined","whisperContext","vadContext","audioStream","fs","audioSliceSec","audioMinSec","maxSlicesInMemory","vadOptions","VAD_PRESETS","default","vadPreset","autoSliceOnSpeechEnd","autoSliceThreshold","transcribeOptions","initialPrompt","promptPreviousSlices","audioOutputPath","logger","sliceManager","SliceManager","onData","handleAudioData","bind","onError","handleError","onStatusChange","handleAudioStatusChange","start","Error","_this$callbacks$onSta","_this$callbacks","_this$options$audioSt4","_this$options$audioSt5","_this$options$audioSt6","_this$options$audioSt7","_this$options$audioSt8","call","reset","_this$options$audioSt","_this$options$audioSt2","_this$options$audioSt3","WavFileWriter","sampleRate","audioStreamConfig","channels","bitsPerSample","initialize","audioSource","bufferSize","emitStatsUpdate","log","error","_this$callbacks$onSta2","_this$callbacks2","stop","_this$callbacks$onSta3","_this$callbacks3","processAccumulatedDataForSliceManagement","processTranscriptionQueue","finalize","streamData","appendAudioData","data","catch","accumulateAudioData","errorMessage","message","newData","combined","set","minBufferSamples","result","addAudioData","slice","index","processSliceVAD","queueSliceForTranscription","checkAutoSlice","vadEvent","_slice","shouldTriggerAutoSlice","type","currentSliceInfo","getCurrentSliceInfo","currentSlice","getSliceByIndex","currentSliceIndex","currentDuration","Date","now","startTime","targetDuration","minDuration","meetsMinDuration","meetsThreshold","toFixed","nextSlice","_this$callbacks$onVad","_this$callbacks4","audioData","getAudioDataForTranscription","detectSpeech","timestamp","onVad","isSpeech","isSpeechEnd","speechDuration","unshift","sliceIndex","currentTimestamp","vadEventType","confidence","duration","audioBuffer","buffer","vadSegments","detectSpeechData","_vadSegments","totalTime","reduce","sum","segment","t1","t0","audioDuration","Math","min","threshold","currentThreshold","isProcessingTranscriptionQueue","item","shift","processTranscription","buildPrompt","promptParts","push","previousResults","Array","from","entries","filter","_ref","sort","_ref2","_ref3","a","b","map","_ref4","_result$transcribeEve","transcribeEvent","Boolean","join","_this$callbacks$onTra","_this$callbacks5","prompt","promise","transcribeData","onProgress","endTime","isCapturing","isRecording","processTime","recordingTime","memoryUsage","getMemoryUsage","onTranscribe","sampleCount","isProcessed","isReleased","_this$callbacks$onTra2","_this$callbacks6","errorEvent","_this$callbacks$onErr","_this$callbacks7","updateCallbacks","updateVadOptions","updateAutoSliceOptions","getStatistics","audioStats","accumulatedSamples","vadStats","enabled","contextAvailable","sliceStats","autoSliceConfig","getTranscriptionResults","values","_this$callbacks$onTra3","_this$callbacks8","startEvent","forceNextSlice","cancel","clear","release","_this$wavFileWriter","eventType","currentStats","shouldEmitStatsUpdate","_this$callbacks$onSta4","_this$callbacks9","statsEvent","onStatsUpdate","current","previous","_current$sliceStats","_current$sliceStats$m","_previous$sliceStats","_previous$sliceStats$","currentMemory","estimatedMB","previousMemory","memoryDiff","abs","exports"],"sourceRoot":"../../../src","sources":["realtime-transcription/RealtimeTranscriber.ts"],"mappings":"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"}
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SliceManager = void 0;
7
+ class SliceManager {
8
+ slices = [];
9
+ currentSliceIndex = 0;
10
+ transcribeSliceIndex = 0;
11
+ constructor() {
12
+ let sliceDurationSec = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 30;
13
+ let maxSlicesInMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
14
+ let sampleRate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 16000;
15
+ this.sliceDurationSec = sliceDurationSec;
16
+ this.maxSlicesInMemory = maxSlicesInMemory;
17
+ this.sampleRate = sampleRate;
18
+ }
19
+
20
+ /**
21
+ * Add audio data to the current slice
22
+ */
23
+ addAudioData(audioData) {
24
+ // Get or create current slice
25
+ const currentSlice = this.getCurrentSlice();
26
+
27
+ // Calculate bytes per slice (2 bytes per sample for 16-bit PCM)
28
+ const bytesPerSlice = this.sliceDurationSec * this.sampleRate * 2;
29
+
30
+ // Check if adding this data would exceed slice capacity
31
+ if (currentSlice.sampleCount + audioData.length > bytesPerSlice) {
32
+ // Finalize current slice and create new one
33
+ this.finalizeCurrentSlice();
34
+ this.currentSliceIndex += 1;
35
+ return this.addAudioData(audioData); // Recursively add to new slice
36
+ }
37
+
38
+ // Append data to current slice
39
+ const newData = new Uint8Array(currentSlice.sampleCount + audioData.length);
40
+ newData.set(currentSlice.data.subarray(0, currentSlice.sampleCount));
41
+ newData.set(audioData, currentSlice.sampleCount);
42
+ currentSlice.data = newData;
43
+ currentSlice.sampleCount += audioData.length;
44
+ currentSlice.endTime = Date.now();
45
+
46
+ // Check if slice is complete
47
+ const isSliceComplete = currentSlice.sampleCount >= bytesPerSlice * 0.8; // 80% full
48
+
49
+ if (isSliceComplete) {
50
+ this.finalizeCurrentSlice();
51
+ }
52
+ return {
53
+ slice: currentSlice
54
+ };
55
+ }
56
+
57
+ /**
58
+ * Get the current slice being built
59
+ */
60
+ getCurrentSlice() {
61
+ let slice = this.slices.find(s => s.index === this.currentSliceIndex);
62
+ if (!slice) {
63
+ const bytesPerSlice = this.sliceDurationSec * this.sampleRate * 2; // 2 bytes per sample
64
+ slice = {
65
+ index: this.currentSliceIndex,
66
+ data: new Uint8Array(bytesPerSlice),
67
+ sampleCount: 0,
68
+ startTime: Date.now(),
69
+ endTime: Date.now(),
70
+ isProcessed: false,
71
+ isReleased: false
72
+ };
73
+ this.slices.push(slice);
74
+
75
+ // Clean up old slices if we have too many
76
+ this.cleanupOldSlices();
77
+ }
78
+ return slice;
79
+ }
80
+
81
+ /**
82
+ * Finalize the current slice
83
+ */
84
+ finalizeCurrentSlice() {
85
+ const slice = this.slices.find(s => s.index === this.currentSliceIndex);
86
+ if (slice && slice.sampleCount > 0) {
87
+ // Trim the data array to actual size
88
+ slice.data = slice.data.subarray(0, slice.sampleCount);
89
+ slice.endTime = Date.now();
90
+ }
91
+ }
92
+
93
+ /**
94
+ * Get a slice for transcription
95
+ */
96
+ getSliceForTranscription() {
97
+ const slice = this.slices.find(s => s.index === this.transcribeSliceIndex && !s.isProcessed);
98
+ if (slice && slice.sampleCount > 0) {
99
+ return slice;
100
+ }
101
+ return null;
102
+ }
103
+
104
+ /**
105
+ * Mark a slice as processed
106
+ */
107
+ markSliceAsProcessed(sliceIndex) {
108
+ const slice = this.slices.find(s => s.index === sliceIndex);
109
+ if (slice) {
110
+ slice.isProcessed = true;
111
+ }
112
+ }
113
+
114
+ /**
115
+ * Move to the next slice for transcription
116
+ */
117
+ moveToNextTranscribeSlice() {
118
+ this.transcribeSliceIndex += 1;
119
+ }
120
+
121
+ /**
122
+ * Get audio data for transcription (base64 encoded)
123
+ */
124
+ getAudioDataForTranscription(sliceIndex) {
125
+ const slice = this.slices.find(s => s.index === sliceIndex);
126
+ if (!slice || slice.sampleCount === 0) {
127
+ return null;
128
+ }
129
+ return slice.data.subarray(0, slice.sampleCount);
130
+ }
131
+
132
+ /**
133
+ * Get a slice by index
134
+ */
135
+ getSliceByIndex(sliceIndex) {
136
+ return this.slices.find(s => s.index === sliceIndex) || null;
137
+ }
138
+
139
+ /**
140
+ * Clean up old slices to manage memory
141
+ */
142
+ cleanupOldSlices() {
143
+ if (this.slices.length <= this.maxSlicesInMemory) {
144
+ return;
145
+ }
146
+
147
+ // Sort slices by index
148
+ this.slices.sort((a, b) => a.index - b.index);
149
+
150
+ // Keep only the most recent slices
151
+ const slicesToKeep = this.slices.slice(-this.maxSlicesInMemory);
152
+ const slicesToRemove = this.slices.slice(0, -this.maxSlicesInMemory);
153
+
154
+ // Release old slices
155
+ slicesToRemove.forEach(slice => {
156
+ if (!slice.isReleased) {
157
+ slice.isReleased = true;
158
+ // Clear the audio data to free memory
159
+ slice.data = new Uint8Array(0);
160
+ }
161
+ });
162
+ this.slices = slicesToKeep;
163
+ }
164
+
165
+ /**
166
+ * Get memory usage statistics
167
+ */
168
+ getMemoryUsage() {
169
+ const activeSlices = this.slices.filter(s => !s.isReleased);
170
+ const totalBytes = activeSlices.reduce((sum, slice) => sum + slice.sampleCount, 0);
171
+
172
+ // Estimate memory usage (Uint8Array = 1 byte per sample)
173
+ const estimatedMB = totalBytes / (1024 * 1024);
174
+ return {
175
+ slicesInMemory: activeSlices.length,
176
+ totalSamples: totalBytes / 2,
177
+ // Convert bytes to samples (2 bytes per sample)
178
+ estimatedMB: Math.round(estimatedMB * 100) / 100 // Round to 2 decimal places
179
+ };
180
+ }
181
+
182
+ /**
183
+ * Reset all slices and indices
184
+ */
185
+ reset() {
186
+ // Release all slices
187
+ this.slices.forEach(slice => {
188
+ slice.isReleased = true;
189
+ // Clear the audio data to free memory
190
+ slice.data = new Uint8Array(0);
191
+ });
192
+
193
+ // Reset state
194
+ this.slices = [];
195
+ this.currentSliceIndex = 0;
196
+ this.transcribeSliceIndex = 0;
197
+ }
198
+
199
+ /**
200
+ * Get current slice information
201
+ */
202
+ getCurrentSliceInfo() {
203
+ return {
204
+ currentSliceIndex: this.currentSliceIndex,
205
+ transcribeSliceIndex: this.transcribeSliceIndex,
206
+ totalSlices: this.slices.length,
207
+ memoryUsage: this.getMemoryUsage()
208
+ };
209
+ }
210
+
211
+ /**
212
+ * Force move to the next slice, finalizing the current one regardless of capacity
213
+ */
214
+ forceNextSlice() {
215
+ const currentSlice = this.slices.find(s => s.index === this.currentSliceIndex);
216
+ if (currentSlice && currentSlice.sampleCount > 0) {
217
+ // Finalize current slice
218
+ this.finalizeCurrentSlice();
219
+
220
+ // Move to next slice
221
+ this.currentSliceIndex += 1;
222
+ return {
223
+ slice: currentSlice
224
+ };
225
+ }
226
+
227
+ // If no current slice or it's empty, just move to next index
228
+ this.currentSliceIndex += 1;
229
+ return {};
230
+ }
231
+ }
232
+ exports.SliceManager = SliceManager;
233
+ //# sourceMappingURL=SliceManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SliceManager","slices","currentSliceIndex","transcribeSliceIndex","constructor","sliceDurationSec","arguments","length","undefined","maxSlicesInMemory","sampleRate","addAudioData","audioData","currentSlice","getCurrentSlice","bytesPerSlice","sampleCount","finalizeCurrentSlice","newData","Uint8Array","set","data","subarray","endTime","Date","now","isSliceComplete","slice","find","s","index","startTime","isProcessed","isReleased","push","cleanupOldSlices","getSliceForTranscription","markSliceAsProcessed","sliceIndex","moveToNextTranscribeSlice","getAudioDataForTranscription","getSliceByIndex","sort","a","b","slicesToKeep","slicesToRemove","forEach","getMemoryUsage","activeSlices","filter","totalBytes","reduce","sum","estimatedMB","slicesInMemory","totalSamples","Math","round","reset","getCurrentSliceInfo","totalSlices","memoryUsage","forceNextSlice","exports"],"sourceRoot":"../../../src","sources":["realtime-transcription/SliceManager.ts"],"mappings":";;;;;;AAEO,MAAMA,YAAY,CAAC;EAChBC,MAAM,GAAiB,EAAE;EAEzBC,iBAAiB,GAAG,CAAC;EAErBC,oBAAoB,GAAG,CAAC;EAQhCC,WAAWA,CAAA,EAIT;IAAA,IAHAC,gBAAgB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;IAAA,IACrBG,iBAAiB,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC;IAAA,IACrBI,UAAU,GAAAJ,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;IAElB,IAAI,CAACD,gBAAgB,GAAGA,gBAAgB;IACxC,IAAI,CAACI,iBAAiB,GAAGA,iBAAiB;IAC1C,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;;EAEA;AACF;AACA;EACEC,YAAYA,CAACC,SAAqB,EAEhC;IACA;IACA,MAAMC,YAAY,GAAG,IAAI,CAACC,eAAe,EAAE;;IAE3C;IACA,MAAMC,aAAa,GAAG,IAAI,CAACV,gBAAgB,GAAG,IAAI,CAACK,UAAU,GAAG,CAAC;;IAEjE;IACA,IAAIG,YAAY,CAACG,WAAW,GAAGJ,SAAS,CAACL,MAAM,GAAGQ,aAAa,EAAE;MAC/D;MACA,IAAI,CAACE,oBAAoB,EAAE;MAC3B,IAAI,CAACf,iBAAiB,IAAI,CAAC;MAC3B,OAAO,IAAI,CAACS,YAAY,CAACC,SAAS,CAAC,EAAC;IACtC;;IAEA;IACA,MAAMM,OAAO,GAAG,IAAIC,UAAU,CAACN,YAAY,CAACG,WAAW,GAAGJ,SAAS,CAACL,MAAM,CAAC;IAC3EW,OAAO,CAACE,GAAG,CAACP,YAAY,CAACQ,IAAI,CAACC,QAAQ,CAAC,CAAC,EAAET,YAAY,CAACG,WAAW,CAAC,CAAC;IACpEE,OAAO,CAACE,GAAG,CAACR,SAAS,EAAEC,YAAY,CAACG,WAAW,CAAC;IAEhDH,YAAY,CAACQ,IAAI,GAAGH,OAAO;IAC3BL,YAAY,CAACG,WAAW,IAAIJ,SAAS,CAACL,MAAM;IAC5CM,YAAY,CAACU,OAAO,GAAGC,IAAI,CAACC,GAAG,EAAE;;IAEjC;IACA,MAAMC,eAAe,GAAGb,YAAY,CAACG,WAAW,IAAID,aAAa,GAAG,GAAG,EAAC;;IAExE,IAAIW,eAAe,EAAE;MACnB,IAAI,CAACT,oBAAoB,EAAE;IAC7B;IAEA,OAAO;MAAEU,KAAK,EAAEd;IAAa,CAAC;EAChC;;EAEA;AACF;AACA;EACUC,eAAeA,CAAA,EAAe;IACpC,IAAIa,KAAK,GAAG,IAAI,CAAC1B,MAAM,CAAC2B,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,KAAK,KAAK,IAAI,CAAC5B,iBAAiB,CAAC;IAEvE,IAAI,CAACyB,KAAK,EAAE;MACV,MAAMZ,aAAa,GAAG,IAAI,CAACV,gBAAgB,GAAG,IAAI,CAACK,UAAU,GAAG,CAAC,EAAC;MAClEiB,KAAK,GAAG;QACNG,KAAK,EAAE,IAAI,CAAC5B,iBAAiB;QAC7BmB,IAAI,EAAE,IAAIF,UAAU,CAACJ,aAAa,CAAC;QACnCC,WAAW,EAAE,CAAC;QACde,SAAS,EAAEP,IAAI,CAACC,GAAG,EAAE;QACrBF,OAAO,EAAEC,IAAI,CAACC,GAAG,EAAE;QACnBO,WAAW,EAAE,KAAK;QAClBC,UAAU,EAAE;MACd,CAAC;MACD,IAAI,CAAChC,MAAM,CAACiC,IAAI,CAACP,KAAK,CAAC;;MAEvB;MACA,IAAI,CAACQ,gBAAgB,EAAE;IACzB;IAEA,OAAOR,KAAK;EACd;;EAEA;AACF;AACA;EACUV,oBAAoBA,CAAA,EAAS;IACnC,MAAMU,KAAK,GAAG,IAAI,CAAC1B,MAAM,CAAC2B,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,KAAK,KAAK,IAAI,CAAC5B,iBAAiB,CAAC;IACzE,IAAIyB,KAAK,IAAIA,KAAK,CAACX,WAAW,GAAG,CAAC,EAAE;MAClC;MACAW,KAAK,CAACN,IAAI,GAAGM,KAAK,CAACN,IAAI,CAACC,QAAQ,CAAC,CAAC,EAAEK,KAAK,CAACX,WAAW,CAAC;MACtDW,KAAK,CAACJ,OAAO,GAAGC,IAAI,CAACC,GAAG,EAAE;IAC5B;EACF;;EAEA;AACF;AACA;EACEW,wBAAwBA,CAAA,EAAsB;IAC5C,MAAMT,KAAK,GAAG,IAAI,CAAC1B,MAAM,CAAC2B,IAAI,CAC3BC,CAAC,IAAKA,CAAC,CAACC,KAAK,KAAK,IAAI,CAAC3B,oBAAoB,IAAI,CAAC0B,CAAC,CAACG,WAAW,CAC/D;IAED,IAAIL,KAAK,IAAIA,KAAK,CAACX,WAAW,GAAG,CAAC,EAAE;MAClC,OAAOW,KAAK;IACd;IAEA,OAAO,IAAI;EACb;;EAEA;AACF;AACA;EACEU,oBAAoBA,CAACC,UAAkB,EAAQ;IAC7C,MAAMX,KAAK,GAAG,IAAI,CAAC1B,MAAM,CAAC2B,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,KAAK,KAAKQ,UAAU,CAAC;IAC7D,IAAIX,KAAK,EAAE;MACTA,KAAK,CAACK,WAAW,GAAG,IAAI;IAC1B;EACF;;EAEA;AACF;AACA;EACEO,yBAAyBA,CAAA,EAAS;IAChC,IAAI,CAACpC,oBAAoB,IAAI,CAAC;EAChC;;EAEA;AACF;AACA;EACEqC,4BAA4BA,CAACF,UAAkB,EAAqB;IAClE,MAAMX,KAAK,GAAG,IAAI,CAAC1B,MAAM,CAAC2B,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,KAAK,KAAKQ,UAAU,CAAC;IAC7D,IAAI,CAACX,KAAK,IAAIA,KAAK,CAACX,WAAW,KAAK,CAAC,EAAE;MACrC,OAAO,IAAI;IACb;IAEA,OAAOW,KAAK,CAACN,IAAI,CAACC,QAAQ,CAAC,CAAC,EAAEK,KAAK,CAACX,WAAW,CAAC;EAClD;;EAEA;AACF;AACA;EACEyB,eAAeA,CAACH,UAAkB,EAAqB;IACrD,OAAO,IAAI,CAACrC,MAAM,CAAC2B,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,KAAK,KAAKQ,UAAU,CAAC,IAAI,IAAI;EAChE;;EAEA;AACF;AACA;EACUH,gBAAgBA,CAAA,EAAS;IAC/B,IAAI,IAAI,CAAClC,MAAM,CAACM,MAAM,IAAI,IAAI,CAACE,iBAAiB,EAAE;MAChD;IACF;;IAEA;IACA,IAAI,CAACR,MAAM,CAACyC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACb,KAAK,GAAGc,CAAC,CAACd,KAAK,CAAC;;IAE7C;IACA,MAAMe,YAAY,GAAG,IAAI,CAAC5C,MAAM,CAAC0B,KAAK,CAAC,CAAC,IAAI,CAAClB,iBAAiB,CAAC;IAC/D,MAAMqC,cAAc,GAAG,IAAI,CAAC7C,MAAM,CAAC0B,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAClB,iBAAiB,CAAC;;IAEpE;IACAqC,cAAc,CAACC,OAAO,CAAEpB,KAAK,IAAK;MAChC,IAAI,CAACA,KAAK,CAACM,UAAU,EAAE;QACrBN,KAAK,CAACM,UAAU,GAAG,IAAI;QACvB;QACAN,KAAK,CAACN,IAAI,GAAG,IAAIF,UAAU,CAAC,CAAC,CAAC;MAChC;IACF,CAAC,CAAC;IAEF,IAAI,CAAClB,MAAM,GAAG4C,YAAY;EAC5B;;EAEA;AACF;AACA;EACEG,cAAcA,CAAA,EAAgB;IAC5B,MAAMC,YAAY,GAAG,IAAI,CAAChD,MAAM,CAACiD,MAAM,CAAErB,CAAC,IAAK,CAACA,CAAC,CAACI,UAAU,CAAC;IAC7D,MAAMkB,UAAU,GAAGF,YAAY,CAACG,MAAM,CACpC,CAACC,GAAG,EAAE1B,KAAK,KAAK0B,GAAG,GAAG1B,KAAK,CAACX,WAAW,EACvC,CAAC,CACF;;IAED;IACA,MAAMsC,WAAW,GAAGH,UAAU,IAAI,IAAI,GAAG,IAAI,CAAC;IAE9C,OAAO;MACLI,cAAc,EAAEN,YAAY,CAAC1C,MAAM;MACnCiD,YAAY,EAAEL,UAAU,GAAG,CAAC;MAAE;MAC9BG,WAAW,EAAEG,IAAI,CAACC,KAAK,CAACJ,WAAW,GAAG,GAAG,CAAC,GAAG,GAAG,CAAE;IACpD,CAAC;EACH;;EAEA;AACF;AACA;EACEK,KAAKA,CAAA,EAAS;IACZ;IACA,IAAI,CAAC1D,MAAM,CAAC8C,OAAO,CAAEpB,KAAK,IAAK;MAC7BA,KAAK,CAACM,UAAU,GAAG,IAAI;MACvB;MACAN,KAAK,CAACN,IAAI,GAAG,IAAIF,UAAU,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC;;IAEF;IACA,IAAI,CAAClB,MAAM,GAAG,EAAE;IAChB,IAAI,CAACC,iBAAiB,GAAG,CAAC;IAC1B,IAAI,CAACC,oBAAoB,GAAG,CAAC;EAC/B;;EAEA;AACF;AACA;EACEyD,mBAAmBA,CAAA,EAAG;IACpB,OAAO;MACL1D,iBAAiB,EAAE,IAAI,CAACA,iBAAiB;MACzCC,oBAAoB,EAAE,IAAI,CAACA,oBAAoB;MAC/C0D,WAAW,EAAE,IAAI,CAAC5D,MAAM,CAACM,MAAM;MAC/BuD,WAAW,EAAE,IAAI,CAACd,cAAc;IAClC,CAAC;EACH;;EAEA;AACF;AACA;EACEe,cAAcA,CAAA,EAA2B;IACvC,MAAMlD,YAAY,GAAG,IAAI,CAACZ,MAAM,CAAC2B,IAAI,CAClCC,CAAC,IAAKA,CAAC,CAACC,KAAK,KAAK,IAAI,CAAC5B,iBAAiB,CAC1C;IAED,IAAIW,YAAY,IAAIA,YAAY,CAACG,WAAW,GAAG,CAAC,EAAE;MAChD;MACA,IAAI,CAACC,oBAAoB,EAAE;;MAE3B;MACA,IAAI,CAACf,iBAAiB,IAAI,CAAC;MAE3B,OAAO;QAAEyB,KAAK,EAAEd;MAAa,CAAC;IAChC;;IAEA;IACA,IAAI,CAACX,iBAAiB,IAAI,CAAC;IAC3B,OAAO,CAAC,CAAC;EACX;AACF;AAAC8D,OAAA,CAAAhE,YAAA,GAAAA,YAAA"}
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AudioPcmStreamAdapter = void 0;
7
+ var _reactNativeAudioPcmStream = _interopRequireDefault(require("@fugood/react-native-audio-pcm-stream"));
8
+ var _common = require("../../utils/common");
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ /* eslint-disable import/no-extraneous-dependencies */
11
+ // @ts-ignore
12
+
13
+ class AudioPcmStreamAdapter {
14
+ isInitialized = false;
15
+ recording = false;
16
+ config = null;
17
+ async initialize(config) {
18
+ if (this.isInitialized) {
19
+ await this.release();
20
+ }
21
+ try {
22
+ this.config = config || null;
23
+
24
+ // Initialize LiveAudioStream
25
+ _reactNativeAudioPcmStream.default.init({
26
+ sampleRate: config.sampleRate || 16000,
27
+ channels: config.channels || 1,
28
+ bitsPerSample: config.bitsPerSample || 16,
29
+ audioSource: config.audioSource || 6,
30
+ bufferSize: config.bufferSize || 16 * 1024,
31
+ wavFile: '' // We handle file writing separately
32
+ });
33
+
34
+ // Set up data listener
35
+ _reactNativeAudioPcmStream.default.on('data', this.handleAudioData.bind(this));
36
+ this.isInitialized = true;
37
+ } catch (error) {
38
+ var _this$errorCallback;
39
+ const errorMessage = error instanceof Error ? error.message : 'Unknown initialization error';
40
+ (_this$errorCallback = this.errorCallback) === null || _this$errorCallback === void 0 ? void 0 : _this$errorCallback.call(this, errorMessage);
41
+ throw new Error(`Failed to initialize LiveAudioStream: ${errorMessage}`);
42
+ }
43
+ }
44
+ async start() {
45
+ if (!this.isInitialized) {
46
+ throw new Error('AudioStream not initialized');
47
+ }
48
+ if (this.recording) {
49
+ return;
50
+ }
51
+ try {
52
+ var _this$statusCallback;
53
+ _reactNativeAudioPcmStream.default.start();
54
+ this.recording = true;
55
+ (_this$statusCallback = this.statusCallback) === null || _this$statusCallback === void 0 ? void 0 : _this$statusCallback.call(this, true);
56
+ } catch (error) {
57
+ var _this$errorCallback2;
58
+ const errorMessage = error instanceof Error ? error.message : 'Unknown start error';
59
+ (_this$errorCallback2 = this.errorCallback) === null || _this$errorCallback2 === void 0 ? void 0 : _this$errorCallback2.call(this, errorMessage);
60
+ throw new Error(`Failed to start recording: ${errorMessage}`);
61
+ }
62
+ }
63
+ async stop() {
64
+ if (!this.recording) {
65
+ return;
66
+ }
67
+ try {
68
+ var _this$statusCallback2;
69
+ await _reactNativeAudioPcmStream.default.stop();
70
+ this.recording = false;
71
+ (_this$statusCallback2 = this.statusCallback) === null || _this$statusCallback2 === void 0 ? void 0 : _this$statusCallback2.call(this, false);
72
+ } catch (error) {
73
+ var _this$errorCallback3;
74
+ const errorMessage = error instanceof Error ? error.message : 'Unknown stop error';
75
+ (_this$errorCallback3 = this.errorCallback) === null || _this$errorCallback3 === void 0 ? void 0 : _this$errorCallback3.call(this, errorMessage);
76
+ throw new Error(`Failed to stop recording: ${errorMessage}`);
77
+ }
78
+ }
79
+ isRecording() {
80
+ return this.recording;
81
+ }
82
+ onData(callback) {
83
+ this.dataCallback = callback;
84
+ }
85
+ onError(callback) {
86
+ this.errorCallback = callback;
87
+ }
88
+ onStatusChange(callback) {
89
+ this.statusCallback = callback;
90
+ }
91
+ async release() {
92
+ if (this.recording) {
93
+ await this.stop();
94
+ }
95
+ try {
96
+ // LiveAudioStream doesn't have an explicit release method
97
+ // But we should remove listeners and reset state
98
+ this.isInitialized = false;
99
+ this.config = null;
100
+ this.dataCallback = undefined;
101
+ this.errorCallback = undefined;
102
+ this.statusCallback = undefined;
103
+ } catch (error) {
104
+ console.warn('Error during LiveAudioStream release:', error);
105
+ }
106
+ }
107
+
108
+ /**
109
+ * Handle incoming audio data from LiveAudioStream
110
+ */
111
+ handleAudioData(base64Data) {
112
+ if (!this.dataCallback) {
113
+ return;
114
+ }
115
+ try {
116
+ var _this$config, _this$config2;
117
+ const audioData = (0, _common.base64ToUint8Array)(base64Data);
118
+ const streamData = {
119
+ data: audioData,
120
+ sampleRate: ((_this$config = this.config) === null || _this$config === void 0 ? void 0 : _this$config.sampleRate) || 16000,
121
+ channels: ((_this$config2 = this.config) === null || _this$config2 === void 0 ? void 0 : _this$config2.channels) || 1,
122
+ timestamp: Date.now()
123
+ };
124
+ this.dataCallback(streamData);
125
+ } catch (error) {
126
+ var _this$errorCallback4;
127
+ const errorMessage = error instanceof Error ? error.message : 'Audio processing error';
128
+ (_this$errorCallback4 = this.errorCallback) === null || _this$errorCallback4 === void 0 ? void 0 : _this$errorCallback4.call(this, errorMessage);
129
+ }
130
+ }
131
+ }
132
+ exports.AudioPcmStreamAdapter = AudioPcmStreamAdapter;
133
+ //# sourceMappingURL=AudioPcmStreamAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNativeAudioPcmStream","_interopRequireDefault","require","_common","obj","__esModule","default","AudioPcmStreamAdapter","isInitialized","recording","config","initialize","release","LiveAudioStream","init","sampleRate","channels","bitsPerSample","audioSource","bufferSize","wavFile","on","handleAudioData","bind","error","_this$errorCallback","errorMessage","Error","message","errorCallback","call","start","_this$statusCallback","statusCallback","_this$errorCallback2","stop","_this$statusCallback2","_this$errorCallback3","isRecording","onData","callback","dataCallback","onError","onStatusChange","undefined","console","warn","base64Data","_this$config","_this$config2","audioData","base64ToUint8Array","streamData","data","timestamp","Date","now","_this$errorCallback4","exports"],"sourceRoot":"../../../../src","sources":["realtime-transcription/adapters/AudioPcmStreamAdapter.ts"],"mappings":"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"}
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.JestAudioStreamAdapter = void 0;
7
+ class JestAudioStreamAdapter {
8
+ config = null;
9
+ isInitialized = false;
10
+ recording = false;
11
+ chunksSent = 0;
12
+ startTime = 0;
13
+ constructor() {
14
+ let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
15
+ this.options = {
16
+ sampleRate: 16000,
17
+ channels: 1,
18
+ bitsPerSample: 16,
19
+ simulateLatency: 0,
20
+ simulateErrors: false,
21
+ chunkSize: 3200,
22
+ // 100ms at 16kHz, 16-bit, mono
23
+ chunkInterval: 100,
24
+ // 100ms
25
+ maxChunks: -1,
26
+ // unlimited
27
+ generateSilence: true,
28
+ ...options
29
+ };
30
+ }
31
+ async initialize(config) {
32
+ if (this.isInitialized) {
33
+ await this.release();
34
+ }
35
+ if (this.options.simulateLatency > 0) {
36
+ await JestAudioStreamAdapter.delay(this.options.simulateLatency);
37
+ }
38
+ if (this.options.simulateErrors && !this.options.simulateStartErrorOnly) {
39
+ throw new Error('Simulated initialization error');
40
+ }
41
+ this.config = config;
42
+ this.isInitialized = true;
43
+ }
44
+ async start() {
45
+ var _this$statusCallback;
46
+ if (!this.isInitialized) {
47
+ throw new Error('AudioStream not initialized');
48
+ }
49
+ if (this.recording) {
50
+ return;
51
+ }
52
+ if (this.options.simulateLatency > 0) {
53
+ await JestAudioStreamAdapter.delay(this.options.simulateLatency);
54
+ }
55
+ if (this.options.simulateErrors) {
56
+ throw new Error('Simulated start error');
57
+ }
58
+ this.recording = true;
59
+ this.chunksSent = 0;
60
+ this.startTime = Date.now();
61
+ (_this$statusCallback = this.statusCallback) === null || _this$statusCallback === void 0 ? void 0 : _this$statusCallback.call(this, true);
62
+ this.startStreaming();
63
+ }
64
+ async stop() {
65
+ var _this$statusCallback2;
66
+ if (!this.recording) {
67
+ return;
68
+ }
69
+ if (this.options.simulateLatency > 0) {
70
+ await JestAudioStreamAdapter.delay(this.options.simulateLatency);
71
+ }
72
+ this.recording = false;
73
+ (_this$statusCallback2 = this.statusCallback) === null || _this$statusCallback2 === void 0 ? void 0 : _this$statusCallback2.call(this, false);
74
+ if (this.streamInterval) {
75
+ clearTimeout(this.streamInterval);
76
+ this.streamInterval = undefined;
77
+ }
78
+ }
79
+ isRecording() {
80
+ return this.recording;
81
+ }
82
+ onData(callback) {
83
+ this.dataCallback = callback;
84
+ }
85
+ onError(callback) {
86
+ this.errorCallback = callback;
87
+ }
88
+ onStatusChange(callback) {
89
+ this.statusCallback = callback;
90
+ }
91
+ async release() {
92
+ if (this.recording) {
93
+ await this.stop();
94
+ }
95
+ this.isInitialized = false;
96
+ this.config = null;
97
+ this.dataCallback = undefined;
98
+ this.errorCallback = undefined;
99
+ this.statusCallback = undefined;
100
+ this.chunksSent = 0;
101
+ }
102
+
103
+ // Test helper methods
104
+ simulateError(error) {
105
+ var _this$errorCallback;
106
+ (_this$errorCallback = this.errorCallback) === null || _this$errorCallback === void 0 ? void 0 : _this$errorCallback.call(this, error);
107
+ }
108
+ simulateDataChunk(data) {
109
+ if (!this.dataCallback || !this.config) {
110
+ return;
111
+ }
112
+ const streamData = {
113
+ data,
114
+ sampleRate: this.config.sampleRate || this.options.sampleRate,
115
+ channels: this.config.channels || this.options.channels,
116
+ timestamp: Date.now()
117
+ };
118
+ this.dataCallback(streamData);
119
+ }
120
+ getChunksSent() {
121
+ return this.chunksSent;
122
+ }
123
+ getTotalBytesStreamed() {
124
+ return this.chunksSent * this.options.chunkSize;
125
+ }
126
+ getStreamDuration() {
127
+ return this.recording ? Date.now() - this.startTime : 0;
128
+ }
129
+ startStreaming() {
130
+ if (!this.dataCallback || !this.config) {
131
+ return;
132
+ }
133
+ const streamChunk = () => {
134
+ if (!this.recording) {
135
+ return;
136
+ }
137
+
138
+ // Check if we've reached the maximum chunks
139
+ if (this.options.maxChunks > 0 && this.chunksSent >= this.options.maxChunks) {
140
+ this.stop();
141
+ return;
142
+ }
143
+
144
+ // Generate or use provided audio data
145
+ const audioData = this.generateAudioChunk();
146
+ if (audioData) {
147
+ this.simulateDataChunk(audioData);
148
+ this.chunksSent += 1;
149
+ }
150
+
151
+ // Schedule next chunk if still recording
152
+ if (this.recording) {
153
+ this.streamInterval = setTimeout(streamChunk, this.options.chunkInterval);
154
+ }
155
+ };
156
+
157
+ // Start streaming after a short delay
158
+ this.streamInterval = setTimeout(streamChunk, this.options.chunkInterval);
159
+ }
160
+ generateAudioChunk() {
161
+ // If we have pre-defined audio data, use it
162
+ if (this.options.audioData) {
163
+ const startByte = this.chunksSent * this.options.chunkSize;
164
+ const endByte = Math.min(startByte + this.options.chunkSize, this.options.audioData.length);
165
+ if (startByte >= this.options.audioData.length) {
166
+ return null; // No more data
167
+ }
168
+
169
+ return this.options.audioData.subarray(startByte, endByte);
170
+ }
171
+
172
+ // Generate silence or simple tone
173
+ const chunkSize = this.options.chunkSize;
174
+ const audioData = new Uint8Array(chunkSize);
175
+ if (this.options.generateSilence) {
176
+ // Generate silence (all zeros)
177
+ audioData.fill(0);
178
+ } else {
179
+ // Generate a simple sine wave tone for testing
180
+ const sampleRate = this.options.sampleRate;
181
+ const frequency = 440; // A4 note
182
+ const samplesPerChunk = chunkSize / 2; // 16-bit samples
183
+ const timeOffset = this.chunksSent * samplesPerChunk / sampleRate;
184
+ for (let i = 0; i < samplesPerChunk; i += 1) {
185
+ const time = timeOffset + i / sampleRate;
186
+ const amplitude = Math.sin(2 * Math.PI * frequency * time) * 0.5;
187
+ const sample = Math.round(amplitude * 32767); // 16-bit signed sample
188
+
189
+ // Convert to little-endian bytes
190
+ audioData[i * 2] = sample % 256;
191
+ audioData[i * 2 + 1] = Math.floor(sample / 256) % 256;
192
+ }
193
+ }
194
+ return audioData;
195
+ }
196
+ static delay(ms) {
197
+ return new Promise(resolve => setTimeout(resolve, ms));
198
+ }
199
+ }
200
+ exports.JestAudioStreamAdapter = JestAudioStreamAdapter;
201
+ //# sourceMappingURL=JestAudioStreamAdapter.js.map