silence-aware-recorder
Version:
Audio control with silence detection.
48 lines (46 loc) • 1.7 kB
TypeScript
type OnVolumeChange = (volume: number) => void;
type OnDataAvailable = (data: Blob) => void | undefined;
interface SilenceAwareRecorderOptions {
deviceId?: string;
minDecibels?: number;
onDataAvailable?: OnDataAvailable;
onVolumeChange?: OnVolumeChange;
setDeviceId?: (deviceId: string) => void;
silenceDetectionEnabled?: boolean;
silenceDuration?: number;
silentThreshold?: number;
stopRecorderOnSilence?: boolean;
timeSlice?: number;
}
declare class SilenceAwareRecorder {
private readonly silenceDetectionEnabled;
private readonly timeSlice;
private audioContext;
private mediaStreamSource;
private analyser;
private mediaRecorder;
private silenceTimeout;
private readonly silenceThreshold;
private readonly silenceDuration;
private readonly minDecibels;
private readonly onVolumeChange?;
private readonly onDataAvailable?;
private isSilence;
private hasSoundStarted;
deviceId: string | null;
isRecording: boolean;
private readonly stopRecorderOnSilence;
private animationFrameId;
constructor({ onVolumeChange, onDataAvailable, silenceDuration, silentThreshold, minDecibels, deviceId, timeSlice, silenceDetectionEnabled, stopRecorderOnSilence, }: SilenceAwareRecorderOptions);
startRecording(): Promise<void>;
private getAudioStream;
private setupAudioContext;
private setupMediaRecorder;
getAvailableDevices(): Promise<MediaDeviceInfo[]>;
setDevice(deviceId: string): void;
stopRecording(): void;
private cleanUp;
private checkForSilence;
private computeVolume;
}
export { SilenceAwareRecorder as S, type SilenceAwareRecorderOptions as a };