Я помогаю ферме группировать петухов в группы в соответствии с их криком так, чтобы петухи с одинаковым криком жили вместе. Фермер сказал, что хочет знать, будут ли цыплята узнавать какое-либо поведение у других, если так, то всякий раз, когда он получает цыпленка, он помещает его в хорошую группу цыплят и надеется, что это окажет какое-то хорошее влияние на нового цыпленка. Моя работа состоит в том, чтобы записать сходство каждой группы, а через несколько недель сравнить результаты и увидеть все большее сходство в группах.
Моя идея - написать программу, которая дает оценку сходства для двух входных wav-файлов, поэтому каждый член может найти своего наиболее похожего соседа по комнате и объединиться в группы, а затем сгруппировать похожие группы, наконец, в несколько групп.
Я получил несколько криков по 3 петуха и проанализировал их спектрограммами (каждый петух кричал дважды):
петух A:
член B:
петух C:
Прежде чем вычислять сходство, я хотел бы разбить скручивание на сегменты так, чтобы каждый сегмент сохранял степень частоты (которая будет использоваться для вычисления сходства позже). Мое текущее решение:
Шаг 1: , когда линия интенсивности прерывистая, звук будет разделен промежутками;
Шаг 2: при критическом изменении частоты это время будет рассматриваться как граница сегмента
Я думаю, что вышеуказанных шагов достаточно или нет. Я надеюсь, что у кого-то еще есть лучшее предложение и как я могу улучшить сегментацию. Есть ли какие-либо методы или алгоритмы, подходящие для моей ситуации? Спасибо!