3

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

Я читал о sox, но, похоже, нужен профиль, который потребовал бы, чтобы я дважды прошел через sox.

Так кто-нибудь знает, как пропустить аудио источник через что-то вроде sox или ffmpeg вживую и выполнить базовую фильтрацию ветра / шума?

1 ответ1

1

Вы можете создать профиль шума для SoX с:

sox sample-input.wav --null noiseprof ~/noise.profile

Затем вы можете использовать профиль для фильтрации вашей записи:

sox recording.wav filtered.wav noisered ~/noise.profile

Это работает, потому что статический шум, который улавливает ваш микрофон, обычно зависит от ваших настроек (проводки) и, следовательно, всегда одинаков в одной и той же среде. Обратите внимание, что SoX значительно хуже, чем Audacity, при удалении шума. :(

Кроме того, вы можете использовать аудиофильтры ffmpeg, такие как highpass/lowpass, чтобы уменьшить частоты ниже /выше определенного порога, или использовать фильтр компандирования для сжатия динамического диапазона записи и /или создания шумового затвора.

Если у вас есть профиль шума, весь конвейер процесса может быть:

ffmpeg -f alsa -i hw:0,0 -af 'highpass=300, lowpass=4000' -f wav - | sox -f wav -f wav - noisered ~/noise.profile | aplay

Обратите внимание, что вы должны извлечь профиль из записи, отфильтрованной по ffmpeg, если вы используете эти фильтры.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .