Spaces:
Sleeping
Sleeping
File size: 1,448 Bytes
88cc829 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
"use client";
import { useState, useCallback } from 'react';
import constants from '../constants';
const useAudioManager = () => {
const [progress, setProgress] = useState<number | undefined>(undefined);
const [audioData, setAudioData] = useState<{
buffer: AudioBuffer;
url: string;
source: any;
mimeType: string;
} | undefined>(undefined);
// Reset the audio data
const resetAudio = useCallback(() => {
setAudioData(undefined);
}, []);
// Set audio from a Blob (e.g., from recording)
const setAudioFromRecording = useCallback(async (data: Blob) => {
resetAudio();
setProgress(0);
const blobUrl = URL.createObjectURL(data);
const audioCTX = new AudioContext({sampleRate: constants.SAMPLING_RATE, });
const arrayBuffer = await data.arrayBuffer();
const decoded = await audioCTX.decodeAudioData(arrayBuffer);
setProgress(undefined);
setAudioData({
buffer: decoded,
url: blobUrl,
source: "RECORDING",
mimeType: data.type,
});
}, [resetAudio]);
// Other functionalities (e.g., setAudioFromDownload, downloadAudioFromUrl)
// can be added similarly based on your requirements
return {
audioData,
progress,
setAudioFromRecording,
// Export other functions as needed
};
};
export default useAudioManager;
|