Уважаемые коллеги, не подскажет ли кто-нибудь пожалуйста алгоритм, или черканет несколько строчек на С:
1) есть цифровой аудиопоток, нужно ловить в нем паузы (выставлять флаг), длительностью больше заданного порога (порядок длительности паузы - десятки мс).
2) данные представлены в виде signed int32 слов, в которых сами данные могут быть 24 или 16 бит (это заранее не известно - что тоже проблема), выровненных влево, частота дискретизации заранее известна - 48 или 96кгц.
3) это реальный музыкальный сигнал, детектировать нужно паузы межу треками, но так чтобы не детектировались паузы в музыке. я думаю, уровень шумов в паузе между треками должен быть существенно ниже уровня шумов в музыкальной паузе, (т.к. в паузе это "цифровой ноль"), поэтому выбрав соотв. образом порог срабатывания по амплитуде (например -40-50дБ) можно решить задачу.
4) лучше пропустить паузу, чем ложно детектировать когда ее на самом деле нет.
Спасибо за помощь.
|