Да, вы можете использовать программное обеспечение для распознавания речи, такое как CMU Sphinx, для распознавания неречевых звуков. Для этого вам нужно создать свои собственные акустические и языковые модели и определить лексику, ограниченную вашей задачей. Но для тренировки соответствующей акустической модели у вас должно быть достаточно тренировочных данных с аннотированными интересными звуками.
Короче говоря, последовательность шагов следующая:
Сначала подготовьте ресурсы для обучения: лексику, словарь и т. Д. Процесс описан здесь: http://cmusphinx.sourceforge.net/wiki/tutorialam. Но в вашем случае вам нужно переопределить набор фонем и лексику. А именно, вы должны моделировать наполнители как настоящие слова (то есть, без ++
), и вам не нужно определять полный набор фонем. Возможностей много, но, вероятно, самый простой - иметь единую модель для всех речевых фонем. Таким образом, ваша лексика будет выглядеть так:
CLAP CLAP
BARK BARK
WHISTLE WHISTLE
FART FART
SPEECH SPEECH
Во-вторых, подготовьте данные обучения с метками: что-то похожее на VoxForge, но текстовые аннотации должны содержать только метки из вашего лексикона. Конечно, неречевые звуки также должны быть правильно обозначены. Хороший вопрос здесь, где взять достаточно большое количество таких данных. Но я думаю, это должно быть возможно.
Имея это, вы можете тренировать свою модель. Задача проще по сравнению с распознаванием речи, например, вам не нужно использовать трифоны, только монофоны.
Предполагая равную априорную вероятность любого звука / речи, простейшая языковая модель может представлять собой петлеобразную грамматику (http://cmusphinx.sourceforge.net/wiki/tutoriallm):
#JSGF V1.0;
/**
* JSGF Grammar for Hello World example
*/
grammar foo;
public <foo> = (CLAP | BARK | WHISTLE | FART | SPEECH)+ ;
Это очень простой подход к использованию инструментария ASR для вашей задачи. Он может быть дополнительно улучшен путем точной настройки конфигураций HMM, использования статистических языковых моделей и использования точного моделирования фонем (например, различение гласных и согласных вместо единой модели SPEECH. Это зависит от характера ваших обучающих данных).
За рамками распознавания речи вы можете создать простой статический классификатор, который будет анализировать входные данные кадр за кадром. Сверточные нейронные сети, работающие на спектрограммах, достаточно хорошо справляются с этой задачей.