whisper.rn 0.5.0-rc.0 → 0.5.0-rc.2
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/README.md +119 -50
- package/android/build.gradle +1 -0
- package/lib/commonjs/AudioSessionIos.js +2 -1
- package/lib/commonjs/AudioSessionIos.js.map +1 -1
- package/lib/commonjs/index.js +1 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/jest-mock.js +126 -0
- package/lib/commonjs/jest-mock.js.map +1 -0
- package/lib/commonjs/realtime-transcription/RealtimeTranscriber.js +831 -0
- package/lib/commonjs/realtime-transcription/RealtimeTranscriber.js.map +1 -0
- package/lib/commonjs/realtime-transcription/SliceManager.js +233 -0
- package/lib/commonjs/realtime-transcription/SliceManager.js.map +1 -0
- package/lib/commonjs/realtime-transcription/adapters/AudioPcmStreamAdapter.js +133 -0
- package/lib/commonjs/realtime-transcription/adapters/AudioPcmStreamAdapter.js.map +1 -0
- package/lib/commonjs/realtime-transcription/adapters/JestAudioStreamAdapter.js +201 -0
- package/lib/commonjs/realtime-transcription/adapters/JestAudioStreamAdapter.js.map +1 -0
- package/lib/commonjs/realtime-transcription/adapters/SimulateFileAudioStreamAdapter.js +309 -0
- package/lib/commonjs/realtime-transcription/adapters/SimulateFileAudioStreamAdapter.js.map +1 -0
- package/lib/commonjs/realtime-transcription/index.js +27 -0
- package/lib/commonjs/realtime-transcription/index.js.map +1 -0
- package/lib/commonjs/realtime-transcription/types.js +114 -0
- package/lib/commonjs/realtime-transcription/types.js.map +1 -0
- package/lib/commonjs/utils/WavFileReader.js +158 -0
- package/lib/commonjs/utils/WavFileReader.js.map +1 -0
- package/lib/commonjs/utils/WavFileWriter.js +181 -0
- package/lib/commonjs/utils/WavFileWriter.js.map +1 -0
- package/lib/commonjs/utils/common.js +25 -0
- package/lib/commonjs/utils/common.js.map +1 -0
- package/lib/module/AudioSessionIos.js +2 -1
- package/lib/module/AudioSessionIos.js.map +1 -1
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/jest-mock.js +124 -0
- package/lib/module/jest-mock.js.map +1 -0
- package/lib/module/realtime-transcription/RealtimeTranscriber.js +825 -0
- package/lib/module/realtime-transcription/RealtimeTranscriber.js.map +1 -0
- package/lib/module/realtime-transcription/SliceManager.js +226 -0
- package/lib/module/realtime-transcription/SliceManager.js.map +1 -0
- package/lib/module/realtime-transcription/adapters/AudioPcmStreamAdapter.js +124 -0
- package/lib/module/realtime-transcription/adapters/AudioPcmStreamAdapter.js.map +1 -0
- package/lib/module/realtime-transcription/adapters/JestAudioStreamAdapter.js +194 -0
- package/lib/module/realtime-transcription/adapters/JestAudioStreamAdapter.js.map +1 -0
- package/lib/module/realtime-transcription/adapters/SimulateFileAudioStreamAdapter.js +302 -0
- package/lib/module/realtime-transcription/adapters/SimulateFileAudioStreamAdapter.js.map +1 -0
- package/lib/module/realtime-transcription/index.js +8 -0
- package/lib/module/realtime-transcription/index.js.map +1 -0
- package/lib/module/realtime-transcription/types.js +107 -0
- package/lib/module/realtime-transcription/types.js.map +1 -0
- package/lib/module/utils/WavFileReader.js +151 -0
- package/lib/module/utils/WavFileReader.js.map +1 -0
- package/lib/module/utils/WavFileWriter.js +174 -0
- package/lib/module/utils/WavFileWriter.js.map +1 -0
- package/lib/module/utils/common.js +18 -0
- package/lib/module/utils/common.js.map +1 -0
- package/lib/typescript/AudioSessionIos.d.ts +1 -1
- package/lib/typescript/AudioSessionIos.d.ts.map +1 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/jest-mock.d.ts +2 -0
- package/lib/typescript/jest-mock.d.ts.map +1 -0
- package/lib/typescript/realtime-transcription/RealtimeTranscriber.d.ts +165 -0
- package/lib/typescript/realtime-transcription/RealtimeTranscriber.d.ts.map +1 -0
- package/lib/typescript/realtime-transcription/SliceManager.d.ts +72 -0
- package/lib/typescript/realtime-transcription/SliceManager.d.ts.map +1 -0
- package/lib/typescript/realtime-transcription/adapters/AudioPcmStreamAdapter.d.ts +22 -0
- package/lib/typescript/realtime-transcription/adapters/AudioPcmStreamAdapter.d.ts.map +1 -0
- package/lib/typescript/realtime-transcription/adapters/JestAudioStreamAdapter.d.ts +44 -0
- package/lib/typescript/realtime-transcription/adapters/JestAudioStreamAdapter.d.ts.map +1 -0
- package/lib/typescript/realtime-transcription/adapters/SimulateFileAudioStreamAdapter.d.ts +75 -0
- package/lib/typescript/realtime-transcription/adapters/SimulateFileAudioStreamAdapter.d.ts.map +1 -0
- package/lib/typescript/realtime-transcription/index.d.ts +6 -0
- package/lib/typescript/realtime-transcription/index.d.ts.map +1 -0
- package/lib/typescript/realtime-transcription/types.d.ts +216 -0
- package/lib/typescript/realtime-transcription/types.d.ts.map +1 -0
- package/lib/typescript/utils/WavFileReader.d.ts +61 -0
- package/lib/typescript/utils/WavFileReader.d.ts.map +1 -0
- package/lib/typescript/utils/WavFileWriter.d.ts +57 -0
- package/lib/typescript/utils/WavFileWriter.d.ts.map +1 -0
- package/lib/typescript/utils/common.d.ts +9 -0
- package/lib/typescript/utils/common.d.ts.map +1 -0
- package/package.json +23 -11
- package/src/AudioSessionIos.ts +3 -2
- package/src/index.ts +4 -0
- package/{jest/mock.js → src/jest-mock.ts} +2 -2
- package/src/realtime-transcription/RealtimeTranscriber.ts +983 -0
- package/src/realtime-transcription/SliceManager.ts +252 -0
- package/src/realtime-transcription/adapters/AudioPcmStreamAdapter.ts +143 -0
- package/src/realtime-transcription/adapters/JestAudioStreamAdapter.ts +251 -0
- package/src/realtime-transcription/adapters/SimulateFileAudioStreamAdapter.ts +378 -0
- package/src/realtime-transcription/index.ts +34 -0
- package/src/realtime-transcription/types.ts +277 -0
- package/src/utils/WavFileReader.ts +202 -0
- package/src/utils/WavFileWriter.ts +206 -0
- 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":"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"}
|
|
@@ -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
|