Views
No views yet
| Detail | Value |
|---|---|
| Architecture | TitaNet-Large — depthwise separable Conv1D encoder + ASP decoder |
| Parameters | 23M |
| Embedding dim | 192 (L2-normalized) |
| EER | 0.66% on VoxCeleb1-O cleaned |
| Input | 16 kHz mono PCM |
| GGUF size | ~45 MB (F16 weights, F32 batch-norm) |
| License | CC-BY-4.0 |
Preprocessor: 16kHz → 80-bin mel spectrogram (Hann window, n_fft=512, hop=160, win=400)
Encoder (Jasper-style):
Block 0 (prolog): DW-Conv(80, k=3) + PW-Conv(80→1024) + BN + SE + ReLU
Block 1: 3× DW-Sep-Conv(1024, k=7) + SE + residual + ReLU
Block 2: 3× DW-Sep-Conv(1024, k=11) + SE + residual + ReLU
Block 3: 3× DW-Sep-Conv(1024, k=15) + SE + residual + ReLU
Block 4 (epilog): DW-Conv(1024, k=1) + PW-Conv(1024→3072) + BN + SE + ReLU
Decoder:
ASP (Attentive Statistics Pooling): 3072 → 6144
BN + Linear: 6144 → 192
L2-normalize1# Enroll a speaker from a reference audio clip
2crispasr --enroll-speaker alice \
3 --speaker-db ./speakers \
4 -f alice_reference.wav1# Transcribe with speaker identification
2crispasr --backend parakeet \
3 --speaker-db ./speakers \
4 -f meeting.wav
5# Output: (alice) Hello everyone...1# Extract speaker embedding (test binary)
2test-titanet titanet-large.gguf audio1.wav audio2.wav
3# Prints cosine similarity matrix1from crispasr import TitaNet, SpeakerDB
2
3with TitaNet("titanet-large.gguf") as model:
4 emb = model.embed(pcm_16k_float32)
5
6db = SpeakerDB("./speakers")
7db.enroll("alice", emb)
8name, score = db.match(emb, threshold=0.7)1python models/convert-titanet-to-gguf.py \
2 --input nvidia/speakerverification_en_titanet_large \
3 --output titanet-large.gguf1@inproceedings{koluguri2022titanet,
2 title={TitaNet: Neural Model for Speaker Representation with 1D Depth-wise Separable Convolutions and Global Context},
3 author={Koluguri, Nithin Rao and Park, Taejin and Ginsburg, Boris},
4 booktitle={ICASSP 2022},
5 year={2022}
6}nvidia.cc-by-4.0. This repository redistributes under the same terms; it grants no rights the upstream licence does not.