miva-proctor-sdk 0.0.47 → 0.0.49
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/dist/cjs/src/core/proctor/audioDetector.d.ts +2 -1
- package/dist/cjs/src/core/proctor/audioDetector.js +134 -50
- package/dist/esm/src/core/proctor/audioDetector.d.ts +2 -1
- package/dist/esm/src/core/proctor/audioDetector.js +134 -50
- package/dist/types/src/core/proctor/audioDetector.d.ts +2 -1
- package/dist/umd/index.js +1 -1
- package/package.json +1 -1
|
@@ -3,9 +3,9 @@ const SAMPLE_POLLING_MSECS = 50;
|
|
|
3
3
|
const MIN_SIGNAL_DURATION = 3000;
|
|
4
4
|
const MIN_AVERAGE_SIGNAL_VOLUME = 0.1;
|
|
5
5
|
const PRERECORDSTART_MSECS = 600;
|
|
6
|
-
const VOLUME_SIGNAL = 0.
|
|
7
|
-
const VOLUME_SILENCE = 0.
|
|
8
|
-
const VOLUME_MUTE = 0.
|
|
6
|
+
const VOLUME_SIGNAL = 0.05;
|
|
7
|
+
const VOLUME_SILENCE = 0.005;
|
|
8
|
+
const VOLUME_MUTE = 0.002;
|
|
9
9
|
const maxSilenceItems = Math.round(MAX_INTERSPEECH_SILENCE_MSECS / SAMPLE_POLLING_MSECS);
|
|
10
10
|
const DEFAULT_PARAMETERS_CONFIGURATION = {
|
|
11
11
|
timeoutMsecs: SAMPLE_POLLING_MSECS,
|
|
@@ -27,6 +27,7 @@ export class AudioDetector {
|
|
|
27
27
|
this.recordedChunks = [];
|
|
28
28
|
this.isSEB = false;
|
|
29
29
|
this.audioDetectionInterval = null;
|
|
30
|
+
this.mediaStream = null;
|
|
30
31
|
this.events = events;
|
|
31
32
|
// Detect if running in SEB
|
|
32
33
|
this.isSEB = this.detectSEB();
|
|
@@ -38,33 +39,87 @@ export class AudioDetector {
|
|
|
38
39
|
}
|
|
39
40
|
async start() {
|
|
40
41
|
try {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
42
|
+
// Create audio context with a try-catch to handle SEB restrictions
|
|
43
|
+
try {
|
|
44
|
+
this.audioContext = new AudioContext();
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
console.error('Failed to create AudioContext:', error);
|
|
48
|
+
// Continue with fallback approach
|
|
49
|
+
}
|
|
50
|
+
// Get media stream with error handling
|
|
51
|
+
try {
|
|
52
|
+
this.mediaStream = await navigator.mediaDevices.getUserMedia({
|
|
53
|
+
audio: {
|
|
54
|
+
echoCancellation: false,
|
|
55
|
+
autoGainControl: false,
|
|
56
|
+
noiseSuppression: false,
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
console.error('Failed to get audio stream:', error);
|
|
62
|
+
// Set up a fallback that won't hang
|
|
63
|
+
this.setupSimpleAudioDetection();
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
49
66
|
// Use different approach for SEB
|
|
50
67
|
if (this.isSEB) {
|
|
51
|
-
|
|
68
|
+
console.log('Using SEB-compatible audio detection');
|
|
69
|
+
this.setupSEBAudioDetection(this.mediaStream);
|
|
52
70
|
}
|
|
53
71
|
else {
|
|
54
|
-
|
|
72
|
+
try {
|
|
73
|
+
this.setupStandardAudioDetection(this.audioContext, this.mediaStream);
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
console.error('Error in standard audio stream setup:', error);
|
|
77
|
+
this.setupSEBAudioDetection(this.mediaStream);
|
|
78
|
+
}
|
|
55
79
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
80
|
+
// Set up recorder with error handling and MIME type detection
|
|
81
|
+
try {
|
|
82
|
+
// Check for supported MIME types
|
|
83
|
+
const mimeTypes = [
|
|
84
|
+
'audio/webm',
|
|
85
|
+
'audio/webm;codecs=opus',
|
|
86
|
+
'audio/ogg;codecs=opus',
|
|
87
|
+
'audio/mp4',
|
|
88
|
+
'audio/mpeg'
|
|
89
|
+
];
|
|
90
|
+
let supportedMimeType = '';
|
|
91
|
+
// Find the first supported MIME type
|
|
92
|
+
for (const mimeType of mimeTypes) {
|
|
93
|
+
if (MediaRecorder.isTypeSupported(mimeType)) {
|
|
94
|
+
supportedMimeType = mimeType;
|
|
95
|
+
console.log(`Using supported MIME type: ${mimeType}`);
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
60
98
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
99
|
+
// If no supported MIME type found, use a simple recorder without MIME type
|
|
100
|
+
if (!supportedMimeType) {
|
|
101
|
+
console.warn('No supported MIME types found for MediaRecorder, using default');
|
|
102
|
+
this.recorder = new MediaRecorder(this.mediaStream);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
this.recorder = new MediaRecorder(this.mediaStream, { mimeType: supportedMimeType });
|
|
106
|
+
}
|
|
107
|
+
this.recorder.ondataavailable = (event) => {
|
|
108
|
+
if (event.data.size > 0) {
|
|
109
|
+
this.recordedChunks.push(event.data);
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
this.recorder.onstop = () => {
|
|
113
|
+
const blob = new Blob(this.recordedChunks, { type: 'audio/webm' });
|
|
114
|
+
this.events.onAudioBlob(blob);
|
|
115
|
+
this.recordedChunks = [];
|
|
116
|
+
};
|
|
117
|
+
this.recorder.start();
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
console.error('Failed to set up MediaRecorder:', error);
|
|
121
|
+
// Continue without recording capability
|
|
122
|
+
}
|
|
68
123
|
this.addEventListeners();
|
|
69
124
|
}
|
|
70
125
|
catch (error) {
|
|
@@ -131,9 +186,9 @@ export class AudioDetector {
|
|
|
131
186
|
let normalizedVolume = average / 255;
|
|
132
187
|
// Apply a power function to make it more sensitive to speech
|
|
133
188
|
// This makes the meter more responsive to speech while reducing sensitivity to background noise
|
|
134
|
-
normalizedVolume = Math.pow(normalizedVolume, 0.
|
|
189
|
+
normalizedVolume = Math.pow(normalizedVolume, 0.6);
|
|
135
190
|
// Apply a minimum threshold to filter out very low background noise
|
|
136
|
-
const minThreshold = 0.
|
|
191
|
+
const minThreshold = 0.005;
|
|
137
192
|
if (normalizedVolume < minThreshold) {
|
|
138
193
|
normalizedVolume = 0;
|
|
139
194
|
}
|
|
@@ -185,21 +240,52 @@ export class AudioDetector {
|
|
|
185
240
|
async stop() {
|
|
186
241
|
var _a;
|
|
187
242
|
if (this.mediaStreamSource) {
|
|
188
|
-
|
|
243
|
+
try {
|
|
244
|
+
this.mediaStreamSource.disconnect();
|
|
245
|
+
}
|
|
246
|
+
catch (error) {
|
|
247
|
+
console.error('Error disconnecting media stream source:', error);
|
|
248
|
+
}
|
|
189
249
|
}
|
|
190
|
-
if (this.meter) {
|
|
191
|
-
|
|
250
|
+
if (this.meter && typeof this.meter.disconnect === 'function') {
|
|
251
|
+
try {
|
|
252
|
+
this.meter.disconnect();
|
|
253
|
+
}
|
|
254
|
+
catch (error) {
|
|
255
|
+
console.error('Error disconnecting meter:', error);
|
|
256
|
+
}
|
|
192
257
|
}
|
|
193
258
|
if (this.audioContext) {
|
|
194
|
-
|
|
259
|
+
try {
|
|
260
|
+
await this.audioContext.close();
|
|
261
|
+
}
|
|
262
|
+
catch (error) {
|
|
263
|
+
console.error('Error closing audio context:', error);
|
|
264
|
+
}
|
|
195
265
|
}
|
|
196
266
|
if (((_a = this.recorder) === null || _a === void 0 ? void 0 : _a.state) === 'recording') {
|
|
197
|
-
|
|
267
|
+
try {
|
|
268
|
+
this.recorder.stop();
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
console.error('Error stopping recorder:', error);
|
|
272
|
+
}
|
|
198
273
|
}
|
|
199
274
|
if (this.audioDetectionInterval) {
|
|
200
275
|
clearInterval(this.audioDetectionInterval);
|
|
201
276
|
this.audioDetectionInterval = null;
|
|
202
277
|
}
|
|
278
|
+
// Stop all tracks in the audio stream
|
|
279
|
+
if (this.mediaStream) {
|
|
280
|
+
this.mediaStream.getTracks().forEach(track => {
|
|
281
|
+
try {
|
|
282
|
+
track.stop();
|
|
283
|
+
}
|
|
284
|
+
catch (error) {
|
|
285
|
+
console.error('Error stopping audio track:', error);
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
}
|
|
203
289
|
}
|
|
204
290
|
average(array) {
|
|
205
291
|
return array.reduce((a, b) => a + b) / array.length;
|
|
@@ -306,25 +392,23 @@ export class AudioDetector {
|
|
|
306
392
|
sampleThresholdsDecision(muteVolume, speakingMinVolume) {
|
|
307
393
|
const timestamp = Date.now();
|
|
308
394
|
const duration = timestamp - this.speechStartTime;
|
|
309
|
-
//
|
|
310
|
-
|
|
311
|
-
// mic is OFF/mute (volume is ~0)
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
this.mute
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
//
|
|
319
|
-
else if (this.meter.volume > speakingMinVolume)
|
|
395
|
+
// Add a small buffer to prevent rapid state changes
|
|
396
|
+
const buffer = 0.005;
|
|
397
|
+
// MUTE - mic is OFF/mute (volume is ~0)
|
|
398
|
+
if (this.meter.volume < muteVolume) {
|
|
399
|
+
// Only transition to mute if we've been below the threshold for a while
|
|
400
|
+
if (this.volumeState !== 'mute') {
|
|
401
|
+
this.mute(timestamp, duration);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
// SIGNAL - audio detection, maybe it's SPEECH
|
|
405
|
+
else if (this.meter.volume > speakingMinVolume) {
|
|
320
406
|
this.signal(timestamp, duration);
|
|
321
|
-
|
|
322
|
-
// SILENCE
|
|
323
|
-
|
|
324
|
-
//
|
|
325
|
-
//(meter.volume < config.silenceVolume )
|
|
326
|
-
else
|
|
407
|
+
}
|
|
408
|
+
// SILENCE - mic is ON. Audio level is low (background noise)
|
|
409
|
+
else {
|
|
327
410
|
this.silence(timestamp, duration);
|
|
411
|
+
}
|
|
328
412
|
}
|
|
329
413
|
prerecording(prespeechstartMsecs, timeoutMsecs) {
|
|
330
414
|
++this.prerecordingItems;
|
|
@@ -401,7 +485,7 @@ export class AudioDetector {
|
|
|
401
485
|
};
|
|
402
486
|
}
|
|
403
487
|
}
|
|
404
|
-
|
|
488
|
+
setupStandardAudioDetection(audioContext, stream) {
|
|
405
489
|
this.mediaStreamSource = audioContext.createMediaStreamSource(stream);
|
|
406
490
|
this.meter = this.createAudioMeter(audioContext);
|
|
407
491
|
this.mediaStreamSource.connect(this.meter);
|
|
@@ -468,4 +552,4 @@ export class AudioDetector {
|
|
|
468
552
|
});
|
|
469
553
|
}
|
|
470
554
|
}
|
|
471
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW9EZXRlY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb3JlL3Byb2N0b3IvYXVkaW9EZXRlY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLDZCQUE2QixHQUFHLEdBQUcsQ0FBQztBQUMxQyxNQUFNLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztBQUNoQyxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQztBQUNqQyxNQUFNLHlCQUF5QixHQUFHLEdBQUcsQ0FBQztBQUN0QyxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztBQUNqQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUM7QUFDM0IsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDO0FBQzdCLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQztBQUUzQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUNoQyw2QkFBNkIsR0FBRyxvQkFBb0IsQ0FDckQsQ0FBQztBQUVGLE1BQU0sZ0NBQWdDLEdBQUc7SUFDdkMsWUFBWSxFQUFFLG9CQUFvQjtJQUVsQyxlQUFlLEVBQUUsb0JBQW9CO0lBRXJDLGlCQUFpQixFQUFFLGFBQWE7SUFFaEMsYUFBYSxFQUFFLGNBQWM7SUFFN0IsVUFBVSxFQUFFLFdBQVc7SUFFdkIsZ0JBQWdCLEVBQUUsSUFBSTtDQUN2QixDQUFDO0FBUUYsTUFBTSxPQUFPLGFBQWE7SUFpQnhCLFlBQVksTUFBbUI7UUFoQi9CLGdCQUFXLEdBQWdCLE1BQU0sQ0FBQztRQUNsQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixpQkFBWSxHQUFXLENBQUMsQ0FBQztRQUN6QixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQUN4QixvQkFBZSxHQUFXLENBQUMsQ0FBQztRQUM1QixzQkFBaUIsR0FBVyxDQUFDLENBQUM7UUFDOUIsc0JBQWlCLEdBQVUsRUFBRSxDQUFDO1FBSzlCLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBRTVC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
|
|
555
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW9EZXRlY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb3JlL3Byb2N0b3IvYXVkaW9EZXRlY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLDZCQUE2QixHQUFHLEdBQUcsQ0FBQztBQUMxQyxNQUFNLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztBQUNoQyxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQztBQUNqQyxNQUFNLHlCQUF5QixHQUFHLEdBQUcsQ0FBQztBQUN0QyxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztBQUNqQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUM7QUFDM0IsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDO0FBQzdCLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQztBQUUxQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUNoQyw2QkFBNkIsR0FBRyxvQkFBb0IsQ0FDckQsQ0FBQztBQUVGLE1BQU0sZ0NBQWdDLEdBQUc7SUFDdkMsWUFBWSxFQUFFLG9CQUFvQjtJQUVsQyxlQUFlLEVBQUUsb0JBQW9CO0lBRXJDLGlCQUFpQixFQUFFLGFBQWE7SUFFaEMsYUFBYSxFQUFFLGNBQWM7SUFFN0IsVUFBVSxFQUFFLFdBQVc7SUFFdkIsZ0JBQWdCLEVBQUUsSUFBSTtDQUN2QixDQUFDO0FBUUYsTUFBTSxPQUFPLGFBQWE7SUFrQnhCLFlBQVksTUFBbUI7UUFqQi9CLGdCQUFXLEdBQWdCLE1BQU0sQ0FBQztRQUNsQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixpQkFBWSxHQUFXLENBQUMsQ0FBQztRQUN6QixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQUN4QixvQkFBZSxHQUFXLENBQUMsQ0FBQztRQUM1QixzQkFBaUIsR0FBVyxDQUFDLENBQUM7UUFDOUIsc0JBQWlCLEdBQVUsRUFBRSxDQUFDO1FBSzlCLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBRTVC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
|
|
@@ -20,6 +20,7 @@ export declare class AudioDetector {
|
|
|
20
20
|
events: AudioEvents;
|
|
21
21
|
isSEB: boolean;
|
|
22
22
|
audioDetectionInterval: any;
|
|
23
|
+
mediaStream: MediaStream | null;
|
|
23
24
|
constructor(events: AudioEvents);
|
|
24
25
|
private detectSEB;
|
|
25
26
|
start(): Promise<void>;
|
|
@@ -36,7 +37,7 @@ export declare class AudioDetector {
|
|
|
36
37
|
prerecording(prespeechstartMsecs: number, timeoutMsecs: number): void;
|
|
37
38
|
audioDetection(config: any): void;
|
|
38
39
|
createAudioMeter(audioContext: any, clipLevel?: any, averaging?: any, clipLag?: any): any;
|
|
39
|
-
private
|
|
40
|
+
private setupStandardAudioDetection;
|
|
40
41
|
volumeAudioProcess(event: any): void;
|
|
41
42
|
addEventListeners(): void;
|
|
42
43
|
}
|