/ Модель

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

Лицензия
Apache 2.0
Библиотека
pytorch
Опубликована
12 окт 2026

indian-amd-yamnet-gru

Классификация аудиоАудио → label

Компактный классификатор телефонного аудио, определяющий, отвечает ли на индийский исходящий звонок человек или автоответчик.

0скачиваний за 30 дней1лайквеса обновлены12 окт 2026

Бенчмарки

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

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

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

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

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

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

Indian AMD: YAMNet-GRU — компактная модель для определения, говорит ли на исходящем телефонном звонке живой человек или автоответчик, голосовая почта, IVR либо роботизированный сервис. По карточке модель разработана для индийских звонков на хинди и индийском английском; она анализирует аудио напрямую, без транскрипции и распознавания речи.

Модель основана на YAMNet, предварительно обученной на AudioSet, с линейной проекцией, двунаправленным GRU и выходным классификационным слоем. В README указано 3,5 млн параметров. Аудио приводится к частоте 16 кГц; модель использует признаки мел-спектрограммы и анализирует до последних 8 секунд. Метаданные указывают библиотеку PyTorch и формат safetensors. Для раннего обнаружения автоответчика предусмотрено асимметричное правило принятия решения, которое снижает риск преждевременно пометить живого собеседника как автомат.

В описанном автором тесте на телефонных аудиозаписях модель обнаруживала машинные голоса на хинди и индийском английском и показывала низкую долю ложных срабатываний на людях, говорящих на индийском английском; результаты относятся к указанному тестовому набору и не гарантируют такую же точность на других данных. Модель предназначена для телефонного аудио, включая записи с кодеком G.711 µ-law и частотой 8 кГц. Лицензия — Apache-2.0.

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

  • отсев автоответчиков при обзвоне индийских абонентов
  • обнаружение голосовой почты и приветствий автоответчика
  • распознавание IVR и объявлений телефонных операторов
  • определение робозвонков по первым секундам аудио
  • классификация телефонной речи на хинди и индийском английском

Ограничения

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

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

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

Открыть на Hugging Face

Indian AMD: YAMNet-GRU (person vs machine on Indian phone calls)

This is a small, fast answering-machine / voicemail detector for Indian outbound calls (Hindi and Indian English). It listens to the first seconds of a call and tells a live person from a machine: carrier announcements ("the number you are calling is switched off"), voicemail greetings, IVR menus, and robocalls.

  • 3.5M parameters, 14 MB, and about 11–70 ms per check on one CPU thread.
  • It needs no transcript and no speech-to-text; it works on the audio directly.
  • It was built because no public AMD model handles Hindi. Every public model we tested flagged 44–90% of Hindi speakers as machines; this one flags 13.3% (details below).

Results

Test set: 526 held-out clips, kept separate from training (no shared speakers, scripts or files). Every clip went through a real 8 kHz G.711 µ-law round trip, so it sounds like a phone line.

Decision rule: the machine-only rule described below. "Caught" means the share of machines it detected; "wrongly flagged" means the share of real people it called a machine.

Group (clips)ResultMedian audio heard
Real US robocalls (150)99.3% caught1.1 s
Indian English machine voices (45)100% caught1.3 s
Hindi machine voices (24)100% caught1.3 s
Hindi-then-English machine voices (7)100% caught1.3 s
Indian English people (150)2.7% wrongly flagged–
Hindi people (150)13.3% wrongly flagged–

Share called "machine" by seconds of audio heard (one-shot, threshold 0.5):

Group1 s2 s3 s4 s6 s10 s
Robocall93.3%94.0%93.3%94.7%96.7%99.3%
Indian machine voices100%100%100%100%100%100%
Indian English people10.7%2.7%2.0%1.3%0.7%0.7%
Hindi people20.0%13.3%12.0%11.3%12.7%12.0%

Compared with public models on the same test set and rule

ModelHindi people wrongly flaggedIndian English people wrongly flaggedCPU per check
AbijahKaj/whisper-telephony-amd (as published)61.3%5.3%~750 ms
ozonetg/amd-telephony-yamnet-gru (as published, CC BY-NC)44.0%4.0%~10–70 ms
EfficientAT mn04 / CED-tiny (AudioSet, zero-shot)~90%96–98%15–75 ms
This model13.3%2.7%11–70 ms

Speed (CPU, 1 thread, PyTorch fp32, Intel Core Ultra 7 155H)

Audio heard1 s2 s4 s8 s
ms per check10.818.334.269.9

