Разработка KWS моделей для NPU на русском языке
Сбор русского голосового датасета
Создание голосового датасета
Качество модели для распознавания ключевых слов (Key Word Spotting, KWS) напрямую зависит от данных, на которых она обучалась. Цель — научить модель реагировать на ограниченный набор команд, например, 'включи', 'стоп' или 'громче', игнорируя при этом все остальные звуки. Для этого нужен специализированный датасет, отражающий разнообразие реальных условий.
Стандартным форматом для таких задач является .wav с частотой дискретизации 16 кГц и одним аудиоканалом (моно). WAV — это формат без сжатия, что предотвращает потерю информации при обработке звука. Частота 16 кГц является золотой серединой: она достаточно высока, чтобы захватить все важные частоты человеческой речи, но не избыточна, что экономит вычислительные ресурсы. Моно-формат используется потому, что для распознавания речи пространственная информация из стереозаписи не нужна.
Структура и классы
Для задач классификации звука датасет принято организовывать по папкам, где имя каждой папки соответствует названию класса. Внутри каждой папки находятся аудиофайлы, принадлежащие этому классу.
Помимо папок с целевыми командами, необходимо создать два специальных класса: _background_noise_ (или _silence_) и _unknown_.
Класс
_background_noise_учит модель не реагировать на тишину или фоновый шум. В эту папку помещаются аудиозаписи без речи: шум улицы, гул кондиционера, офисные звуки. Если таких записей нет, можно сгенерировать файлы с полной тишиной.
Класс
_unknown_нужен, чтобы модель научилась отличать целевые команды от любых других слов. В эту папку добавляют аудиозаписи случайных слов, не входящих в набор команд. Чем разнообразнее этот набор, тем меньше будет ложных срабатываний.
Для наполнения датасета можно использовать открытые источники, например, Common Voice от Mozilla или Google Speech Commands. Однако их придется фильтровать и адаптировать, выбирая только нужные команды и формируя классы _unknown_ и _background_noise_.
Усиление данных (аугментация)
Даже большой датасет не может охватить все возможные сценарии: разное произношение, фоновые шумы, типы микрофонов. Чтобы сделать модель более устойчивой (робастной) к таким изменениям, применяют аугментацию — искусственное создание новых обучающих примеров из существующих.
| Метод | Описание | Цель |
|---|---|---|
| Добавление шума | К исходной аудиозаписи подмешивается фоновый шум (улица, офис, музыка) с разной громкостью. | Научить модель игнорировать помехи и выделять команду на их фоне. |
| Сдвиг высоты (Pitch Shift) | Изменение высоты тона голоса без изменения скорости. | Адаптировать модель к разным голосам (мужским, женским, детским). |
| Растяжение времени (Time Stretch) | Ускорение или замедление аудиозаписи без изменения высоты тона. | Адаптировать модель к разному темпу речи. |
Аугментацию следует применять «на лету» во время обучения модели. Это значит, что для каждой эпохи обучения создаются новые, слегка измененные версии исходных аудиофайлов. Такой подход значительно расширяет разнообразие обучающих данных без необходимости хранить гигабайты модифицированных файлов на диске.
Качественно подготовленный и аугментированный датасет является фундаментом для создания точной и надежной KWS-модели, способной работать в непредсказуемых условиях реального мира.