whisper.rn 0.5.0-rc.1 → 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/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 +18 -6
- 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
package/lib/typescript/realtime-transcription/adapters/SimulateFileAudioStreamAdapter.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SimulateFileAudioStreamAdapter.d.ts","sourceRoot":"","sources":["../../../../src/realtime-transcription/adapters/SimulateFileAudioStreamAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EAChB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAiB,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE1E,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,eAAe,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAED,qBAAa,8BAA+B,YAAW,oBAAoB;IACzE,OAAO,CAAC,UAAU,CAAe;IAEjC,OAAO,CAAC,MAAM,CAAiC;IAE/C,OAAO,CAAC,OAAO,CAAqB;IAEpC,OAAO,CAAC,aAAa,CAAQ;IAE7B,OAAO,CAAC,SAAS,CAAQ;IAEzB,OAAO,CAAC,YAAY,CAAC,CAAiC;IAEtD,OAAO,CAAC,aAAa,CAAC,CAAyB;IAE/C,OAAO,CAAC,cAAc,CAAC,CAAgC;IAEvD,OAAO,CAAC,cAAc,CAAC,CAAgC;IAEvD,OAAO,CAAC,mBAAmB,CAAI;IAE/B,OAAO,CAAC,SAAS,CAAI;IAErB,OAAO,CAAC,UAAU,CAAI;IAEtB,OAAO,CAAC,aAAa,CAAQ;gBAEjB,OAAO,EAAE,mBAAmB;IAWlC,UAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoDpD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB3B,WAAW,IAAI,OAAO;IAItB,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,GAAG,IAAI;IAIvD,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAIhD,cAAc,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAIxD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B;;OAEG;IACH,OAAO,CAAC,cAAc;IAsCtB;;OAEG;IACH,OAAO,CAAC,eAAe;IA0DvB;;OAEG;IACH,aAAa;;;;;;;;;;;;IAkBb;;OAEG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAmBrC;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAiBrC;;OAEG;IACH,WAAW,IAAI,IAAI;IAmBnB;;OAEG;IACH,OAAO,CAAC,GAAG;CAGZ"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { RealtimeTranscriber } from './RealtimeTranscriber';
|
|
2
|
+
export { SliceManager } from './SliceManager';
|
|
3
|
+
export type { WavFileWriterFs } from '../utils/WavFileWriter';
|
|
4
|
+
export type { AudioStreamData, AudioStreamConfig, AudioStreamInterface, RealtimeVadEvent, RealtimeTranscribeEvent, RealtimeStatsEvent, RealtimeTranscriberDependencies, RealtimeOptions, RealtimeTranscriberCallbacks, AudioSlice, AudioSliceNoData, MemoryUsage, } from './types';
|
|
5
|
+
export { VAD_PRESETS } from './types';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/realtime-transcription/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAG3D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAG7D,YAAY,EAEV,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EAGpB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAGlB,+BAA+B,EAC/B,eAAe,EACf,4BAA4B,EAG5B,UAAU,EACV,gBAAgB,EAChB,WAAW,GAEZ,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import type { TranscribeOptions, TranscribeResult, VadOptions } from '../index';
|
|
2
|
+
import type { WavFileWriterFs } from '../utils/WavFileWriter';
|
|
3
|
+
export interface AudioStreamData {
|
|
4
|
+
data: Uint8Array;
|
|
5
|
+
sampleRate: number;
|
|
6
|
+
channels: number;
|
|
7
|
+
timestamp: number;
|
|
8
|
+
}
|
|
9
|
+
export interface AudioStreamConfig {
|
|
10
|
+
sampleRate?: number;
|
|
11
|
+
channels?: number;
|
|
12
|
+
bitsPerSample?: number;
|
|
13
|
+
bufferSize?: number;
|
|
14
|
+
audioSource?: number;
|
|
15
|
+
}
|
|
16
|
+
export interface AudioStreamInterface {
|
|
17
|
+
initialize(config: AudioStreamConfig): Promise<void>;
|
|
18
|
+
start(): Promise<void>;
|
|
19
|
+
stop(): Promise<void>;
|
|
20
|
+
isRecording(): boolean;
|
|
21
|
+
onData(callback: (data: AudioStreamData) => void): void;
|
|
22
|
+
onError(callback: (error: string) => void): void;
|
|
23
|
+
onStatusChange(callback: (isRecording: boolean) => void): void;
|
|
24
|
+
release(): Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* VAD Presets Overview:
|
|
28
|
+
*
|
|
29
|
+
* VAD Presets
|
|
30
|
+
* / | \
|
|
31
|
+
* Conservative Default Sensitive
|
|
32
|
+
* / | | \
|
|
33
|
+
* conservative very-conservative sensitive very-sensitive
|
|
34
|
+
* (0.7 thresh) (0.8 thresh) (0.3 thresh) (0.2 thresh)
|
|
35
|
+
* 500ms min 750ms min 100ms min 100ms min
|
|
36
|
+
* Clear speech Very clear Quiet env Catches whispers
|
|
37
|
+
*
|
|
38
|
+
* Specialized Presets
|
|
39
|
+
* / | \
|
|
40
|
+
* continuous meeting noisy
|
|
41
|
+
* (60s max) (45s max) (0.75 thresh)
|
|
42
|
+
* Lectures Multi-spk Strict for noise
|
|
43
|
+
*
|
|
44
|
+
* Key Parameters:
|
|
45
|
+
* - threshold: 0.0-1.0 (lower = more sensitive)
|
|
46
|
+
* - minSpeechDurationMs: Min duration to consider speech
|
|
47
|
+
* - minSilenceDurationMs: Min silence before ending speech
|
|
48
|
+
* - maxSpeechDurationS: Max continuous speech duration
|
|
49
|
+
* - speechPadMs: Padding around detected speech
|
|
50
|
+
* - samplesOverlap: Analysis window overlap (0.0-1.0)
|
|
51
|
+
*/
|
|
52
|
+
export declare const VAD_PRESETS: {
|
|
53
|
+
default: {
|
|
54
|
+
threshold: number;
|
|
55
|
+
minSpeechDurationMs: number;
|
|
56
|
+
minSilenceDurationMs: number;
|
|
57
|
+
maxSpeechDurationS: number;
|
|
58
|
+
speechPadMs: number;
|
|
59
|
+
samplesOverlap: number;
|
|
60
|
+
};
|
|
61
|
+
sensitive: {
|
|
62
|
+
threshold: number;
|
|
63
|
+
minSpeechDurationMs: number;
|
|
64
|
+
minSilenceDurationMs: number;
|
|
65
|
+
maxSpeechDurationS: number;
|
|
66
|
+
speechPadMs: number;
|
|
67
|
+
samplesOverlap: number;
|
|
68
|
+
};
|
|
69
|
+
'very-sensitive': {
|
|
70
|
+
threshold: number;
|
|
71
|
+
minSpeechDurationMs: number;
|
|
72
|
+
minSilenceDurationMs: number;
|
|
73
|
+
maxSpeechDurationS: number;
|
|
74
|
+
speechPadMs: number;
|
|
75
|
+
samplesOverlap: number;
|
|
76
|
+
};
|
|
77
|
+
conservative: {
|
|
78
|
+
threshold: number;
|
|
79
|
+
minSpeechDurationMs: number;
|
|
80
|
+
minSilenceDurationMs: number;
|
|
81
|
+
maxSpeechDurationS: number;
|
|
82
|
+
speechPadMs: number;
|
|
83
|
+
samplesOverlap: number;
|
|
84
|
+
};
|
|
85
|
+
'very-conservative': {
|
|
86
|
+
threshold: number;
|
|
87
|
+
minSpeechDurationMs: number;
|
|
88
|
+
minSilenceDurationMs: number;
|
|
89
|
+
maxSpeechDurationS: number;
|
|
90
|
+
speechPadMs: number;
|
|
91
|
+
samplesOverlap: number;
|
|
92
|
+
};
|
|
93
|
+
continuous: {
|
|
94
|
+
threshold: number;
|
|
95
|
+
minSpeechDurationMs: number;
|
|
96
|
+
minSilenceDurationMs: number;
|
|
97
|
+
maxSpeechDurationS: number;
|
|
98
|
+
speechPadMs: number;
|
|
99
|
+
samplesOverlap: number;
|
|
100
|
+
};
|
|
101
|
+
meeting: {
|
|
102
|
+
threshold: number;
|
|
103
|
+
minSpeechDurationMs: number;
|
|
104
|
+
minSilenceDurationMs: number;
|
|
105
|
+
maxSpeechDurationS: number;
|
|
106
|
+
speechPadMs: number;
|
|
107
|
+
samplesOverlap: number;
|
|
108
|
+
};
|
|
109
|
+
noisy: {
|
|
110
|
+
threshold: number;
|
|
111
|
+
minSpeechDurationMs: number;
|
|
112
|
+
minSilenceDurationMs: number;
|
|
113
|
+
maxSpeechDurationS: number;
|
|
114
|
+
speechPadMs: number;
|
|
115
|
+
samplesOverlap: number;
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
export interface RealtimeVadEvent {
|
|
119
|
+
type: 'speech_start' | 'speech_end' | 'speech_continue' | 'silence';
|
|
120
|
+
timestamp: number;
|
|
121
|
+
lastSpeechDetectedTime: number;
|
|
122
|
+
confidence: number;
|
|
123
|
+
duration: number;
|
|
124
|
+
sliceIndex: number;
|
|
125
|
+
analysis?: {
|
|
126
|
+
averageAmplitude: number;
|
|
127
|
+
peakAmplitude: number;
|
|
128
|
+
spectralCentroid?: number;
|
|
129
|
+
zeroCrossingRate?: number;
|
|
130
|
+
};
|
|
131
|
+
currentThreshold?: number;
|
|
132
|
+
environmentNoise?: number;
|
|
133
|
+
}
|
|
134
|
+
export interface RealtimeTranscribeEvent {
|
|
135
|
+
type: 'start' | 'transcribe' | 'end' | 'error';
|
|
136
|
+
sliceIndex: number;
|
|
137
|
+
data?: TranscribeResult;
|
|
138
|
+
isCapturing: boolean;
|
|
139
|
+
processTime: number;
|
|
140
|
+
recordingTime: number;
|
|
141
|
+
memoryUsage?: {
|
|
142
|
+
slicesInMemory: number;
|
|
143
|
+
totalSamples: number;
|
|
144
|
+
estimatedMB: number;
|
|
145
|
+
};
|
|
146
|
+
vadEvent?: RealtimeVadEvent;
|
|
147
|
+
}
|
|
148
|
+
export interface RealtimeOptions {
|
|
149
|
+
audioSliceSec?: number;
|
|
150
|
+
audioMinSec?: number;
|
|
151
|
+
maxSlicesInMemory?: number;
|
|
152
|
+
vadOptions?: VadOptions;
|
|
153
|
+
vadPreset?: keyof typeof VAD_PRESETS;
|
|
154
|
+
autoSliceOnSpeechEnd?: boolean;
|
|
155
|
+
autoSliceThreshold?: number;
|
|
156
|
+
transcribeOptions?: TranscribeOptions;
|
|
157
|
+
initialPrompt?: string;
|
|
158
|
+
promptPreviousSlices?: boolean;
|
|
159
|
+
audioOutputPath?: string;
|
|
160
|
+
audioStreamConfig?: AudioStreamConfig;
|
|
161
|
+
logger?: (message: string) => void;
|
|
162
|
+
}
|
|
163
|
+
export interface AudioSlice {
|
|
164
|
+
index: number;
|
|
165
|
+
data: Uint8Array;
|
|
166
|
+
sampleCount: number;
|
|
167
|
+
startTime: number;
|
|
168
|
+
endTime: number;
|
|
169
|
+
isProcessed: boolean;
|
|
170
|
+
isReleased: boolean;
|
|
171
|
+
}
|
|
172
|
+
export interface AudioSliceNoData extends Omit<AudioSlice, 'data'> {
|
|
173
|
+
}
|
|
174
|
+
export interface MemoryUsage {
|
|
175
|
+
slicesInMemory: number;
|
|
176
|
+
totalSamples: number;
|
|
177
|
+
estimatedMB: number;
|
|
178
|
+
}
|
|
179
|
+
export interface RealtimeStatsEvent {
|
|
180
|
+
timestamp: number;
|
|
181
|
+
type: 'slice_processed' | 'vad_change' | 'memory_change' | 'status_change';
|
|
182
|
+
data: {
|
|
183
|
+
isActive: boolean;
|
|
184
|
+
isTranscribing: boolean;
|
|
185
|
+
vadEnabled: boolean;
|
|
186
|
+
audioStats: any;
|
|
187
|
+
vadStats: any;
|
|
188
|
+
sliceStats: any;
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
export interface RealtimeTranscriberCallbacks {
|
|
192
|
+
onTranscribe?: (event: RealtimeTranscribeEvent) => void;
|
|
193
|
+
onVad?: (event: RealtimeVadEvent) => void;
|
|
194
|
+
onError?: (error: string) => void;
|
|
195
|
+
onStatusChange?: (isActive: boolean) => void;
|
|
196
|
+
onStatsUpdate?: (event: RealtimeStatsEvent) => void;
|
|
197
|
+
}
|
|
198
|
+
export type WhisperContextLike = {
|
|
199
|
+
transcribeData: (data: SharedArrayBuffer, options: TranscribeOptions) => {
|
|
200
|
+
stop: () => Promise<void>;
|
|
201
|
+
promise: Promise<TranscribeResult>;
|
|
202
|
+
};
|
|
203
|
+
};
|
|
204
|
+
export type WhisperVadContextLike = {
|
|
205
|
+
detectSpeechData: (data: SharedArrayBuffer, options: VadOptions) => Promise<Array<{
|
|
206
|
+
t0: number;
|
|
207
|
+
t1: number;
|
|
208
|
+
}>>;
|
|
209
|
+
};
|
|
210
|
+
export interface RealtimeTranscriberDependencies {
|
|
211
|
+
whisperContext: WhisperContextLike;
|
|
212
|
+
vadContext?: WhisperVadContextLike;
|
|
213
|
+
audioStream: AudioStreamInterface;
|
|
214
|
+
fs?: WavFileWriterFs;
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/realtime-transcription/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export interface WavFileReaderFs {
|
|
2
|
+
readFile: (filePath: string, encoding: string) => Promise<string>;
|
|
3
|
+
exists: (filePath: string) => Promise<boolean>;
|
|
4
|
+
unlink: (filePath: string) => Promise<void>;
|
|
5
|
+
}
|
|
6
|
+
export interface WavFileHeader {
|
|
7
|
+
sampleRate: number;
|
|
8
|
+
channels: number;
|
|
9
|
+
bitsPerSample: number;
|
|
10
|
+
dataSize: number;
|
|
11
|
+
duration: number;
|
|
12
|
+
}
|
|
13
|
+
export declare class WavFileReader {
|
|
14
|
+
private filePath;
|
|
15
|
+
private header;
|
|
16
|
+
private audioData;
|
|
17
|
+
private fs;
|
|
18
|
+
constructor(fs: {
|
|
19
|
+
exists: (filePath: string) => Promise<boolean>;
|
|
20
|
+
readFile: (filePath: string, encoding: string) => Promise<string>;
|
|
21
|
+
}, filePath: string);
|
|
22
|
+
/**
|
|
23
|
+
* Read and parse the WAV file
|
|
24
|
+
*/
|
|
25
|
+
initialize(): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Parse WAV file header
|
|
28
|
+
*/
|
|
29
|
+
private static parseWavHeader;
|
|
30
|
+
/**
|
|
31
|
+
* Get audio data slice
|
|
32
|
+
*/
|
|
33
|
+
getAudioSlice(startByte: number, lengthBytes: number): Uint8Array | null;
|
|
34
|
+
getAudioData(): Uint8Array | null;
|
|
35
|
+
/**
|
|
36
|
+
* Get WAV file header information
|
|
37
|
+
*/
|
|
38
|
+
getHeader(): WavFileHeader | null;
|
|
39
|
+
/**
|
|
40
|
+
* Get total audio data size
|
|
41
|
+
*/
|
|
42
|
+
getTotalDataSize(): number;
|
|
43
|
+
/**
|
|
44
|
+
* Convert byte position to time in seconds
|
|
45
|
+
*/
|
|
46
|
+
byteToTime(bytePosition: number): number;
|
|
47
|
+
/**
|
|
48
|
+
* Convert time in seconds to byte position
|
|
49
|
+
*/
|
|
50
|
+
timeToByte(timeSeconds: number): number;
|
|
51
|
+
/**
|
|
52
|
+
* Get file statistics
|
|
53
|
+
*/
|
|
54
|
+
getStatistics(): {
|
|
55
|
+
filePath: string;
|
|
56
|
+
header: WavFileHeader | null;
|
|
57
|
+
totalDataSize: number;
|
|
58
|
+
isInitialized: boolean;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=WavFileReader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WavFileReader.d.ts","sourceRoot":"","sources":["../../../src/utils/WavFileReader.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACjE,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9C,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5C;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAQ;IAExB,OAAO,CAAC,MAAM,CAA6B;IAE3C,OAAO,CAAC,SAAS,CAA0B;IAE3C,OAAO,CAAC,EAAE,CAGT;gBAEW,EAAE,EAAE;QACd,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;QAC9C,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;KAClE,EAAE,QAAQ,EAAE,MAAM;IAKnB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IA0D7B;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAexE,YAAY,IAAI,UAAU,GAAG,IAAI;IAIjC;;OAEG;IACH,SAAS,IAAI,aAAa,GAAG,IAAI;IAIjC;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAUxC;;OAEG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAUvC;;OAEG;IACH,aAAa;;;;;;CAQd"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export interface WavFileConfig {
|
|
2
|
+
sampleRate: number;
|
|
3
|
+
channels: number;
|
|
4
|
+
bitsPerSample: number;
|
|
5
|
+
}
|
|
6
|
+
export interface WavFileWriterFs {
|
|
7
|
+
writeFile: (filePath: string, data: string, encoding: string) => Promise<void>;
|
|
8
|
+
appendFile: (filePath: string, data: string, encoding: string) => Promise<void>;
|
|
9
|
+
readFile: (filePath: string, encoding: string) => Promise<string>;
|
|
10
|
+
exists: (filePath: string) => Promise<boolean>;
|
|
11
|
+
unlink: (filePath: string) => Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
export declare class WavFileWriter {
|
|
14
|
+
private fs;
|
|
15
|
+
private filePath;
|
|
16
|
+
private config;
|
|
17
|
+
private dataSize;
|
|
18
|
+
private isWriting;
|
|
19
|
+
private writeQueue;
|
|
20
|
+
constructor(fs: WavFileWriterFs, filePath: string, config: WavFileConfig);
|
|
21
|
+
/**
|
|
22
|
+
* Initialize the WAV file with headers
|
|
23
|
+
*/
|
|
24
|
+
initialize(): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Append PCM audio data to the WAV file
|
|
27
|
+
*/
|
|
28
|
+
appendAudioData(audioData: Uint8Array): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Process the write queue to avoid blocking
|
|
31
|
+
*/
|
|
32
|
+
private processWriteQueue;
|
|
33
|
+
/**
|
|
34
|
+
* Finalize the WAV file by updating the header with correct sizes
|
|
35
|
+
*/
|
|
36
|
+
finalize(): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Create WAV file header
|
|
39
|
+
*/
|
|
40
|
+
private createWavHeader;
|
|
41
|
+
/**
|
|
42
|
+
* Cancel writing and cleanup
|
|
43
|
+
*/
|
|
44
|
+
cancel(): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Get current file statistics
|
|
47
|
+
*/
|
|
48
|
+
getStatistics(): {
|
|
49
|
+
filePath: string;
|
|
50
|
+
dataSize: number;
|
|
51
|
+
durationSec: number;
|
|
52
|
+
isWriting: boolean;
|
|
53
|
+
queuedChunks: number;
|
|
54
|
+
estimatedFileSizeMB: number;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=WavFileWriter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WavFileWriter.d.ts","sourceRoot":"","sources":["../../../src/utils/WavFileWriter.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9E,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/E,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACjE,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9C,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5C;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAiB;IAE3B,OAAO,CAAC,QAAQ,CAAQ;IAExB,OAAO,CAAC,MAAM,CAAe;IAE7B,OAAO,CAAC,QAAQ,CAAI;IAEpB,OAAO,CAAC,SAAS,CAAQ;IAEzB,OAAO,CAAC,UAAU,CAAmB;gBAEzB,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa;IAMxE;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBjC;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB3D;;OAEG;YACW,iBAAiB;IA+B/B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IA+B/B;;OAEG;IACH,OAAO,CAAC,eAAe;IA0BvB;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAe7B;;OAEG;IACH,aAAa;;;;;;;;CAYd"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert base64 string to Uint8Array
|
|
3
|
+
*/
|
|
4
|
+
export declare function base64ToUint8Array(base64: string): Uint8Array;
|
|
5
|
+
/**
|
|
6
|
+
* Convert Uint8Array to base64 string
|
|
7
|
+
*/
|
|
8
|
+
export declare function uint8ArrayToBase64(buffer: Uint8Array): string;
|
|
9
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/utils/common.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAG7D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAG7D"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "whisper.rn",
|
|
3
|
-
"version": "0.5.0-rc.
|
|
3
|
+
"version": "0.5.0-rc.2",
|
|
4
4
|
"description": "React Native binding of whisper.cpp",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
7
7
|
"types": "lib/typescript/index.d.ts",
|
|
8
8
|
"react-native": "src/index",
|
|
9
9
|
"source": "src/index",
|
|
10
|
+
"exports": {
|
|
11
|
+
"./*": {
|
|
12
|
+
"import": "./lib/module/*",
|
|
13
|
+
"require": "./lib/commonjs/*",
|
|
14
|
+
"types": "./lib/typescript/*",
|
|
15
|
+
"react-native": "src/*"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
10
18
|
"files": [
|
|
11
19
|
"src",
|
|
12
20
|
"lib",
|
|
@@ -29,7 +37,7 @@
|
|
|
29
37
|
],
|
|
30
38
|
"scripts": {
|
|
31
39
|
"bootstrap": "./scripts/bootstrap.sh",
|
|
32
|
-
"docgen": "typedoc src/index.ts --plugin typedoc-plugin-markdown --excludePrivate --readme none --out docs/API",
|
|
40
|
+
"docgen": "typedoc src/index.ts src/realtime-transcription/index.ts --plugin typedoc-plugin-markdown --excludePrivate --readme none --out docs/API",
|
|
33
41
|
"lint": "eslint \"**/*.{js,ts,tsx}\"",
|
|
34
42
|
"typecheck": "tsc --noEmit",
|
|
35
43
|
"build": "bob build",
|
|
@@ -62,6 +70,7 @@
|
|
|
62
70
|
"@commitlint/config-conventional": "^17.0.2",
|
|
63
71
|
"@evilmartians/lefthook": "^1.2.2",
|
|
64
72
|
"@fugood/eslint-config-react": "^0.5.0",
|
|
73
|
+
"@fugood/react-native-audio-pcm-stream": "^1.1.4",
|
|
65
74
|
"@react-native/babel-preset": "0.76.9",
|
|
66
75
|
"@react-native/metro-config": "0.76.9",
|
|
67
76
|
"@release-it/conventional-changelog": "^5.0.0",
|
|
@@ -83,13 +92,13 @@
|
|
|
83
92
|
"typedoc-plugin-markdown": "^3.15.3",
|
|
84
93
|
"typescript": "^4.9.5"
|
|
85
94
|
},
|
|
86
|
-
"resolutions": {
|
|
87
|
-
"@types/react": "17.0.21"
|
|
88
|
-
},
|
|
89
95
|
"peerDependencies": {
|
|
90
96
|
"react": "*",
|
|
91
97
|
"react-native": "*"
|
|
92
98
|
},
|
|
99
|
+
"resolutions": {
|
|
100
|
+
"@types/react": "17.0.21"
|
|
101
|
+
},
|
|
93
102
|
"engines": {
|
|
94
103
|
"node": ">=18"
|
|
95
104
|
},
|
|
@@ -146,5 +155,8 @@
|
|
|
146
155
|
"type": "all",
|
|
147
156
|
"jsSrcsDir": "./src/"
|
|
148
157
|
},
|
|
149
|
-
"packageManager": "yarn@1.22.22"
|
|
158
|
+
"packageManager": "yarn@1.22.22",
|
|
159
|
+
"dependencies": {
|
|
160
|
+
"safe-buffer": "^5.2.1"
|
|
161
|
+
}
|
|
150
162
|
}
|
package/src/AudioSessionIos.ts
CHANGED
|
@@ -42,10 +42,11 @@ export enum AudioSessionModeIos {
|
|
|
42
42
|
|
|
43
43
|
const checkPlatform = () => {
|
|
44
44
|
if (Platform.OS !== 'ios') throw new Error('Only supported on iOS')
|
|
45
|
+
console.warn('AudioSessionIos is deprecated. To use whisper.rn for realtime transcription, use the new RealtimeTranscriber instead.')
|
|
45
46
|
}
|
|
46
47
|
|
|
47
48
|
/**
|
|
48
|
-
* AudioSession Utility, iOS only.
|
|
49
|
+
* [Deprecated] AudioSession Utility, iOS only.
|
|
49
50
|
*/
|
|
50
51
|
export default {
|
|
51
52
|
Category: AudioSessionCategoryIos,
|
|
@@ -63,7 +64,7 @@ export default {
|
|
|
63
64
|
options: result.options?.map((option: string) => (option.replace('AVAudioSessionCategoryOption', '') as AudioSessionCategoryOptionIos)),
|
|
64
65
|
}
|
|
65
66
|
},
|
|
66
|
-
|
|
67
|
+
|
|
67
68
|
getCurrentMode: async (): Promise<AudioSessionModeIos> => {
|
|
68
69
|
checkPlatform()
|
|
69
70
|
const mode = await RNWhisper.getAudioSessionCurrentMode()
|
package/src/index.ts
CHANGED
|
@@ -444,6 +444,10 @@ export class WhisperContext {
|
|
|
444
444
|
/** Subscribe to realtime transcribe events */
|
|
445
445
|
subscribe: (callback: (event: TranscribeRealtimeEvent) => void) => void
|
|
446
446
|
}> {
|
|
447
|
+
console.warn(
|
|
448
|
+
'`transcribeRealtime` is deprecated, use `RealtimeTranscriber` instead',
|
|
449
|
+
)
|
|
450
|
+
|
|
447
451
|
let lastTranscribePayload: TranscribeRealtimeNativePayload
|
|
448
452
|
|
|
449
453
|
const slices: TranscribeRealtimeNativePayload[] = []
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import { NativeModules, DeviceEventEmitter } from 'react-native'
|
|
2
2
|
|
|
3
3
|
if (!NativeModules.RNWhisper) {
|
|
4
4
|
NativeModules.RNWhisper = {
|
|
@@ -97,4 +97,4 @@ if (!NativeModules.RNWhisper) {
|
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
module.exports = jest.requireActual('whisper.rn')
|
|
100
|
+
module.exports = jest.requireActual('whisper.rn/index')
|