Проект, направленный на обнаружение однословных команд на основе набора данных Google Speech Commands. Мы извлекли из него всего 10 слов (их в наборе данных 35), чтобы сократить время обучения.
Google Speech Commands — это открытый датасет коротких голосовых команд на английском языке, разработанный Google для обучения моделей распознавания речи. Набор данных содержит 105 829 аудиофайлов продолжительностью в одну секунду. Каждый клип содержит одно из 35 различных слов (например: "yes", "no", "stop", "go", "left", "right" и т.д.), произнесенных тысячами разных субъектов.
Мы ограничили количество классов для ускорения экспериментов, выбрав 10 основных команд:
Для балансировки данных мы:
Классы у нас хорошо расспределены, нет дисбаланса.
Для повышения устойчивости модели к реальным условиям мы использовали комплекс аугментаций, которые делают данные более разнообразными и приближенными к реальным записям. Основные преобразования включают добавление случайного шума, временной сдвиг и изменение громкости.
Добавление шума имитирует фоновые помехи — мы генерировали гауссовский шум с амплитудой 0.003 и накладывали его на исходный сигнал. Это помогает модели научиться игнорировать слабые шумы, такие как фоновые разговоры или помехи микрофона, делая её более устойчивой к неидеальным условиям записи.
Временной сдвиг позволяет имитировать естественные вариации в начале и конце произнесения команд. Мы случайным образом смещали аудиосигнал в пределах ±150 миллисекунд, обрезая излишки и дополняя нулями. Это важно, потому что в реальном времени команды могут начинаться не строго в один и тот же момент, и модель должна быть к этому готова.
Изменение громкости помогает учесть различия в расстоянии до микрофона и громкости голоса. Мы умножаем сигнал на случайный коэффициент в диапазоне от 0.7 до 1.3, сохраняя разборчивость, но при этом заставляя модель адаптироваться к разной амплитуде звука.
Каждый аудиофайл проходит через строгий pipeline преобразований:
а) Конвертация в моно-формат
б) Ресемплирование
в) Нормализация длины
г) Преобразование в мел-спектрограмму
д) Логарифмическое преобразование
Обучали модель на своих данных: CNN + FCNN
CNN-блок:
Полносвязный блок:
Метрику использовали базовую: accuracy
По итогу класс unknown мешал обучению, что приводило к низкому качеству модели. Мы решили исключить его, после чего модель стала предсказывать правильные команды, произнесенные нами. Аугментация также оказала положительный эффект на обучение, точность на тестовой выборке выросла на 1-2 процента. (Итоговый файл - Voice_augnun.ipynb)
!!! Запускать локально, так как есть вероятность столкнуться с ограничениями записи с микрофона
!!! Потребуется VPN
Что делать для веб сервиса
Что делать для приложения
P.S. Если возникнут вопросы с получением ссылки, то обратитесь к нам
56 commits
Jupyter Notebook
98.3%
Python
1.7%
Проект, направленный на обнаружение однословных команд на основе набора данных Google Speech Commands. Мы извлекли из него всего 10 слов (их в наборе данных 35), чтобы сократить время обучения.
Google Speech Commands — это открытый датасет коротких голосовых команд на английском языке, разработанный Google для обучения моделей распознавания речи. Набор данных содержит 105 829 аудиофайлов продолжительностью в одну секунду. Каждый клип содержит одно из 35 различных слов (например: "yes", "no", "stop", "go", "left", "right" и т.д.), произнесенных тысячами разных субъектов.
Мы ограничили количество классов для ускорения экспериментов, выбрав 10 основных команд:
Для балансировки данных мы:
Классы у нас хорошо расспределены, нет дисбаланса.
Для повышения устойчивости модели к реальным условиям мы использовали комплекс аугментаций, которые делают данные более разнообразными и приближенными к реальным записям. Основные преобразования включают добавление случайного шума, временной сдвиг и изменение громкости.
Добавление шума имитирует фоновые помехи — мы генерировали гауссовский шум с амплитудой 0.003 и накладывали его на исходный сигнал. Это помогает модели научиться игнорировать слабые шумы, такие как фоновые разговоры или помехи микрофона, делая её более устойчивой к неидеальным условиям записи.
Временной сдвиг позволяет имитировать естественные вариации в начале и конце произнесения команд. Мы случайным образом смещали аудиосигнал в пределах ±150 миллисекунд, обрезая излишки и дополняя нулями. Это важно, потому что в реальном времени команды могут начинаться не строго в один и тот же момент, и модель должна быть к этому готова.
Изменение громкости помогает учесть различия в расстоянии до микрофона и громкости голоса. Мы умножаем сигнал на случайный коэффициент в диапазоне от 0.7 до 1.3, сохраняя разборчивость, но при этом заставляя модель адаптироваться к разной амплитуде звука.
Каждый аудиофайл проходит через строгий pipeline преобразований:
а) Конвертация в моно-формат
б) Ресемплирование
в) Нормализация длины
г) Преобразование в мел-спектрограмму
д) Логарифмическое преобразование
Обучали модель на своих данных: CNN + FCNN
CNN-блок:
Полносвязный блок:
Метрику использовали базовую: accuracy
По итогу класс unknown мешал обучению, что приводило к низкому качеству модели. Мы решили исключить его, после чего модель стала предсказывать правильные команды, произнесенные нами. Аугментация также оказала положительный эффект на обучение, точность на тестовой выборке выросла на 1-2 процента. (Итоговый файл - Voice_augnun.ipynb)
!!! Запускать локально, так как есть вероятность столкнуться с ограничениями записи с микрофона
!!! Потребуется VPN
Что делать для веб сервиса
Что делать для приложения
P.S. Если возникнут вопросы с получением ссылки, то обратитесь к нам
56 commits
Jupyter Notebook
98.3%
Python
1.7%