Уменьшите фоновый шум и оптимизируйте речь из аудиоклипа с помощью ffmpeg

я извлекаю аудио клипы из видеофайла для распознавания речи. Эти видео приходят с мобильных / других устройств ручной работы и, следовательно, содержат много шума. Я хочу, чтобы уменьшить фоновый шум звука, так что речь, которую я передаю на мой двигатель распознавания речи ясно. Я использую ffmpeg, чтобы сделать все это, но застрял на этапе шумоподавления.

до сих пор я пробовал следующие фильтры:

ffmpeg-20140324-git-63dbba6-win64-staticbin>ffmpeg -i i nput.wav -filter_complex "highpass=f=400,lowpass=f=1800" out2.wav

ffmpeg -i i nput.wav -af "equalizer=f=1000:width_type=h:width=900:g=-10" output.wav

ffmpeg -i i nput.wav -af "bandreject=f=1200:width_type=h:width=900:g=-10" output.wav

но результаты очень неутешительные. Мои рассуждения в том, что, поскольку речь идет в диапазоне 300-3000 Гц я могу отфильтровать все другие частоты для подавления фонового шума. Что мне здесь не хватает?

кроме того, я читал о фильтрах weiner, которые могут быть использованы для улучшения речи и найдены этой но я не уверен, как использовать его.

18
задан Twisty Impersonator
27.03.2023 14:33 Количество просмотров материала 2679
Распечатать страницу

2 ответа

Если вы хотите изолировать слышимую речь, попробуйте объединить фильтр нижних частот с фильтром высоких частот. Для полезного звука я заметил, что фильтрация 200 Гц и ниже, а затем отфильтровать 3000hz и выше делает довольно хорошую работу по поддержанию полезного голосового звука.

ffmpeg -i <input_file> -af "highpass=f=200, lowpass=f=3000" <output_file>

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

23
отвечен av8r 2023-03-28 22:21

видео нет достойной аудио фильтров для шумоподавления встроенная. Audacity имеет довольно эффективный фильтр NR, но он предназначен для использования с 2-х проходной операцией с выборкой только шума, а затем ввода.

комментарии в верхней частиhttps://github.com/audacity/audacity/blob/master/src/effects/NoiseReduction.cpp объясните, как это работает. (в основном: подавите каждую ячейку FFT, которая ниже порога. Так он только препятствует сигналам до конца когда они громче, чем уровень шума в этой полосе частот. Он может делать удивительные вещи, не вызывая проблем. Это как полосовой фильтр, который адаптируется к сигналу. Так как энергия шума распространяется по всему спектру, только пропуская через несколько узких полос, он уменьшит общую энергию шума много.

см. также уменьшение шума аудио: как audacity по сравнению с другими вариантами? для получения более подробной информации о том, как это работает, и что пороговых БПФ бункеров в так или иначе, это основа и типичных коммерческих шумоподавляющих фильтров.

перенос фильтра с ffmpeg бы немного неловко. Возможно, лучше всего было бы реализовать его как фильтр с 2 входами, а не 2-полосный фильтр. Поскольку для получения профиля шума требуется всего несколько секунд, он не должен читать весь файл. И вы не должны кормить его весь звуковой поток в качестве образца шума, так или иначе. Он должен видеть образец только шума, чтобы установить пороги для каждого ящика FFT.

Так что да, 2-й вход, а не 2pass, будет иметь смысл. Но это делает его намного менее удобным в использовании, чем большинство простых фильтров. Вам понадобится куча вуду с разделением потока / извлечением временного диапазона. И, конечно, вам нужно ручное вмешательство, если у вас нет образца шума в отдельном файле, который будет подходит для нескольких входных файлов. (один образец шума от того же микрофона / установки должно быть хорошо для всех клипов из этой установки.)

7
отвечен Peter Cordes 2023-03-29 00:38

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх