通过命令行将立体声声道音频文件仅转换为左声道

Converting a stereo channel audio file to left channel only, through command line

假设我有一堆 mp3 文件。我将如何使用音频软件命令行工具来完全降低音频文件一侧(右)的音量,而在音频文件的左侧留下完整的音量?然后我想将这个文件保存到一个新的 mp3 文件中。这需要完全通过命令行完成。

作为另一种方法。是否可以使用命令行音频文件工具将立体声 mp3 文件转换为单声道,然后将此单声道文件与相同长度的 "silent" 轨道合并,创建一个带声音的左耳机轨道和一个右耳机轨道-静音耳机轨道?

在这个 SO 问题中,似乎有许多方法可以实现一个相当古怪的最终目标。在第一个可能的解决方案中,我只想减小右侧的音量。在第二种可能的解决方案中,我想结合一些更常见的步骤来实现相同的最终结果。

这里的问题是:

感谢您的帮助。 Audacity 通常是我的首选,但它似乎只是 GUI。

正如评论中所建议的那样,您应该能够使用 FFmpeg 来处理您的音频文件。完全放弃一个通道会产生与首先转换为单声道不同的结果。但是,我认为两者都可以通过 FFMpeg 中的 pan 过滤器来实现。

https://trac.ffmpeg.org/wiki/AudioChannelManipulation

https://ffmpeg.org/ffmpeg-filters.html#pan

单声道衰减

  • 将 mp3 文件解码为 wav
  • 使用 pan 过滤器 100% 到一个通道创建一个新的立体声 wav 文件
  • 将生成的 wav 文件编码为 mp3

在一个通道中均匀混合两个通道,然后衰减另一个通道

  • 将 mp3 文件解码为 wav
  • 使用声像过滤器创建一个新的 wav 文件,一个通道从左到右 50%,从右到 50%,另一个通道增益为 0
  • 将生成的 wav 文件编码为 mp3

SoX 让您轻松做到这一点。
第一种情况,右声道静音:

sox test.mp3 test-rmuted.mp3 remix 1 0

第二种情况,左声道求和单声道:

sox test.mp3 test-lmono.mp3 remix 1,2 0

要进行批处理,您只需执行一个简单的 for 循环即可。
右声道静音:

for f in *.mp3
do
  basename="${f%.*}"
  echo "$basename"
  sox "$f" -t wav - remix 1 0 | \
    lame --preset standard - "00-${basename}-rmute".mp3
done

仅在左声道上求和单声道:

for f in *.mp3
do
  basename="${f%.*}"
  echo "$basename"
  sox "$f" -t wav - remix 1,2 0 | \
    lame --preset standard - "00-${basename}-lmono".mp3
done

你可以放弃LAME,像前两个例子那样用SoX编码,但我觉得这种方法更简单、更灵活。