A multi-speaker speech recognition system using NVIDIA's Multitalker Parakeet Streaming model with speaker diarization.
Clone or navigate to this directory:
cd multitalkparakeet
Create and activate a virtual environment:
python3 -m venv venv
source venv/bin/activate
Install dependencies:
pip install -r requirements.txt
Verify the installation:
python verify_setup.py
Use the wrapper script for proper CUDA library handling:
# Basic multi-speaker transcription
./run_transcribe.sh --audio your_audio.wav
# With quiet mode (suppresses verbose logging)
./run_transcribe.sh --audio your_audio.wav -q
./run_transcribe.sh --audio your_audio.wav --turns -q
Output:
[0:01.35] SPK 0: Ukraine are now they're heavy-handed approach.
└─[SPK 1 overlapping]: They're heavy-handed approach.
[0:04.58] SPK 0: They're heavy-handed approach.
└─[SPK 1 overlapping]: You both have said Vladimir Putin...
./run_transcribe.sh --audio your_audio.wav --color -q
Shows each word in chronological order with speaker colors.
./run_transcribe.sh --audio your_audio.wav --words -q
Output:
1.35s - 1.89s : Ukraine [speaker_0]
1.89s - 2.43s : are [speaker_0]
3.67s - 4.20s : They're [speaker_1]
For faster processing without diarization:
./run_transcribe.sh --audio your_audio.wav --simple --words -q
| Option | Description |
|---|---|
--audio, -a | Path to audio file (required) |
--output, -o | Output JSON file path (default: output_transcription.json) |
--turns | Show turn-based transcript with overlap markers |
--color | Show colored interleaved word-by-word output |
--words | Show word-level timestamps |
--simple | Use single-speaker mode (faster, no diarization) |
--quiet, -q | Suppress verbose NeMo logging |
--cpu | Force CPU usage (not recommended, very slow) |
# Turn-based + word timestamps
./run_transcribe.sh --audio your_audio.wav --turns --words -q
# All visual outputs
./run_transcribe.sh --audio your_audio.wav --turns --color --words -q
This system uses two NVIDIA NeMo models:
Speaker Diarization: nvidia/diar_streaming_sortformer_4spk-v2.1
ASR (Speech Recognition): nvidia/multitalker-parakeet-streaming-0.6b-v1
Models are automatically downloaded from HuggingFace on first run (~2GB total).
multitalkparakeet/
├── README.md # This file
├── requirements.txt # Python dependencies
├── run_transcribe.sh # Main wrapper script (handles CUDA paths)
├── transcribe.py # Core transcription logic
├── verify_setup.py # Installation verification
├── generate_test_audio.py # Generate synthetic test audio
└── venv/ # Python virtual environment
If you see errors about cuDNN version incompatibility, the wrapper script run_transcribe.sh handles this by setting the correct library paths. Always use the wrapper script instead of running transcribe.py directly.
The models require approximately 4-6GB of GPU memory. If you encounter OOM errors:
--simple mode for reduced memory usageThe first run downloads models from HuggingFace (~2GB). Subsequent runs use cached models and start much faster.
speaker_0, speaker_1, etc. are automatically assignedIn --turns mode:
└─[SPK X overlapping]: indicates speech that overlaps with the current turnThis project uses NVIDIA NeMo models which are subject to NVIDIA's licensing terms. See NVIDIA NeMo for details.
5 commits
Python
96.3%
Shell
3.7%
A multi-speaker speech recognition system using NVIDIA's Multitalker Parakeet Streaming model with speaker diarization.
Clone or navigate to this directory:
cd multitalkparakeet
Create and activate a virtual environment:
python3 -m venv venv
source venv/bin/activate
Install dependencies:
pip install -r requirements.txt
Verify the installation:
python verify_setup.py
Use the wrapper script for proper CUDA library handling:
# Basic multi-speaker transcription
./run_transcribe.sh --audio your_audio.wav
# With quiet mode (suppresses verbose logging)
./run_transcribe.sh --audio your_audio.wav -q
./run_transcribe.sh --audio your_audio.wav --turns -q
Output:
[0:01.35] SPK 0: Ukraine are now they're heavy-handed approach.
└─[SPK 1 overlapping]: They're heavy-handed approach.
[0:04.58] SPK 0: They're heavy-handed approach.
└─[SPK 1 overlapping]: You both have said Vladimir Putin...
./run_transcribe.sh --audio your_audio.wav --color -q
Shows each word in chronological order with speaker colors.
./run_transcribe.sh --audio your_audio.wav --words -q
Output:
1.35s - 1.89s : Ukraine [speaker_0]
1.89s - 2.43s : are [speaker_0]
3.67s - 4.20s : They're [speaker_1]
For faster processing without diarization:
./run_transcribe.sh --audio your_audio.wav --simple --words -q
| Option | Description |
|---|---|
--audio, -a | Path to audio file (required) |
--output, -o | Output JSON file path (default: output_transcription.json) |
--turns | Show turn-based transcript with overlap markers |
--color | Show colored interleaved word-by-word output |
--words | Show word-level timestamps |
--simple | Use single-speaker mode (faster, no diarization) |
--quiet, -q | Suppress verbose NeMo logging |
--cpu | Force CPU usage (not recommended, very slow) |
# Turn-based + word timestamps
./run_transcribe.sh --audio your_audio.wav --turns --words -q
# All visual outputs
./run_transcribe.sh --audio your_audio.wav --turns --color --words -q
This system uses two NVIDIA NeMo models:
Speaker Diarization: nvidia/diar_streaming_sortformer_4spk-v2.1
ASR (Speech Recognition): nvidia/multitalker-parakeet-streaming-0.6b-v1
Models are automatically downloaded from HuggingFace on first run (~2GB total).
multitalkparakeet/
├── README.md # This file
├── requirements.txt # Python dependencies
├── run_transcribe.sh # Main wrapper script (handles CUDA paths)
├── transcribe.py # Core transcription logic
├── verify_setup.py # Installation verification
├── generate_test_audio.py # Generate synthetic test audio
└── venv/ # Python virtual environment
If you see errors about cuDNN version incompatibility, the wrapper script run_transcribe.sh handles this by setting the correct library paths. Always use the wrapper script instead of running transcribe.py directly.
The models require approximately 4-6GB of GPU memory. If you encounter OOM errors:
--simple mode for reduced memory usageThe first run downloads models from HuggingFace (~2GB). Subsequent runs use cached models and start much faster.
speaker_0, speaker_1, etc. are automatically assignedIn --turns mode:
└─[SPK X overlapping]: indicates speech that overlaps with the current turnThis project uses NVIDIA NeMo models which are subject to NVIDIA's licensing terms. See NVIDIA NeMo for details.
5 commits
Python
96.3%
Shell
3.7%