Utility to record and transcribe meetings. Uses Sox for cross-platform audio recording. Supports optional speaker diarization (who spoke when) and per-segment sentiment analysis.
# Install Python dependencies
pdm install
# Install Sox (required for audio recording)
# macOS:
brew install sox
# Linux (Ubuntu/Debian):
sudo apt install sox
# Linux (RedHat/CentOS):
sudo yum install soxDiarization is off by default; pass --diarization to enable it. You can use it in two ways:
Option 1: No account (free)
If you do not set HF_TOKEN, scribe uses Resemblyzer to diarize: it embeds each transcript segment and clusters by voice. No Hugging Face account or token is required. Install the extra deps (included in pdm install): Resemblyzer, scikit-learn.
Option 2: Pyannote (best quality)
For higher-quality diarization, use Hugging Face and pyannote:
- Create a token at hf.co/settings/tokens.
- Accept the user conditions for:
- Set the token when running:
Or use
export HF_TOKEN=your_token_here pdm run meetHUGGING_FACE_HUB_TOKENinstead ofHF_TOKEN.
To enable diarization, pass the flag:
pdm run meet --diarization# Record and transcribe only (default)
pdm run meet
# Enable diarization and/or sentiment
pdm run meet --diarization
pdm run meet --sentiment
pdm run meet --diarization --sentiment
# Record audio only
pdm run record my-recording # With timestamp
pdm run record my-recording --no-timestamp # Without timestampCreates a folder in records/ with:
- Audio file (WAV → MP3)
- Transcription (TXT) with timestamps. With diarization and sentiment enabled, each line looks like:
With both disabled, the format is backwards compatible:
[0.00s -> 5.20s] Speaker_0 (positive): Hello everyone, thanks for joining. [5.20s -> 12.40s] Speaker_1 (neutral): Let's go through the agenda.[start->end] text.