Visualize speaker emotions across a conversation. Upload any recording and see who said what — and how they felt saying it — powered by Smallest AI Pulse STT emotion detection.
- Upload audio and get a diarized transcript with per-segment emotion scores
- Interactive timeline chart with one line per speaker–emotion combination
- Color-coded emotion filters (happiness, sadness, anger, fear, disgust)
- Speaker filters with dash-style line indicators
- Concurrent emotion detection for fast results on long recordings
Base dependencies are installed via the root
requirements.txt. See the main README for setup. AddSMALLEST_API_KEYto your.env.
Extra dependencies:
uv pip install -r requirements.txtuv run backend/app.pyOpen http://localhost:5000 in your browser.
- Drop or select an audio file
- Click Analyze Emotions
- Explore the results — emotion timeline, speaker filters, and full transcript table
- Analyzing tone and sentiment shifts across a multi-speaker conversation
- Comparing emotional patterns between speakers over time
- For basic emotion scores without visualization, File Transcription supports
emotion_detection=truedirectly
emotion-analyzer/
├── .env.sample # Environment variable template
├── requirements.txt # Extra Python dependencies (flask, pydub)
├── README.md
├── backend/
│ └── app.py # Flask backend — upload, diarize, merge, split, emotion detect
└── frontend/
├── index.html # Minimal HTML shell
├── app.js # UI logic
└── style.css # Styles and theming
- Upload — the Flask backend receives an audio file via
/api/analyze - Diarize — sends the full audio to Pulse STT with
diarize=trueandword_timestamps=true, getting speaker-labeled utterances - Merge — utterances sharing the same timestamp and speaker are merged into single segments
- Split — pydub slices the original audio at utterance boundaries into per-segment WAV clips
- Detect emotions — each segment is sent to Pulse STT with
emotion_detection=trueconcurrently (up to 10 workers) - Visualize — the frontend renders an interactive Chart.js timeline with emotion/speaker filter chips and a transcript table
Audio: WAV, MP3, FLAC, OGG, M4A, AAC, WMA
- Realtime Microphone — Live microphone transcription via WebSocket
