Точное начало тона / измерение продолжительности?
У меня есть работающий детектор тонов, который использует БПФ, чтобы определить, присутствует ли тон (или пара тонов) определенной частоты в аудиопотоке (если он достаточно выше минимального уровня шума). Какой метод я мог бы использовать для более точного определения времени начала и продолжительности этого тона? Я ищу что-то гораздо более точное, чем продолжительность кадра FFT (около 50 мс). Предполагается, что тон будет намного длиннее, чем кадр FFT.
2 ответа
Если конкретная частота известна заранее, вы можете сконструировать полосовой фильтр с центром вокруг этой частоты, а затем просто использовать детектор энергии на выходе. Вы должны были бы учитывать объемную задержку через фильтр и, возможно, также времена нарастания и спада в установившемся режиме.
Если вы используете выход FFT для фактического обнаружения тона и у вас достаточно памяти, чтобы сохранить последние прошедшие сэмплы, вы можете получить приблизительную оценку начала с FFT, вернуться на несколько сотен миллисекунд назад и начать смешивание образцов синусоидой на определенной частоте. Затем пропустите смешанные образцы через фильтр нижних частот. Ваше разрешение тонального сигнала, микшер и разрешение по частоте LPF / ширина полосы должны совпадать, и снова вам нужно будет учитывать характеристики LPF.
Похоже, обнаружение DTMF. Стандартным методом для этого является алгоритм Гертцеля. Вам нужен один детектор Goertzel для каждой интересующей частоты, поэтому вам нужно знать частоты априори.