Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Call Analytics Platform

Self-hosted call analytics: Whisper ASR → LLM cleanup & classification → local QA artifacts.

License: MIT Python 3.12 Platform: Linux CI Release Docs

Call Analytics web UI — upload and recent analyses

Process phone recordings on infrastructure you control. No mandatory cloud SaaS. Optional Telegram and Google Sheets integrations.

Deep reference (CLI, config, troubleshooting): README_EN.md · Русский обзор: PROJECT_OVERVIEW.md


Who it's for

  • QA and operations teams that review phone calls and need structured feedback, not just raw transcripts.
  • Privacy-first organizations that want speech analytics on-prem or inside their own network boundary.
  • Engineers running a pilot who need a working web UI, HTTP API, and CLI over the same pipeline.

Why local-first

  • Audio and transcripts stay on your disks by default.
  • Fits teams that care about data residency (GDPR-style processes, FZ-152-aware deployments) without claiming legal certification out of the box.
  • Open core under MIT — extend, fork, or self-host without vendor lock-in.

Important: this is a demonstration configuration

This repository ships a working reference stack tuned for a specific class of telephony recordings — not a universal “transcribe any audio on Earth equally well” product.

Results depend heavily on:

  • language and locale (defaults lean Russian telephony),
  • audio quality (sample rate, codecs, noise, channel layout),
  • call type and domain vocabulary (sales, support, booking scripts),
  • ASR model choice and size (Whisper family presets vs hardware),
  • LLM prompts, QA criteria, and templates for your business.

Changing language, audio profile, or industry usually means retuning ASR + prompts + evaluation templates, not only flipping a config flag.

If your use case differs (another language, much worse/better recordings, different vertical) and you want guidance on how to adapt the stack — reach out. Contact and paid/customization paths: FUNDING.md · Email iamfuyoh@gmail.com · Telegram @ScanovichAI.


Quick start

Evaluating fit first? See docs/EVALUATION_GUIDE.md.

1. Install

git clone https://github.com/FUYOH666/Scanovich.ai-audio-call.git call-analytics
cd call-analytics
uv sync
cp config.example.yaml config.yaml
cp branches.example.yaml branches.yaml

2. Configure ASR + LLM

Minimal config.yaml:

asr:
  model_preset: "auto"
  device: "cuda"   # or "cpu" for small tests

vllm:
  enabled: true
  base_url: "http://localhost:8000/v1"   # local or remote OpenAI-compatible server

Point vllm.base_url (and quality_analysis.base_url if enabled) at your LLM gateway. Keep real hostnames in local config or env — not in git.

3. Run the web UI

uv run python main.py web

Open http://127.0.0.1:8080 — upload a file, inspect results, browse saved analyses.

4. Minimal mode (no Telegram / Google Sheets)

analytics:
  telegram:
    enabled: false

google_sheets:
  enabled: false

Core flow still works: ASR → LLM → artifacts in output/ and metadata/.

5. Optional: protected pilot

export WEB__REQUIRE_API_KEY=true
export WEB__API_KEY=replace-with-a-strong-key
uv run python main.py web --host 0.0.0.0 --port 8080

What you get

Output Path Purpose
Clean transcript output/<id>.txt Masked, LLM-cleaned text
Metadata metadata/<id>.json Classification, ASR metrics
Quality JSON quality_analysis/individual/<id>.json Optional QA scoring

HTTP API: GET /healthz · POST /analyze · GET /analyses · GET /analyses/{id} · / (browser UI)

Daemon mode: uv run python main.py run watches input/ for batch / VoIP workflows.

Analysis detail view


Architecture

flowchart LR
  voip[VoIP_or_files] --> input[input_folder]
  input --> daemon[daemon_or_web]
  daemon --> pipeline[shared_pipeline]
  pipeline --> asr[Whisper_ASR]
  asr --> llm[OpenAI_compatible_LLM]
  llm --> qa[Quality_scores]
  qa --> artifacts[output_metadata_quality]
  artifacts --> ui[browser_UI_and_API]
Loading

Implementation map: src/pipeline_service.py · src/web/app.py · docs/ARCHITECTURE.md


Documentation

I want to… Start here
Evaluate before deploying docs/EVALUATION_GUIDE.mddocs/examples/
Deploy for demo or production DEPLOYMENT_GUIDE.mddocs/DEPLOYMENT_PROFILES.md
Understand the codebase docs/ARCHITECTURE.mdCONTRIBUTING.md
Get answers quickly docs/FAQ.md

Full index: docs/README.md · Roadmap: docs/ROADMAP.md · Changes: CHANGELOG.md


Community & trust

Commercial support

Need pilot setup, on-prem deployment, another language / audio profile, or custom QA criteria? See FUNDING.md and scanovich.ai.

About

Local-first call analytics platform with shared pipeline, pilot-ready API/UI, saved-result history, and on-prem deployment paths

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages