Определение длительности примечания на основе местоположений начала - PullRequest
1 голос
/ 31 мая 2011

У меня есть вопрос относительно того, как определить Длительность примечаний, учитывая их начальные местоположения.

Так, например, у меня есть массив значений амплитуд (содержащих short) и другой массив того же размера, который содержит 1, если обнаружена нота, и 0, если нет. Таким образом, в основном, расстояние между каждым 1 будет использоваться для определения продолжительности.

Как я могу это сделать? Я знаю, что должен использовать частоту дискретизации и другие атрибуты аудиоданных, но есть ли конкретная формула, которую я могу использовать?

Спасибо!

Ответы [ 2 ]

1 голос
/ 19 марта 2012

Итак, вы начинаете со списка ONSETS, то, что вы действительно ищете, это список OFFSETS.

Есть много методов для обнаружения начала (вот статья на нем) http://bingweb.binghamton.edu/~ahess2/Onset_Detection_Nov302011.pdf

многие из тех же методов могут быть применены к Обнаружению смещения:

Поскольку начало отмечено маркировкой УВЕЛИЧЕНИЕ в спектральном содержании, вы можете измерить уменьшение в спектральном содержимом.

1) Возьмите разумное время до и после вашего начала.(.25-.5s) 2) Разбейте окно на более мелкие сегменты и возьмите 50% перекрывающихся преобразований Фурье.3) вычислить разницу между коэффициентом Фурье между двумя последовательными окнами уменьшается и допускают только отрицательные изменения в SD.4) умножьте свои результаты на -1.5) выбрать пики из результатов 6) вуаля, смещения.

(для получения более подробной информации о функции спектральной разности см. Стр. 7 приведенного выше документа, вы можете применить модифицированную (как указано выше) версию it_

.
0 голосов
/ 13 сентября 2011

Ну, если ваша частота дискретизации в Гц равна fs, то время между двумя узлами равно

1/fs * <number of zeros between the two node-ones>

Очень просто: -)

Привет

...