Точное начало тона / измерение продолжительности? - PullRequest
1 голос
/ 16 декабря 2010

У меня есть работающий детектор тонов, который использует БПФ для определения, присутствует ли тон (или пара тонов) определенной частоты в аудиопотоке (если он достаточно выше минимального уровня шума).Какой метод я мог бы использовать для более точного определения времени начала и продолжительности этого тона?Я ищу что-то гораздо более точное, чем продолжительность кадра FFT (около 50 мс).Предполагается, что тон будет намного длиннее, чем кадр FFT.

Ответы [ 2 ]

3 голосов
/ 16 декабря 2010

Похоже на обнаружение DTMF. Стандартным методом для этого является алгоритм Гёртцеля . Вам нужен один детектор Goertzel для каждой интересующей частоты, поэтому вам нужно знать частоты a priori .

1 голос
/ 16 декабря 2010

Если конкретная частота известна заранее, вы можете сконструировать полосовой фильтр с центром вокруг этой частоты, а затем просто использовать детектор энергии на выходе.Вы должны были бы учитывать объемную задержку через фильтр и, возможно, также времена нарастания и спада установившегося отклика.

Если вы используете выход FFT для фактического обнаружения тона, иу вас достаточно памяти, чтобы сохранить последние прошедшие выборки, вы можете получить приблизительную оценку начала с помощью БПФ, вернуться назад во времени на несколько сотен миллисекунд раньше и начать смешивать выборки по синусоиде на обнаруженной частоте.Затем пропустите смешанные образцы через фильтр нижних частот.Ваше разрешение тонального сигнала, микшер и частоты LPF должны соответствовать друг другу, и вам снова придется учитывать характеристики LPF.

...