使用 Sound eXchange (SoX) 操作音频文件的15个超棒示例
SoX代表Sound eXange。SoX 是一个跨平台的命令行音频实用工具,适用于 Linux、Windows 和 MacOS。在处理音频和音乐文件时,它在以下方面非常有用。
- 音频文件转换器
- 编辑音频文件
- 更改音频属性
- 添加音效
- 加上许多先进的声音处理功能
一般来说,音频数据通过以下四个特征来描述:
- 速率 - 采样率以每秒采样数为单位。例如,44100/8000
- 数据大小 – 数据存储的精度。例如,8/16 位
- 数据编码——数据类型使用什么编码。例如,u-law,a-law
- 通道 - 音频数据中包含多少通道。例如,立体声 2 通道
SoX 支持 20 多种音频文件格式。要获取所有支持格式的列表,请从命令行执行 sox -h。命令行音频/音乐工具的主要优点之一是易于在脚本中使用,以在批处理模式下执行更复杂的任务。
下面提到的所有 15 个示例都可用于在 Unix、Windows 和 MacOS 上操作音频文件。确保从SoX – Sound eXchange 下载页面下载适用于您平台的相应 SoX 实用程序。
1. 将多个音频文件合并为一个文件
使用 -m 标志,sox 将两个输入文件相加以生成其输出。下面的示例添加了 first_part.wav 和 second_part.wav,将结果保留在 Whole_part.wav 中。为此,您也可以使用 soxmix 命令。
$ sox -m first_part.wav second_part.wav whole_part.wav
(or)
$ soxmix first_part.wav second_part.wav whole_part.wav
2. 提取部分音频文件
修剪可以从音频文件中修剪掉不需要的音频。
Syntax : sox old.wav new.wav trim [SECOND TO START] [SECONDS DURATION].
- SECOND TO START – 语音文件中的起点。
- SECONDS DURATION – 要删除的语音文件的持续时间。
下面的命令将从 input.wav 中提取前 10 秒并将其存储在 output.wav 中
$ sox input.wav output.wav trim 0 10
3. 使用选项 -v 增加和减少音量
选项 -v 用于更改(增加或减少)音量。
增加音量
$ sox -v 2.0 foo.wav bar.wav
降低音量
如果我们需要降低某些文件的音量,我们可以使用负数来降低它们。较低的负数会变得更软。在以下示例中,第一个命令 (-0.5) 将比第二个命令 (-0.1) 响亮
$ sox -v -0.5 srcfile.wav test05.wav
$ sox -v -0.1 srcfile.wav test01.wav
4. 获取音频文件信息
stat 选项可以提供有关给定音频文件的大量统计信息。-e 标志告诉 sox 除了统计信息之外不要生成任何输出。
$ sox foo.wav -e stat
Samples read: 3528000
Length (seconds): 40.000000
Scaled by: 2147483647.0
Maximum amplitude: 0.999969
Minimum amplitude: -1.000000
Midline amplitude: -0.000015
Mean norm: 0.217511
Mean amplitude: 0.003408
RMS amplitude: 0.283895
Maximum delta: 1.478455
Minimum delta: 0.000000
Mean delta: 0.115616
RMS delta: 0.161088
Rough frequency: 3982
Volume adjustment: 1.000
5. 播放音频歌曲
Sox 提供播放和录制声音文件的选项。此示例说明如何在 Unix、Linux 上播放音频文件。播放声音文件是通过将文件复制到设备专用文件 /dev/dsp 来完成的。以下命令播放文件music.wav: 选项-t 指定文件/dev/dsp 的类型。
$ sox music.wav -t ossdsp /dev/dsp
您也可以使用 play 命令来播放音频文件,如下所示。
Syntax :play options Filename audio_effects
$ play -r 8000 -w music.wav
6. 向后播放音频歌曲
使用“反转”效果来反转声音文件中的声音。这将反转文件并将结果存储在 output.wav 中
$ sox input.wav output.wav reverse
您也可以使用播放命令在不修改源文件的情况下反向播放歌曲,如下所示。
$ play test.wav reverse
7. 录制语音文件
'play' 和 'rec' 命令是 sox 的配套命令。/dev/dsp 是数字采样和数字录音设备。读取设备会激活 A/D 转换器以进行录音和分析。/dev/dsp 文件适用于播放和录制声音样本。
$ sox -t ossdsp /dev/dsp test.wav
您也可以使用 rec 命令来录制语音。如果 SoX 被调用为“rec”,则默认声音设备用作输入源。
$ rec -r 8000 -c 1 record_voice.wav
8. 改变声音文件的采样率
要更改声音文件的采样率,请使用选项 -r 后跟要使用的采样率,单位为赫兹。使用以下示例,将文件“old.wav”的采样率更改为 16000 Hz,并将输出写入“new.wav”
$ sox old.wav -r 16000 new.wav
9. 改变声音文件的采样大小
如果我们增加采样大小,我们将获得更好的质量。音频的样本大小通常表示为 8 位或 16 位。8 位音频更常用于录音。
- -b样本数据大小(以字节为单位)
- -w以字为单位的样本数据大小
- -l以长字为单位的样本数据大小
- -d双长字中的样本数据大小
以下示例将 8 位音频文件转换为 16 位音频文件。
$ sox -b input.wav -w output.wav
10. 改变通道数
以下示例将单声道音频文件转换为立体声。使用选项 -c 指定通道数。
$ sox mono.wav -c 2 stereo.wav
有一些方法可以将立体声文件转换为单声道。即从立体声文件中获取单个通道。
选择特定频道
这是通过使用 avg 效果和一个指示要使用的通道的选项来完成的。选项是 -l 代表左边,-r 代表右边,-f 代表前面,-b 代表后面。以下示例将提取左声道
$ sox stereo.wav -c 1 mono.wav avg -l
平均频道
$ soxstereo.wav -c 1 mono.wav avg
11. Audio Converter – 音乐文件格式转换
Sox 可用于将一种音频格式转换为另一种格式。即从一种编码(ALAW,MP3)到另一种。Sox 可以通过解析文件扩展名来识别输入和所需的输出格式。它将使用 infile.ulaw 并创建一个名为 outfile.gsm 的 GSM 编码文件。您还可以使用 sox 将wav转换为 mp3。
$ sox infile.ulaw outfile.gsm
如果文件的名称中没有扩展名,使用“-t”选项我们可以表达我们的意图。选项 -t 用于指定编码类型。
$ sox -t ulaw infile -t gsm outfile
12. 产生不同类型的声音
使用合成器效果,我们可以生成许多标准波形和噪声类型。虽然此效果用于生成音频,但仍必须提供输入文件,'-n' 选项用于指定输入文件为空文件。
$ sox -n synth len type freq
- len – 要合成的音频长度。指定时间长度的格式为 hh:mm:ss.frac
- 类型是正弦、方波、三角波、锯齿波、梯形、exp、[white]noise、pinknoise、brown-
noise 之一。默认为正弦 - f req – 合成开始/结束时的频率,以 Hz 为单位
以下示例生成一个 3 秒 8000 kHz 的音频文件,其中包含从 300 到 3300 Hz 扫描的正弦波
$ sox -r 8000 -n output.au synth 3 sine 300-3300
13. 加速音频文件中的声音
要加快或减慢文件的声音,请使用 speed 来修改文件的音高和持续时间。这提高了速度并减少了时间。默认因子是 1.0,它不会改变音频。2.0 速度加倍,因此时长减少一半,音高增加一个间隔。
Syntax: sox input.wav output.wav speed factor
$ sox input.wav output.wav speed 2.0
14. 在单个命令中对音频文件进行多次更改
默认情况下,SoX 尝试使用与输入数据相同的数据类型、采样率和通道数来写入音频数据。如果用户希望输出文件具有不同的格式,则用户必须指定格式选项。如果输出文件格式不支持与给定输入文件格式相同的数据类型、采样率或通道数,则 SoX 将自动选择它支持的最接近的值。
将 wav 转换为原始格式。以下示例在单个命令行中转换采样率、采样大小、通道。
$ sox -r 8000 -w -c 1 -t wav source -r 16000 -b -c 2 -t raw destination
15. 将原始音频文件转换为 MP3 音乐文件
没有办法直接将原始文件转换为 mp3 文件,因为 mp3 需要来自原始文件的压缩信息。首先我们需要将raw转换成wav。然后将 wav 转换为 mp3。在下面的示例中,选项 -h 表示高质量。
将原始格式转换为 Wav 格式:
$ sox -w -c 2 -r 8000 audio1.raw audio1.wav
将 Wav 格式转换为 MP3 格式:
$ lame -h audio1.wav audio1.mp3
- 点赞
- 收藏
- 关注作者
评论(0)