KDnuggets publishes guide to local call analysis with Whisper, BERTopic and Streamlit

KDnuggets has shown how to build a local customer-call analyzer without cloud APIs. The stack uses Whisper for audio transcription, RoBERTa from Hugging Face for sentiment and emotion, BERTopic for topics and Streamlit for the dashboard. The project runs on your own machine and requires Python 3.9+, FFmpeg and about 1.5–2 GB for the models.

AI-processed from KDnuggets; edited by Hamidun News
KDnuggets publishes guide to local call analysis with Whisper, BERTopic and Streamlit
Source: KDnuggets. Collage: Hamidun News.
Listen to article
Article Fact Sheet & Key Figures
ParameterDetails
Primary sourceKDnuggets ↗
Editor-in-Chief
Key metric #1Audio file upload and batch processing
Key metric #2Transcript with sentiment highlighting
Key metric #3Emotion timeline for long conversations

On April 17, 2026, KDnuggets published a step-by-step breakdown of an open-source tool for analyzing customer calls. The project assembles a local pipeline: Whisper transcribes the audio, models from Transformers detect sentiment and emotion, and BERTopic finds recurring topics without sending recordings to external APIs.

How the stack works

The article is built around a simple modular design that can be reproduced on an ordinary machine. First, Whisper turns the call recording into text and splits it into segments with timestamps. The author uses the base or small version of the model as a compromise between speed and quality.

Next, the transcript goes to the cardiffnlp/twitter-roberta-base-sentiment-latest model, which computes probabilities for positive, neutral and negative, then outputs a final label and a compound score from minus one to plus one. After that, BERTopic groups conversations by meaning and extracts key themes such as billing, delivery or tech support problems.

The author also explains why topic and sentiment solve different problems. Sentiment answers whether the experience was good or bad, while emotions show what exactly the customer feels: irritation, urgency, satisfaction. Topic modeling uses a combination of sentence-transformers, UMAP, HDBSCAN and c-TF-IDF.

An important practical detail: topic extraction does not start working properly on a single call, but on a set of at least five to ten transcripts, where recurring patterns are already visible.

Why run it locally

The article's main idea is not to build yet another NLP demo project, but to show a useful enterprise scenario with no dependence on cloud APIs. For call centers, this comes down to privacy, cost and data-storage requirements. After the first model download, which takes about 1.5 GB, the system can work offline. Getting started requires Python 3.9+, FFmpeg for audio processing and about 2 GB of disk space, so the barrier to entry is fairly low even for a small team.

"The main advantage is that everything works locally, and sensitive

customer data never leaves your machine."

The article presents this as an argument not only about security, but also about predictable costs. There is no per-call API fee, no provider limits and no risk of having to hand yet another customer recording to external infrastructure.

The author also compares transformers with older dictionary-based methods such as VADER: simple models can make mistakes on phrases with negation, while a transformer better understands the context of spoken language, which matters especially for real complaints and ambiguous wording.

What the dashboard shows

The project's final layer is a Streamlit interface with Plotly charts, aimed not at the ML engineer but at a manager or analyst. It lets you upload several mp3 or wav files, wait for processing and immediately view a summary of the calls. Resource caching keeps the heavy models from reloading on every action in the interface.

There are several launch modes: a demo without audio, single-file analysis, batch processing of a directory and the full dashboard in the browser.

  • Audio file upload and batch processing
  • Transcript with sentiment highlighting
  • Emotion timeline for long conversations
  • Topic visualization and distribution of calls across clusters
  • Jump to a specific conversation

In essence, this is a ready-made framework for internal support services, product analytics and operator quality control. A team can take the repository, swap the input data, fine-tune or replace the models, and quickly get a working tool instead of an abstract notebook. That is what makes the article valuable: it does not debate the future of agentic systems, but shows a concrete, reproducible scenario where an open-source stack already solves a business problem.

What this means

Publications like this show how quickly AI tools are moving from experiments into the daily practice of operations teams. Where call analysis once often required a SaaS service and external data processing, a basic system can now be built locally, transparently and without large API budgets.

Story

Key Questions Answered

How the stack works?

The article is built around a simple modular design that can be reproduced on an ordinary machine. First, Whisper turns the call recording into text and splits it into segments with timestamps. The author uses the base or small version of the model as a compromise between speed and quality. Next, the transcript goes to the cardiffnlp/twitter-roberta-base-sentiment-latest model, which computes probabilities for positive, neutral and negative, then outputs a final label and a compound score from minus one to plus one. After that, BERTopic groups conversations by meaning and e

Why run it locally?

The article's main idea is not to build yet another NLP demo project, but to show a useful enterprise scenario with no dependence on cloud APIs. For call centers, this comes down to privacy, cost and data-storage requirements. After the first model download, which takes about 1.5 GB, the system can work offline. Getting started requires Python 3.9+, FFmpeg for audio processing and about 2 GB of disk space, so the barrier to entry is fairly low even for a small team. "The main advantage is that everything works locally, and sensitive customer data never leaves your machine."

What the dashboard shows?

The project's final layer is a Streamlit interface with Plotly charts, aimed not at the ML engineer but at a manager or analyst. It lets you upload several mp3 or wav files, wait for processing and immediately view a summary of the calls. Resource caching keeps the heavy models from reloading on every action in the interface. There are several launch modes: a demo without audio, single-file analysis, batch processing of a directory and the full dashboard in the browser. Audio file upload and batch processing Transcript with sentiment highlighting Emotion timeline for long c

ZK
Zhemal Khamidun — CPO at Alpina Digital, product manager of AlpinaGPT. Building AI products since 2019. Hamidun News is a pet project that grew into a production aggregator with 6,000+ readers.
✦ Private AI Builders Community · Vibe Club

Ship AI Faster with Founders, Engineers & Weekly Architecture Reviews

Inside Vibe Club (hamidun.com/club) — weekly live masterminds with Zhemal Khamidun, Tech Radar, full LMS access, and 370+ production Claude Code skills.

Join Vibe Club →Explore Hamidun Academy
What do you think?
Loading comments…