How to use

import numpy as np, soundfile as sf
from huggingface_hub import snapshot_download
import sys

folder = snapshot_download("Aakash22134/indian-amd-yamnet-gru")
sys.path.insert(0, folder)
from amd_yamnet import AMDYamnet, MachineOnlyRule

model = AMDYamnet.from_pretrained(folder)
audio, sr = sf.read("call_start.wav", dtype="float32")   # mono, 16 kHz (resample 8 kHz phone audio up)
print("p_machine:", model.p_machine(audio))              # one-shot, uses the last 8 s

t = MachineOnlyRule(model).run(audio)                     # the rule used for the results above
print("machine at %.2f s" % t if t is not None else "person")

Requirements: torch, torchaudio, numpy, safetensors (and soundfile for the example).

The decision rule (MachineOnlyRule)

  • Start checking 0.8 s after speech starts, then every 0.5 s, up to 8 s.
  • Say "machine" if p ≥ 0.9 once, or p ≥ 0.75 on two checks in a row. Otherwise stay "person".
  • It is asymmetric on purpose. Hanging up on a real person is the costly mistake, so "person" is never decided early. A voice bot can start talking normally and stop only if "machine" fires.
  • Run inference on a worker thread (for example asyncio.to_thread), not on the audio event loop.

Training

  • Backbone: Google YAMNet (AudioSet), loaded from the MIT PyTorch port w-hc/torch_audioset. Head: linear 1024→128 + tanh, then a bidirectional GRU (hidden 96), then linear → 1 logit. The whole network was fine-tuned.

  • Frontend: YAMNet's: 16 kHz, 25 ms / 10 ms STFT, 64 mel bands (125–7500 Hz), log(mel + 0.001), 0.96 s patches with a 0.48 s hop, last 8 s of audio.

  • Data: about 8,000 clips, ~16.7 h. Batch sampling: 55% people and 45% machines; Hindi is 32% of every batch.

    GroupClassClipsSource
    Telephony peopleperson1,500AbijahKaj/telephony-amd-dataset (train split)
    Indian English peopleperson1,374 (458 speakers)Mozilla Common Voice, "India and South Asia" accent
    Hindi peopleperson1,600Google FLEURS hi_in (train split)
    Telephony machinesmachine2,000AbijahKaj/telephony-amd-dataset (train split)
    Robocallsmachine1,223wspr-ncsu/robocall-audio-dataset
    Indian English and Hindi machine voicesmachine360~80 scripts written for this model (carrier announcements, bank and telecom IVR, voicemail, Hinglish), spoken by Microsoft edge-tts en-IN / hi-IN voices
  • Augmentation: each sample is the first 1–8 s of a clip, after 0–0.8 s of leading silence, with random loudness, light noise (SNR 25–45 dB), and a real G.711 µ-law 8 kHz round trip.

  • Optimisation: 6 epochs × 250 steps × batch 32, AdamW (backbone lr 1e-4, head 1e-3), cosine decay, bf16 on one RTX 2000 Ada (~9 min). Best epoch chosen on a held-out validation split.

Test set

GroupClipsSource
Real US robocalls150robocall-audio-dataset, files not used in training
Indian machine voices7634 scripts different from training, edge-tts en-IN / hi-IN voices
Indian English people150Common Voice, speakers not in training
Hindi people150FLEURS hi_in validation split (separate speakers from train)

All test clips were loudness-normalised and sent through G.711 µ-law at 8 kHz.

License and attribution

  • Model weights and code: Apache-2.0.

  • YAMNet (Google, tensorflow/models, Apache-2.0). PyTorch port and the vendored network code in amd_yamnet.py are from w-hc/torch_audioset: MIT, © 2021 Haochen (see LICENSE-torch_audioset-MIT).

  • Training data:

    • Google FLEURS (CC BY 4.0, attribution: Conneau et al., 2022)
    • Mozilla Common Voice (CC0)
    • wspr-ncsu robocall-audio-dataset (public domain)
    • AbijahKaj/telephony-amd-dataset (no license stated on its card)
    • audio generated with Microsoft edge-tts (subject to Microsoft's service terms)

    If you plan commercial use, review the last two items yourself.

  • No CC BY-NC model weights were used to train this model.

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

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

GPU в ailist

Универсальный рантайм · pytorch · audio-classification

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

Архитектура ? неизвестна transformers в образе рантайма.

Ревизия весов
9598157

0 моделей