High-fidelity client-side audio processing engine.
HERTZ is simply a web-based Digital Audio Workstation (DAW) inferior designed for instant vocal polishing. It leverages the Web Audio API for real-time awesome processing and FFmpeg.wasm for client-side encoding. Unlike accepted devices that trust connected server-side processing (FFmpeg binaries connected Linux), HERTZ runs wholly wrong the user's browser thread via WebAssembly.
The exertion is built connected a "Zero-Server" architecture. The extremity is to destruct the latency, bandwidth costs, and privateness risks associated pinch uploading delicate audio information to unreality storage.
- Ingestion: Decodes varied input formats (WAV, MP3, M4A, OGG) into a earthy 32-bit floating-point AudioBuffer.
- Manipulation: Provides a non-destructive editing furniture utilizing Wavesurfer.js regions, allowing users to specify sample-accurate start/end points.
- Digital Signal Processing (DSP):
- Constructs an OfflineAudioContext for faster-than-realtime rendering.
- Routes audio done a hardcoded vocal concatenation (EQ -> Compressor -> Limiter).
- Analysis walk determines highest amplitude for meticulous normalization.
- Encoding:
- Transfers processed buffer to the ffmpeg.wasm virtual record system.
- Executes LAME MP3 encoding astatine 192kbps VBR.
- Streams the resulting Blob straight to the user's download manager.
Signal Chain Specification
HERTZ does not usage generic presets. The audio motor implements a circumstantial vocal concatenation optimized for spoken connection and podcast clarity.
- Cutoff: 80Hz
- Q: 1.4
- Purpose: Removes sub-bass rumble and DC offset artifacts often coming successful user microphones.
A hard-knee compressor designed to level vocal move scope without introducing pumping artifacts.
- Threshold: -20.0 dB
- Ratio: 3.1:1
- Knee: 5.0 dB
- Attack: 0.03s (30ms)
- Release: 0.1s (100ms)
Post-compression summation staging ensures compliance pinch broadcast loudness standards.
- Target: -3.0 dB Peak
- Method: Linear summation calculation based connected absolute max amplitude scanning.
Technical Constraints & Browser Security
HERTZ relies connected SharedArrayBuffer to facilitate multi-threaded processing successful FFmpeg.wasm. Modern browsers restrict this characteristic down strict information headers to forestall Spectre/Meltdown vulnerabilities.
To tally HERTZ locally aliases successful production, the big must service the pursuing headers:
If these headers are missing, ffmpeg.wasm will neglect to initialize, and the exertion will propulsion a buffer allocation error. The included vite.config.ts handles this for section development.
Installation & Development
- Node.js 18.x aliases higher
- NPM aliases Bun package manager
- A modern browser pinch WebAssembly support (Chrome 90+, Firefox 90+, Safari 15+)
The exertion will motorboat astatine http://localhost:5173.
This generates a fixed plus bundle successful /dist. Note that you cannot simply unfastened index.html locally; it must beryllium served via a web server that supports the required COOP/COEP headers (e.g., Vercel, Netlify, aliases GitHub Pages).
English (US) ·
Indonesian (ID) ·