Можно ли программно узнать какие звуки записал микрофон?
Элементарно - берёте нейросеть, обучаете на подготовленной выборке, тестируете, пользуетесь.
Как baseline я бы попробовал такое решение:
- записываем звук как кучу коротких чанков (там, 0.5 сек. например)
- строим спектрограммы на этих чанках (будет матрица вида N * k, где k - число частот, N - длина записи)
- усредняем спекторграммы по оси "длины записи" (получим вектора размера k)
- обучаем на этих чанках и происвоенных им лейблах классификатор (возможно - k-nearest neighbours? Во всяком случае задача в таком виде кажется похожей на решаемую им)
Потом бы (при наличии большой выборки) извращался над более сложными решениями - например, как в моём комментарии к ответу kisaa - и сравнивал бы качество классификации (на кроссвалидации, конечно :-) ).