Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎙️ Call Analyser

An elegant, client-side audio intelligence platform designed to analyze and visualize call recordings. It processes audio directly in the browser using the Web Audio API for total privacy and zero server overhead.


🚀 Features

  • 🔒 100% Client-Side Processing: All decoding, analysis, and rendering happen locally in the browser. Your audio never leaves your machine.
  • 📅 Interactive Call Timeline: Automatically infers events such as Ringing/Dialing, Call Pickup, Active Talk, Silence/Pauses, On Hold, and Hang Up.
  • ⚠️ Automated Anomaly Detection:
    • Silence Gaps: Spots extended periods of silence or call holds.
    • Noise Bursts: Highlights transient volume spikes against rolling baselines.
    • Clipping: Flags digital audio saturation (amplitude peak $\ge$ 97%).
    • Echo Detection (Stereo): Employs normalized cross-correlation between left (caller) and right (receiver) channels to detect speaker bleed/echo lag.
  • 📊 Aggregate Analytics & Composition: Displays Total Duration, Talk Time, Silence Time, estimated Signal-to-Noise Ratio (SNR in dB), and channel composition stats.
  • 🔍 Detailed Waveform Inspector: Smooth interactive canvas showing separate tracks for Stereo calls with seek-to-click, speed control (0.5x to 2x), volume adjustment, and synchronized playhead tracking.

🛠️ Tech Stack

  • HTML5 & Canvas: Structure and high-performance waveform rendering.
  • Vanilla CSS: Premium modern dark-theme design with responsive layout grid and custom components.
  • Vanilla JavaScript: Pure JS audio analysis engine using the native Web Audio API (AudioContext, decodeAudioData).

🚦 Getting Started

Since Call Analyser is built entirely on standard frontend technologies, there are no compilers or dependencies to install.

Option 1: Double-Click

Simply double-click the index.html file to open the app directly in your web browser. (Note: Some browsers may restrict loading certain local files due to CORS policies).

Option 2: Run a Local Server (Recommended)

Use any simple static server of your choice:

# Using Node.js npx:
npx serve .

# Or using Python:
python -m http.server 8000

Then, navigate to http://localhost:3000 (or http://localhost:8000) in your browser.


⚙️ How it Works

  1. Decoding: The file is loaded via File.arrayBuffer() and decoded into an AudioBuffer using AudioContext.decodeAudioData().
  2. Frame Analysis: The buffer is divided into frames of 1024 samples. For each frame, Root Mean Square (RMS) energy and Peak amplitude are computed.
  3. Rolling Averages: A moving average of RMS energy is maintained to dynamically identify noise bursts.
  4. Normalized Cross-Correlation: For stereo tracks, the engine calculates sliding cross-correlation between left and right channels to pinpoint acoustic echoes and signal bleed.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages