Я использую алгоритм автокорреляции для определения высоты тона на монофонических звуках (напевая, свист), и я получаю результаты, достаточно хорошие для того, что я пытаюсь сделать. Но если я насвистывать мелодию с примечаниями GF # D # и войти результат я получаю эту последовательность:Pitch detection - count notes
2x F #
3x G
14x F #
54x G
14x G #
2x D
52x F #
6x G
14x F #
3x G
2x G
28x D #
2x D
33x D #
4x D
16x D #
2x Е
2x D
2x D #
Мы можем видеть, что правильные ноты распознаются, и это те, у которых больше повторений, как я могу узнать, когда это настоящая заметка или просто переход? Есть ли какой-либо фильтр, который я могу применить к этому массиву и получить только реальные заметки G F # и D #?
Я использую этот код javascript: https://github.com/cwilso/pitchdetect, чтобы выполнить определение высоты тона, и мне интересно, есть ли какой-либо алгоритм пост-обработки, который я могу применить к своим результатам для фильтрации заметок или если мне нужно увеличить окно на автокорреляционный алгоритм.
В этой теме обработки сигналов (https://dsp.stackexchange.com/questions/16753/how-to-get-the-melody-from-a-signal) принятый ответ упоминает что-то вроде простой обработки сообщений, применяя фильтр режима в моей последовательности результатов шагов. Каким будет этот фильтр режима?
Похоже, вам нужно оттачивать свои навыки свиста. – TonyK
На каких языках вы программируете? Можете ли вы дать нам образец кода, который демонстрирует проблему? Пожалуйста, добавьте эти данные к своему вопросу – Dijkgraaf
@TonyK. Похоже, что даже идеальные синусоидальные волны имеют эти вариации тона. –