/ Модель

Характеристики

Лицензия
Своя лицензия
Архитектура
pvad · dense
Библиотека
onnx
Опубликована
22 сен 2026

telenow-pvad-v1

Поиск речи в аудиоАудио → label3 профессии

Потоковая модель Telenow AI определяет, говорит ли в телефонном разговоре зарегистрированный абонент, другой человек или никто.

20скачиваний за 30 дней1лайквеса обновлены22 сен 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

pVAD v1 — Telenow AI разработала потоковую speaker-conditioned модель voice activity detection для телефонного аудио. Она помечает каждые 10 мс как тишину, речь зарегистрированного абонента или речь другого источника; это позволяет голосовому агенту распознавать перебивание абонента до получения транскрипции и отфильтровывать голоса окружающих, телевизор и собственное эхо агента.

Модель содержит 171 тыс. параметров. Архитектура включает входные log-mel признаки с 40 полосами, причинные свёртки, FiLM-кондиционирование по 192-мерному эмбеддингу говорящего и двухслойный GRU с 96 скрытыми измерениями. Рассчитана на потоковый вход с частотой 8 кГц и шагом 10 мс; есть также граф для обработки целой последовательности. Для работы требуется эмбеддинг WeSpeaker ECAPA-TDNN512-LM, полученный из 1,5–3 секунд чистой речи абонента.

На удержанных записях с синтетическими смесями модель показала 96% принятия речи абонента при отсутствии помех, 81% при наложении голоса другого человека и 6% ложных срабатываний на речь постороннего. Проверка не включала реальные записи шумных помещений. Модель обучена на индийских телефонных записях на хинди, английском и других индийских языках; широкополосное и нетелефонное аудио находится вне распределения обучения. До накопления примерно 1,5 секунды речи абонента кондиционирование недоступно; модель определяет говорящего, но не адресата речи. Репозиторий содержит ONNX-версии и PyTorch state_dict. Лицензия указана как other, конкретные условия в предоставленных данных не раскрыты.

Сценарии применения

  • гейт перебивания абонента в голосовом агенте
  • отсечение речи посторонних в телефонном разговоре
  • отличение голоса абонента от телевизора и эха агента
  • покадровое определение активности абонента до завершения распознавания речи

Ограничения

Модель проверялась на синтетических смесях, а реальные записи шумных помещений не оценивались; широкополосное и нетелефонное аудио не соответствует обучающим данным. Требуются около 1,5 секунды чистой речи абонента для получения эмбеддинга, а для корректной работы нужен совместимый WeSpeaker ECAPA-TDNN512-LM.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

pVAD v1 — speaker-conditioned frame VAD for telephony barge-in

A 171k-parameter streaming model that labels every 10 ms of an 8 kHz caller audio stream as silence, the enrolled caller, or someone else (a bystander, a TV, the agent's own echo). It is conditioned on a 192-d speaker embedding of the caller taken from the first seconds of the call, so a voice-agent's barge-in logic can ignore other voices in the room without waiting for a transcript.

Trained by Telenow AI on its own Indian PSTN call recordings (Hindi, English and other Indian languages) with synthetic bystander / TV / echo mixtures. No audio is released with this model.

Results (held-out recordings, synthetic mixtures, 1.5 s windows)

windowcosine speaker gate (baseline)pVAD v1
caller alone → accepted as caller22 %96 %
caller + bystander overlapping → accepted11 %81 %
bystander only → accepted (false accept)0 % (+19 % unsure)6 %
window EER0.220.091

Frame accuracy 0.87, speech-frame AUC 0.97, target recall 0.84 at 5 % false accept. One 10 ms frame costs ~0.08 ms single-threaded in onnxruntime.

Files

filewhat
pvad_stream_v1.onnxstreaming graph — one 10 ms frame per call, carries its own state (use this in production)
pvad_full_v1.onnxwhole-sequence graph feats [1,T,40], emb [1,192], h0 [2,1,96] → logits [1,T,3] (offline scoring)
pvad_v1.ptPyTorch state_dict of the model below
pvad_norm.jsonfeature mean / sd (already baked into both ONNX graphs; here for retraining)
config.jsonthe full I/O and feature contract
example_stream.pyreference streaming inference with onnxruntime
train_log.txtthe training run's validation curve

Model

fbank(40) → Linear(40→64) + ReLU
          → causal Conv1d(64, k=5)           + ReLU
          → causal Conv1d(64, k=5, dil=2)    + ReLU
          → FiLM(emb 192 → scale, shift)     (x · (1+γ) + β)
          → GRU(64→96, 2 layers)
          → Linear(96→3)   [silence, caller, other]

Normalisation (feats − mu) / sd with the stored global statistics is the first op inside both graphs.

Input features

Kaldi-style log-mel filterbank, 8 kHz, 40 bins, 25 ms Hamming window, 10 ms hop, no dither, DC removal, 0.97 pre-emphasis, 256-point FFT, energies floored at float epsilon then ln, no mean subtraction, on int16-scale samples (i.e. waveform × 32768). Equivalent to:

torchaudio.compliance.kaldi.fbank(x_int16_scale[None], num_mel_bins=40,
    frame_length=25, frame_shift=10, dither=0.0, energy_floor=0.0,
    sample_frequency=8000, window_type="hamming", use_energy=False, snip_edges=True)

Conditioning (enrollment) embedding

A 192-d, L2-normalised WeSpeaker ECAPA-TDNN512-LM embedding (voxceleb_ECAPA512_LM.onnx, CC-BY-4.0) of 1.5–3 s of the caller's clean speech: audio upsampled 8 → 16 kHz, 80-bin Kaldi fbank (25/10 ms, Hamming, no dither), per-utterance mean subtraction, feats [1,T,80] → embs [1,192]. The model was trained with enrollments of 1.5–3 s (first turn) and 3 s (later in the call), 50/50. Any other speaker encoder requires retraining.

Streaming contract (pvad_stream_v1.onnx)

tensorshapemeaning
feats[1,1,40]the new 10 ms frame
hctx[1,4,64]last 4 post-ReLU input-hidden frames (zero-init)
cctx[1,8,64]last 8 conv-1 outputs (zero-init)
emb[1,192]enrollment embedding
h0[2,1,96]GRU state (zero-init)
→ logits[1,1,3]silence / caller / other
→ hn[2,1,96]next GRU state
→ h1[1,1,64]push into hctx (drop the oldest)
→ c1[1,1,64]push into cctx (drop the oldest)

The two rings reproduce the training graph's causal zero padding exactly: streaming output equals the whole-sequence graph to ~2e-6 from the first frame.

Intended use and limits

  • Built for barge-in gating in a full-duplex voice agent on telephony audio: "is this speech the caller's?" before STT has returned. It says who is speaking, not whom they address.
  • Evaluated on synthetic bystanders (other real callers, room-filtered and mixed at 3–22 dB below the caller, TV at 12–25 dB below, agent echo); real-room recordings were not part of the evaluation.
  • Trained on 8 kHz Indian-language telephony; wideband or non-telephony audio is out of distribution.
  • Needs an enrollment; until the caller has spoken ~1.5 s there is nothing to condition on — pass through until then.
  • Two people legitimately sharing a call must be handled by policy on top (e.g. admit a non-caller voice after N speech runs inside a window).

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · onnx

Нельзя запустить

Задача «voice-activity-detection» пока не поддерживается рантаймом.

Ревизия весов
93084ca

0 моделей