/ Модель

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

Лицензия
Apache 2.0
Опубликована
14 сен 2026

int_wakeup-whisper_base-ctx20-ft4

Классификация аудиоАудио → label3 профессии

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

39скачиваний за 30 дней0лайковвеса обновлены14 сен 2026

Бенчмарки

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

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

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

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

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

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

int_wakeup-whisper_base-ctx20-ft4 — модель TCLResearchEurope для определения, следует ли голосовому ассистенту отвечать на текущую реплику. Она классифицирует реплики с учётом до 20 предыдущих ходов диалога, поэтому может распознавать контекстные продолжения без ключевого слова и отсеивать разговоры между людьми. Модель не обнаруживает границы реплик: ей нужны готовая сегментация и аудио каждой реплики.

Модель содержит 24 млн параметров. В её основе — аудиоэнкодер Whisper-base с контекстным причинным трансформером на 4 слоя и отдельной головой классификации. Верхние четыре слоя энкодера дообучены; при инференсе контекстные реплики должны кодироваться замороженным энкодером, а текущая — дообученным. Модель обучена и оценена на синтетическом англоязычном наборе TCLResearchEurope/intelligent_wakeup; ключевое слово «Sigma» фиксировано в обучающих данных. В тесте получены F1 0,890 и 3,6 ложных срабатывания в час неадресованной речи при пороге 0,90.

Модель рассчитана на обработку аудио и выдаёт решение о том, адресована ли ассистенту реплика. Она может служить фильтром активации голосового помощника с учётом диалога. Лицензия — Apache-2.0. Разработчик отмечает, что синтетические данные и тестирование на той же распределённости ограничивают перенос результатов на реальные записи; полнота распознавания контекстных продолжений ниже, а ложных активаций всё ещё слишком много для надёжной постоянно включённой работы.

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

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

Ограничения

Оценка проведена на синтетической англоязычной речи, поэтому на реальных записях качество может быть хуже; сегментацию реплик нужно выполнять отдельно. Полнота для продолжений без ключевого слова составляет 0,759, а 3,6 ложного срабатывания в час недостаточно для надёжной постоянно включённой работы.

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

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

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

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

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

Открыть на Hugging Face

int_wakeup-whisper_base-ctx20-ft4

Decides, turn by turn, whether a voice assistant should respond - without requiring a wake word. It reads the current utterance together with up to 20 preceding turns, so it can accept a follow-up like "and the one after that?" and reject a question that two people are asking each other.

Trained and evaluated on TCLResearchEurope/intelligent_wakeup v1.0.1.

Results

Test split: 243 conversations, 3,647 scored turns, 6.72 h of recording of which 5.28 h is speech not addressed to the assistant. Threshold 0.90, chosen on validation and applied unchanged.

precisionrecallF1false accepts / hour
this model0.9310.8530.8903.6
same model, encoder frozen (no Phase 2)0.8240.8160.8209.9
GPT Realtime (gpt-realtime-mini) prompted baseline0.0980.9970.179516.6

False accepts per hour are over the 5.28 h of not-addressed speech. Over the whole 6.72 h recording the figure is 2.8/hour.

By turn type:

typenrecall
direct - contains the wake word1580.937
contextual - follow-up, no wake word1410.759
non-assistance - human-to-human3,34819 false accepts

direct and contextual are all positives, so only recall is meaningful for them; non-assistance is all negatives.

Architecture

24.0M parameters.

  1. Per-turn encoder - Whisper-base encoder (6 layers, 512-d) over the turn's audio, then learned attention pooling to one 512-d vector.
  2. Context transformer - 4 causal layers, 256-d, over the last 20 turn vectors plus a speaker-role embedding per turn. Turn t attends to 0..t and never to the future.
  3. Heads - a trigger logit, and an auxiliary turn-type head used only as a training signal.

Trained in two phases: Phase 1 with the encoder frozen and turn embeddings precomputed (3.4M trainable), then Phase 2 with the top 4 encoder layers unfrozen (16.0M trainable). Phase 2 is what the -ft4 suffix means, and it is where the accuracy comes from - it lifted direct recall from 0.867 to 0.937 by teaching the encoder to actually hear the wake word.

Two encoders at inference - please read

Phase 2 fine-tuned the encoder for the current turn while the context turns kept being read from a cache built with the frozen encoder. The model therefore expects those two to be different, and inference has to reproduce it:

encoder
current turnthe fine-tuned one, in model.safetensors
context turnspristine openai/whisper-base + context_pooling_head.safetensors

Encoding everything with the fine-tuned encoder - the natural thing to write - raises no error and drops validation F1 from 0.896 to 0.718, with contextual recall collapsing from 0.759 to 0.290. inference.py does it correctly; start from that rather than reimplementing.

This asymmetry is a training artefact rather than a design choice, and it is the first thing to fix in a retrain.

Usage

pip install -r requirements.txt
python inference.py session.wav turns.json

turns.json is the turn segmentation - this model classifies turns, it does not find them, so bring your own VAD or diarisation:

[{"start": 0.0,  "end": 4.2,  "speaker": "Tariq"},
 {"start": 4.2,  "end": 9.8,  "speaker": "Sigma"},
 {"start": 9.8,  "end": 13.1, "speaker": "Priya"}]

Audio is 16 kHz mono. Use the literal name "Sigma" for the assistant's own turns - they form context but are never scored. Speaker ids are roles, not identities: the assistant is 1, humans are 2, 3, 4… by order of first appearance within the conversation. inference.py handles that mapping.

It is a causal model, so the same code shape works for streaming: encode each turn as it ends, keep the last 20 context vectors, classify.

Training

Needs the training repo, which carries the data pipeline. The recipe is one config:

python precompute_embeddings.py 'splits=[train,validation,test]' \
  dataset.embedding_cache_dir=.cache/embeddings-v2
python train.py +experiment=int_wakeup-whisper_base-ctx20-ft4 \
  dataset.embedding_cache_dir=.cache/embeddings-v2

training_config.yaml here is that experiment file; resolved_config.yaml is the exact config this checkpoint was produced with.

The settings that mattered, measured:

validation F1
Phase 1 baseline0.819
pos_weight 4.0 → 2.00.831
+ Phase 2, top 4 layers unfrozen0.899
whisper-small instead of base0.818 - no gain for 4x the encoder
mean+max pooling instead of attention0.870 - worse

Phase 2 delivers most of its gain in the first epoch or two after the switch. One caveat: this run was still improving when it hit its 50-epoch limit (0.881 → 0.889 → 0.891 → 0.899 over its last four epochs), so it is not a converged number.

The embedding cache must be one your own run built. It stores the output of a randomly-initialised pooling layer, so a cache from a different run is a different vector space - the training repo pins the pooling head to the cache directory and refuses to mix them.

Limitations

  • contextual recall is 0.759. Follow-ups with no wake word are the whole remaining recall problem, and nothing tried so far moved them.
  • 3.6 false accepts/hour is not low enough for always-on use. A living room would see ~30 spurious activations a day.
  • The corpus is synthetic - TTS voices over mixed room tone, one generation pipeline, English only. Splits are grouped so scenario variants never straddle them, but test is still unseen conversations, same distribution. Expect materially worse numbers on real recordings; treat these as a ceiling.
  • Turn segmentation is assumed. Errors in your VAD land directly on this model's input.
  • The wake word is the fixed string "Sigma", baked into the training data.

Citation

If you use this code or dataset, please cite:

@inproceedings{sowanski2026intelligentwakeup,
  title={Training Intelligent Voice Assistant Wakeup with Controllable Synthetic Conversations},
  author={Sowa{\'n}ski, Marcin and Leszczy{\'n}ski, Kacper and Krzywicki, Kacper and Wodnicki, Krzysztof},
  year={2026},
}

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

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

GPU в ailist

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

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

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

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

0 моделей