A web-based audio recording and playback application that demonstrates real-time audio streaming and processing capabilities.
This project implements a web-based audio recording system that captures audio from the user's microphone, processes it in real-time, and allows for immediate playback. It showcases various web audio APIs and demonstrates how to handle audio streaming and transformation.
- Real-time audio recording from microphone
- Audio data transformation and processing
- Immediate playback of recorded audio
- Buffer management for continuous audio streaming
- Base64 encoding/decoding of audio data
index.html- Main application entry pointRecoder.js- Handles audio recording functionalityVoice.js- Manages audio playback and bufferingPipe.js- Handles data transformation (Base64 encoding/decoding)
The Recoder class manages audio recording using the MediaRecorder API. It:
- Captures audio from the user's microphone
- Processes audio chunks in real-time
- Provides start/stop functionality
- Handles data callbacks for processing
The AudioPlayer class manages audio playback:
- Implements a buffer queue system
- Handles audio decoding and playback
- Manages audio context and source nodes
- Provides smooth playback of audio fragments
The Pipe class handles data transformation:
- Converts audio data to Base64 format
- Reverses Base64 encoding back to audio data
- Ensures data integrity during transformation
- Open
index.htmlin a modern web browser - Grant microphone permissions when prompted
- The application will automatically:
- Start recording audio
- Process the audio data
- Play back the recorded audio after 5 seconds
- Uses Web Audio API for audio processing
- Implements MediaRecorder API for audio capture
- Utilizes MediaSource Extensions for audio playback
- Supports WebM audio format with Opus codec
This application requires a modern web browser with support for:
- MediaRecorder API
- Web Audio API
- MediaSource Extensions
- Base64 encoding/decoding
- Requires user permission for microphone access
- Processes audio data locally in the browser
- No data is sent to external servers
This project is open source and available for use under the MIT License.