LINUX.ORG.RU

Усилить фоновые звуки и шумы на записи?

 , , ,


0

1

Использую fft зануляю высокие частоты но проезжающих машин и прочего не слышно

clc;
clear;
[flute,Fs] = audioread('record.mp3');
plot(flute)
f=fft(flute);
hist(f)
count=0;
for i=1:1775856
    if f(i,1)>1 || f(i,1)<-1
        f(i,1) = 0;
        f(i,2) = 0;
        count=count+1;
    end
end
count
y=ifft(f);
audiowrite('record2.wav',y,44100);



Последнее исправление: bad_master (всего исправлений: 2)

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

no-such-file ★★★★★
()

Если вам нужен шум в паузах - используйте АРУ с нужной постоянной времени. Если хотите зашумить все - низкопороговый компрессор либо логарифмический усилитель.

PS. Если уровень шума изначально совсем уж низкий, то проще его наложить ) Иначе начнутся проблемы с качеством основного сигнала

vaddd ★☆
()
Последнее исправление: vaddd (всего исправлений: 1)
Ответ на: комментарий от vaddd

мне нужен не абстрактный шум в вакууме, а усилить звуки чтобы знать что на фоне записано, как бы полезный сигнал

bad_master
() автор топика
Последнее исправление: bad_master (всего исправлений: 1)
Ответ на: комментарий от bad_master

Очень неопределенно. Тихие звуки в длинных паузах? В коротких? На фоне другого сигнала? Разговора? Для каждого случая свой подход. А то для формулировки задачи «мне нужно усилить тихие звуки» напрашивается соответствующий ответ «увеличьте усиление».

vaddd ★☆
()
Ответ на: комментарий от bad_master

Тут, наверно, в терминах путаница. Шум - это, что искажает полезный сигнал. А тихие звуки - это как раз полезный сигнал и есть, как мне кажется, в Вашем случае. Или нет?

PeleWin
()
Ответ на: комментарий от bad_master

Вы технарь или гуманитарий? Чтобы тихий полезный сигнал усилить нужно ручечку громкости покрутить. Проблему опишите техническим языком.

vaddd ★☆
()
Ответ на: комментарий от vaddd

Проблему опишите техническим языком

Я не умею, а если вопрос не понятен, скажу лишь то что я пытаюсь уменьшить основной звук и усилить фоновые звуки

for i=1:3119088
    if f(i,1)>1 || f(i,1)<-1
        f(i,1) = f(i,1)/100;
        f(i,2) = f(i,2)/100;
        count=count+1;
    else
        f(i,1) = f(i,1)*50;
        f(i,2) = f(i,2)*50;
    end
end
Это как в кино было, детектив брал несколько плёнок оставленных злодеем и по фоновым звукам определял его местоположение, ну там звук автострады, реки и завода например.

bad_master
() автор топика
Последнее исправление: bad_master (всего исправлений: 1)
Ответ на: комментарий от bad_master

Еще раз, подетальнее. Задача в такой формулировке все равно остается неопределенной и непонятной. Способы решения задачи зависят от:

а) соотношения уровней основного сигнала и фонового,

б) длительностей пауз в основном сигнале,

в) спектров и других характеристик основного сигнала и фонового,

г) требуемой вам информации в фоновом сигнале

и могут различаться по сложности (и цене решения) на много порядков. В простейших случае задача решается максимайзерами, компресорами, логарифмическими усилителями. Для начала экспериментируйте с ними. В наиболее распространенных случаях (разговор + шум улицы) спектры пересекаются, регулировки по НЧ и ВЧ мало что дают. Закрытое окно еще больше сужает спектр нужного вам фонового сигнала, но все равно можете перед компрессированием поиграть вырезанием многополосными эквалайзерами широких участков спектра. Прочитайте например это:

https://habr.com/ru/company/ru_mts/blog/584308/?

Следующий уровень сложности - работа с шумоподавлением (разновидность active noise reduction, но вам сильно облегчает задачу то, что вы работаете с записью, а не в реальном масштабе времени). Давите шум (нужный вам фон) из вашего сигнала, получаете относительной чистый основной (видимо речь). Выравниваете его по фазе по всему спектру основного сигнала (в разных участках спектра сдвиг будет разный) и по уровню, вычитаете из первоначального сигнала, получаете подавление ненужного вам основного сигнала в зависимости от точности выравнивания в 2-5-10 и больше раз, после чего опять же компрессия. Любое шумоподавление искажает структуру шума, поэтому могут дополнительно понадобиться эксперименты с видами шумоподавления.

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

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

vaddd ★☆
()
Ответ на: комментарий от bad_master

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

Aceler ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.