TitaNet-S Optimized ONNX
эмбеддинги диктора прямо на CPU
Два FP32-энкодера голоса на базе NVIDIA NeMo TitaNet-S: один — оригинальная модель с оптимизациями под CPU, второй — дообученный под короткие фразы. Каждый возвращает один вектор размерности 192 на весь клип. Для инференса нужны только NumPy, ONNX Runtime и SoundFile — PyTorch и NeMo не требуются.
➕ Ключевые особенности
- ▶ Два варианта:
titanet-s-optimized.onnx(lossless-экспорт) иtitanet-s-tuned.onnx(файнтюн под верификацию короткой речи). - 🔤 Встроенный waveform-фронтенд, на входе — mono 16 kHz float32 PCM.
- ➖ Без квантизации, прунинга и временного субсэмплинга: сохранены все временные фреймы и все 3072 финальных канала.
- 🔜 Есть версии для Core ML (FP32/FP16) с нативным инференсом на Swift и отчётами по качеству и таймингам.
- ✖ Размер каждого графа — 23,84 МБ, ONNX opset 17.
▶ Пример
from inference import SpeakerEmbedder, load_audio
encoder = SpeakerEmbedder("titanet-s-tuned.onnx", threads=4)
enrollment = encoder(load_audio("enroll.wav"))
query = encoder(load_audio("query.wav"))
similarity = float(query @ enrollment)
Подробнее
Задержка на Ryzen 9 5950X в WSL2, 4 потока: 1 с аудио — 2,65–3,00 мс, 5 с — 11,30 мс.EER на LibriSpeech при 5 с: 0,000% у optimized и tuned против 0,100% у B0.
Tuned не хуже B0 в 19 из 20 ячеек; качество меряли на запросах длиной 1–5 с.
Файнтюн на VoxCeleb, Common Voice и LibriSpeech, лицензия Apache-2.0.
VAD, downmixing и ресемплинг нужны заранее, порог сходства подбирается на своих данных.








Комментарии