Self-hosted call analytics: Whisper ASR → LLM cleanup & classification → local QA artifacts.
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
- 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.
- 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.
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.
Evaluating fit first? See docs/EVALUATION_GUIDE.md.
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.yamlMinimal 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 serverPoint 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.
uv run python main.py webOpen http://127.0.0.1:8080 — upload a file, inspect results, browse saved analyses.
analytics:
telegram:
enabled: false
google_sheets:
enabled: falseCore flow still works: ASR → LLM → artifacts in output/ and metadata/.
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| 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.
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]
Implementation map: src/pipeline_service.py · src/web/app.py · docs/ARCHITECTURE.md
| I want to… | Start here |
|---|---|
| Evaluate before deploying | docs/EVALUATION_GUIDE.md → docs/examples/ |
| Deploy for demo or production | DEPLOYMENT_GUIDE.md → docs/DEPLOYMENT_PROFILES.md |
| Understand the codebase | docs/ARCHITECTURE.md → CONTRIBUTING.md |
| Get answers quickly | docs/FAQ.md |
Full index: docs/README.md · Roadmap: docs/ROADMAP.md · Changes: CHANGELOG.md
SECURITY.md— responsible disclosure and data-handling expectationsCODE_OF_CONDUCT.md— collaboration normsCONTRIBUTING.md— how to propose changesLICENSE— MIT
Need pilot setup, on-prem deployment, another language / audio profile, or custom QA criteria? See FUNDING.md and scanovich.ai.

