реклама на сайте
подробности

 
 
> Выделение пауз в цифровом аудиосигнале
Allregia
сообщение Jul 1 2013, 21:22
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Уважаемые коллеги, не подскажет ли кто-нибудь пожалуйста алгоритм, или черканет несколько строчек на С:

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

2) данные представлены в виде signed int32 слов, в которых сами данные могут быть 24 или 16 бит (это заранее не известно - что тоже проблема), выровненных влево, частота дискретизации заранее известна - 48 или 96кгц.

3) это реальный музыкальный сигнал, детектировать нужно паузы межу треками, но так чтобы не детектировались паузы в музыке. я думаю, уровень шумов в паузе между треками должен быть существенно ниже уровня шумов в музыкальной паузе, (т.к. в паузе это "цифровой ноль"), поэтому выбрав соотв. образом порог срабатывания по амплитуде (например -40-50дБ) можно решить задачу.

4) лучше пропустить паузу, чем ложно детектировать когда ее на самом деле нет.

Спасибо за помощь.

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zöner
сообщение Jul 7 2013, 08:10
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 195
Регистрация: 16-02-12
Пользователь №: 70 299



да, чем не устроил простейший пиковый детектор ?
для надежности можно добавить скользящий фильтрик от случайных выбросов, и гистерезис.
Go to the top of the page
 
+Quote Post
Allregia
сообщение Jul 7 2013, 10:17
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(zцner @ Jul 7 2013, 10:10) *
да, чем не устроил простейший пиковый детектор ?


Уже устроил sm.gif

Цитата
для надежности можно добавить скользящий фильтрик от случайных выбросов, и гистерезис.


Я сделал как писал выше - HPF для устранения постоянки, затем ABS ("выпрямитель"), затем LPF для сглаживания.
Только LPF я сделал с разными постоянными времени для нарастания (малое тау) и спада сигнала (большое тау).
Затем если сигнал ниже порога в течение заданного времени - выставляю флаг "пауза", как только сигнал выше порога - сразу сбрасываю этот флаг.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 15th June 2025 - 18:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01389 секунд с 7
ELECTRONIX ©2004-2016