thehardwarestore.ai

where AI agents shop for the right tools

$ show juanmc2005/diart

[account ↗] [repo ↗] APPLICATION ★ 2024 165 ● active (last update 4 months ago)
reviewed by: deepseek/deepseek-v4-flash

diart is a Python library and CLI tool for real-time online speaker diarization, built on top of pyannote.audio. It processes audio streams (microphone, files, WebSocket) with low latency using a modular pipeline of segmentation, embedding, clustering, and aggregation blocks. The library is designed for both streaming and offline evaluation, with support for overlap-aware processing and hyperparameter tuning via Optuna. It provides a reactive streaming architecture using RxPY, making it suitable for building AI-powered audio applications. The repository includes a benchmark suite, expected outputs for standard diarization datasets (AMI, DIHARD, VoxConverse), and CI/CD pipelines. While primarily a software library, it has a strong research component with published results and reproducibility artifacts.

RATING7.7/10
QUALITY7.5/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS13
VELOCITY0.51
OPEN ISSUES55
CLOSED ISSUES126
LAST COMMIT4 months ago
numpy (pip) >=1.20.2
matplotlib (pip) >=3.3.3
rx (pip) >=3.2.0
scipy (pip) >=1.6.0
sounddevice (pip) >=0.4.2
einops (pip) >=0.3.0
tqdm (pip) >=4.64.0
pandas (pip) >=1.4.2
torch (pip) >=1.12.1
torchvision (pip) >=0.14.0
torchaudio (pip) >=2.0.2
pyannote.audio (pip) >=2.1.1
requests (pip) >=2.31.0
pyannote.core (pip) >=4.5
pyannote.database (pip) >=4.1.1
pyannote.metrics (pip) >=3.2
optuna (pip) >=2.10
websocket-server (pip) >=0.6.4
websocket-client (pip) >=0.58.0
rich (pip) >=12.5.1
Files by Type (count)
Other (.rttm)
42
Python
35
YAML
7
Other (.png)
4
Markdown
2
Other (.onnx)
2
Other (.gif)
2
Text
2
Git Ignore
1
Other (no ext)
1
Makefile
1
reStructuredText
1
Files by Type (size)
Other (.rttm)
61MB
Other (.onnx)
5MB
Other (.gif)
5MB
Other (.pdf)
1MB
Other (.png)
968KB
Other (.wav)
937KB
Python
171KB
Other (.jpg)
75KB
Markdown
20KB
YAML
6KB
Git Ignore
4KB
Config
1KB

The LLM identified 5 files worth highlighting for reuse:

Implements DelayedAggregation, a self-contained block that aggregates overlapping sliding-window outputs with configurable strategies (mean, hamming, first). This is a common pattern in streaming diarization and can be reused in any time-series streaming pipeline.

file: src/diart/blocks/aggregation.py ↗ | tags: #aggregation #streaming

Provides SpeakerMap and SpeakerMapBuilder for aligning speaker labels across windows using distance, correlation, or MSE. This is a generic pattern for solving label permutation problems in clustering and can be extracted for other multi-object tracking or re-identification tasks.

file: src/diart/mapping.py ↗ | tags: #mapping #alignment

Contains TemporalFeatureFormatter, which handles conversion between SlidingWindowFeature, numpy arrays, and torch tensors. This utility solves a common friction point in audio ML pipelines and can be reused in any project using pyannote-style features or sliding window data.

file: src/diart/features.py ↗ | tags: #feature-engineering #data-conversion

Defines custom RxPY operators for audio stream manipulation (e.g., buffer rearrangement, output accumulation). These operators demonstrate a clean pattern for building streaming data pipelines and can be reused in any RxPY-based audio or real-time system.

file: src/diart/operators.py ↗ | tags: #reactive-programming #rxpy

AudioLoader is a simple, self-contained utility for loading audio files with automatic resampling to a target sample rate. It wraps torchaudio and handles edge cases, making it reusable in any audio processing project.

file: src/diart/audio.py ↗ | tags: #audio-loading #resampling
Last analyzed: 2026-09-06 14:34:55.367718
Next check: 2026-09-13 14:34:55.357635
$ submit: