|
TConst = 0.98;
MinLevel=100/32768;
signal = wavread('data.wav')';level=0;
for cnt=1:length(signal)
level=level*TConst;
if abs(signal(cnt)) > level
level=abs(signal(cnt));
end
lev(cnt)=level;
endlev(find(lev < MinLevel))=MinLevel;
sigout = signal .* (1 ./ lev);
Тута пиковый детектор (то что в цикле). И wav-файло считается моно априори - проверок на стерео не делал (надо откоцать второй канал чтоб работало). Переделать на среднекватричный или средний пять секунд. Шумодав - ну вариантов тута море. От тупого задавливания слабых сигналов до фильтров с переменной частотой среза или шумодавления через wavelet-декомпозицию. Точнее задачку поставь, мож скриптик и родится :)))
E-mail: info@telesys.ru