使用这款强大的 Linux 命令转换音频文件

SoX Sound Exchange 甚至可以为您的音频文件添加效果。
78 位读者喜欢这篇文章。

我从事媒体工作,当您从事任何类型的媒体工作时,您很快就会了解到标准化是一种非常有价值的工具。正如您不会尝试在不转换成分数或小数的情况下将分数添加到小数一样,我了解到组合不同格式的媒体并不理想。大多数业余级应用程序为了方便用户,使转换过程对用户不可见。然而,针对需要控制资产精细细节的用户的灵活软件,通常会让您提前将媒体转换为所需的格式。我有一些我最喜欢的转换工具,其中之一就是所谓的声音瑞士军刀SoX

安装

在 Linux 或 BSD 上,您可以从您的软件仓库或端口树安装 sox 命令(以及一些有用的符号链接)。

您也可以从其在 Sourceforge.net 上的主页安装 SoX。它不经常发布版本,但其代码库往往很稳定,因此如果您想要最新功能(例如 Opus 支持),构建起来既简单又安全。

SoX 主要提供 sox 命令,但安装还会创建一些有用的符号链接:playrecsoxi

使用 SoX 获取文件信息

SoX 读取和重写音频数据。是否存储重写的音频数据取决于您。在某些用例中,您不需要存储转换后的数据,例如,当您将输出直接发送到扬声器进行播放时。然而,在进行任何转换之前,通常最好先确定您最初处理的是什么。

要收集有关音频文件的信息,请使用 soxi 命令。这是 sox --info 的符号链接。

$ soxi countdown.mp3
Input File     : '/home/tux/countdown.mp3'
Channels       : 1
Sample Rate    : 44100
Precision      : 16-bit
Duration       : 00:00:11.21 = 494185 samples...
File Size      : 179k
Bit Rate       : 128k
Sample Encoding: MPEG audio (layer I, II or III)

此输出为您提供了音频文件编码所用的编解码器、文件长度、文件大小、采样率和声道数的良好概念。其中一些您可能认为您已经知道,但当客户将媒体带给我时,我从不相信假设。使用 soxi 验证媒体属性。

转换文件

在本例中,游戏节目倒计时的音频以 MP3 文件形式交付。虽然几乎所有编辑应用程序都接受压缩音频,但它们实际上都不会编辑压缩数据。转换正在某处发生,无论是秘密后台任务还是提示您保存副本。我通常更喜欢自己提前进行转换。这样,我可以控制我使用的格式。我可以连夜批量处理大量媒体,而不是浪费宝贵的制作时间等待编辑应用程序按需处理它们。

sox 命令旨在用于转换音频文件。sox 管道中有几个阶段

  • 输入
  • 合并
  • 效果
  • 输出

在命令语法中,效果步骤令人困惑地写在最后。这意味着管道是这样组成的

input → combine → output → effects

编码

最简单的转换命令仅涉及输入文件和输出文件。以下是将 MP3 文件转换为无损 FLAC 文件的命令

$ sox countdown.mp3 output.flac
$ soxi output.flac

Input File     : 'output.flac'
Channels       : 1
Sample Rate    : 44100
Precision      : 16-bit
Duration       : 00:00:11.18 = 493056 samples...
File Size      : 545k
Bit Rate       : 390k
Sample Encoding: 16-bit FLAC
Comment        : 'Comment=Processed by SoX'

效果

效果链在命令末尾指定。它可以在将数据发送到最终目的地之前更改音频。例如,有时音频过大会在转换期间导致问题

