我现在正在做的是使用 arecord 从我的麦克风录制音频并将原始输出通过管道传输到 VLC,如下所示:
arecord -r 8000 - | vlc -vvv -
Run Code Online (Sandbox Code Playgroud)
它工作得很好,除了发出的音频有很多噪音。我知道可以使用 sox 清除背景噪音,但我似乎无法找出正确的命令。当我使用“播放”只是为了测试输出(甚至没有尝试去除噪音)时,使用以下输出听起来很糟糕:
play -t raw -b 16 -c 1 -e signed -r 8000 -
Run Code Online (Sandbox Code Playgroud)
除了 sox/play 之外还有其他解决方案吗?如果我可以通过 VLC 本身做到这一点,那将是理想的。我还需要放大声音,这就是我使用 VLC 的原因。如果我能让 sox 清理音频并将输出再次通过管道返回到 VLC,那就太棒了。我怎么能做到这一点,我相信这是可能的。
我的目标是 (1) 清除所有背景噪音和 (2) 尽可能放大音频。
小智 5
这是一个使用 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 `
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4588 次 |
| 最近记录: |