需要使用 sox 清除音频噪音

需要使用 sox 清除音频噪音

我现在正在做的是使用 arecord 从我的麦克风录制音频,然后将原始输出传输到 VLC,如下所示:

arecord -r 8000 - | vlc -vvv - 

效果很好,只是输出的音频有很多噪音。我知道可以使用 sox 清除背景噪音,但我似乎无法找到正确的命令。当我使用“播放”来测试输出时(甚至没有尝试消除噪音),使用以下输出听起来很糟糕:

play -t raw -b 16 -c 1 -e signed -r 8000 -

除了 sox/play 还有其他解决方案吗?如果我可以通过 VLC 本身做到这一点,那就太理想了。我还需要放大声音,这就是我使用 VLC 的原因。如果我可以让 sox 清理音频并将输出再次传送回 VLC,那就太棒了。我该如何做到这一点,我相信这是可能的。

我的目标是(1)清除所有背景噪音和(2)尽可能放大音频。

答案1

下面是一个使用 sox 修复声音的 bash 脚本:

#!/bin/sh

# This script shows using several
# effects in combination to normalise and trim voice recordings that
# may have been recorded using different microphones, with differing
# background noise etc.

SOX=/usr/bin/sox

if [ $# -lt 2 ]; then
  echo "Usage: $0 infile outfile"
  exit 1
fi

$SOX "/tmp/tmp_audio_leveled.wav" -n trim 0 0.5  noiseprof newprofile
$SOX "/tmp/tmp_audio_leveled.wav" "$2" noisered newprofile

$SOX "$1" "/tmp/tmp_audio_leveled.wav" \
    remix - \
    highpass 100 \
    norm \
    compand 0.05,0.2 6:-54,-90,-36,-36,-24,-24,0,-12 0 -90 0.1 \
    vad -T 0.6 -p 0.2 -t 5 \
    fade 0.1 \
    reverse \
    vad -T 0.6 -p 0.2 -t 5 \
    fade 0.1 \
    reverse \
    norm -0.5

相关内容