$ sox bad.wav bad.ogg
sox WARN sox: `bad.ogg' output clipped 126 samples; decrease volume?

应用 gain 效果通常可以解决此问题

$ sox bad.wav bad.ogg gain -1

淡入淡出

另一个有用的效果是 fade。此效果允许您定义淡入或淡出的形状,以及您希望淡入淡出持续多少秒。

这是一个使用倒抛物线的六秒淡入示例

$ sox intro.ogg intro.flac fade p 6

这会将三秒淡入应用于音频的开头,并在第八秒标记处开始淡出( intro 音乐仅 11 秒,因此在这种情况下,淡出也是三秒)

$ sox intro.ogg intro.flac fade p 3 8

不同类型的淡入淡出(正弦、线性、倒抛物线等),以及 fade 提供的选项(淡入、淡出),都在 sox 手册页中列出。

效果语法

每个效果插件都有自己的语法,因此请参阅手册页以了解如何调用每个插件的详细信息。

效果可以在一个命令中串联,至少在您想要组合它们的范围内。换句话说,没有语法可以仅在六秒淡出期间应用 flanger 效果。对于如此精确的操作,您需要一个图形声波编辑器或数字音频工作站,例如 LMMSRosegarden。但是,如果您只想应用一次效果,则可以将它们一起列在同一命令中。

此命令应用 -1 gain 效果、1.35 的 tempo stretchfade-out

$ sox intro.ogg output.flac gain -1 stretch 1.35 fade p 0 6
$ soxi output.flac

Input File     : 'output.flac'
Channels       : 1
Sample Rate    : 44100
Precision      : 16-bit
Duration       : 00:00:15.10 = 665808 samples...
File Size      : 712k
Bit Rate       : 377k
Sample Encoding: 16-bit FLAC
Comment        : 'Comment=Processed by SoX'

合并音频

SoX 还可以合并音频文件,可以通过连接或混合它们。

要将文件连接(或concatenate)到一个文件中,请在命令中提供多个输入文件

$ sox countdown.mp3 intro.ogg output.flac

在本例中,output.flac 现在包含 countdown 音频,紧随其后是 intro 音乐。

但是,如果您希望两个音轨同时相互播放,则可以使用 --combine mix 选项

$ sox --combine mix countdown.mp3 intro.ogg output.flac

然而,想象一下,两个输入文件不仅在编解码器上有所不同。人声轨道以单声道(一个声道)录制是很常见的,但音乐至少以立体声(两个声道)录制。SoX 不会默认提供解决方案,因此您必须首先自己标准化两个文件的格式。

更改音频文件

与文件名相关的选项列在其后。例如,此命令中的 --channels 选项适用于 input.wav,而不适用于 example.oggoutput.flac

$ sox --channels 2 input.wav example.ogg output.flac

这意味着选项的位置在 SoX 中非常重要。如果您在命令开头指定一个选项,您基本上只是覆盖了 SoX 从输入文件本身收集到的信息。但是,紧靠输出文件之前的选项决定了 SoX 如何写入音频数据。

要解决之前不兼容声道的问题,您可以先标准化您的输入,然后再混合

$ sox countdown.mp3 --channels 2 countdown-stereo.flac gain -1
$ soxi countdown-stereo.flac

Input File     : 'countdown-stereo.flac'
Channels       : 2
Sample Rate    : 44100
Precision      : 16-bit
Duration       : 00:00:11.18 = 493056 samples...
File Size      : 545k
Bit Rate       : 390k
Sample Encoding: 16-bit FLAC
Comment        : 'Comment=Processed by SoX'

$ sox --combine mix \
countdown-stereo.flac \
intro.ogg \
output.flac

SoX 绝对需要多个命令才能执行复杂操作,因此根据需要创建几个临时和中间文件是很正常的。

多声道音频

当然,并非所有音频都限制为一个或两个声道。如果您想将多个音频声道合并到一个文件中,您可以使用 SoX 和 --combine merge 选项来完成。

$ sox --combine merge countdown.mp3 intro.ogg output.flac
$ soxi output.flac

Input File     : 'output.flac'
Channels       : 3
[...]

轻松音频处理

使用没有可视化界面的音频工作可能看起来很奇怪,对于某些任务,SoX 肯定不是最佳工具。然而,对于许多任务,SoX 提供了一个简单而轻量级的工具包。SoX 是一个功能强大的简单命令。有了它,您可以转换音频、处理声道和波形,甚至生成您自己的声音。本文仅简要概述了其功能,因此请阅读其手册页或 在线文档,然后看看您可以创建什么。

接下来阅读什么
User profile image.
Klaatu 是 Hacker Public Radio 和 GNU World Order 的 Unix 极客和播客。

评论已关闭。

© . All rights reserved.