Linux 音频命令——SOX 调节音量

发布时间 2023-10-16 21:34:11作者: FBshark

一、sox 如何调节音量

步骤一:查看音量可以最大 调整值【Volume adjustment】

sox demo.wav -n stat
结果为:
Samples read:             78031
Length (seconds):      4.876938
Scaled by:         2147483647.0
Maximum amplitude:     0.159882
Minimum amplitude:    -0.134613
Midline amplitude:     0.012634
Mean    norm:          0.016386
Mean    amplitude:    -0.000025
RMS     amplitude:     0.024805
Maximum delta:         0.076752
Minimum delta:         0.000000
Mean    delta:         0.004386
RMS     delta:         0.008032
Rough   frequency:          824
Volume adjustment:        6.255

步骤2: 设置音量因子,生成另一个文件

# 调整音频音量缩小0.8,(大于1为扩大)
sox -v 0.8 demo.wav output.wav

除了采用步骤一、二这种方法,或者也可使用以下两条命令:

# 以 sox foo.wav -n stat -v 命令返回的数字作为放大倍数,将最大化 foo.wav 的音量而不至于出现削波
sox foo.wav -n stat -v 2> vc
sox -v `cat vc` foo.wav foo-maxed.wav

 

二、 sox 相关知识扩展

  SoX(即 Sound eXchange)是一个跨平台(Windows,Linux,MacOS 等)的命令行实用程序,可以将各种格式的音频文件转换为需要的其他格式。SoX 还可以对输入的音频文件应用各种效果,也支持在大多数平台上播放和录制音频文件。

Windows下载链接:https://sourceforge.net/projects/sox/files/sox/

  SoX  可以读取写入常见格式的音频文件,并在此过程中选择性的加入一些声音效果。可以组合多个输入源及合成音效,在许多系统上也可以作为音频播放器多轨录音机使用。
SoX 工具在大部分 Linux 系统上都可以直接通过软件包管理器安装

sudo apt-get install sox # Linux
brew install sox  # Mac 系统

 

SoX 处理音频的基本流程如下:

  Input(s) -> Combiner -> Effects -> Output(s)

SoX 工具的所有功能都可以通过一命令及相应的选项实现。它同时提供了 play 命令用于播放音频文件,rec 命令用于录制音频,以及 soxi 命令用于获取音频的文件头中包含的信息。

上述几个命令的基本格式如下:

复制代码
SYNOPSIS
       sox [global-options] [format-options] infile1
            [[format-options] infile2] ... [format-options] outfile
            [effect [effect-options]] ...

       play [global-options] [format-options] infile1
            [[format-options] infile2] ... [format-options]
            [effect [effect-options]] ...

       rec [global-options] [format-options] outfile
            [effect [effect-options]] ...
       
       soxi [-V[level]] [-T] [-t|-r|-c|-s|-d|-D|-b|-B|-p|-e|-a] infile1 ...
复制代码

 

 

基本使用

一、获取音频元数据
  soxi 或 sox --i 命令可以通过分析音频文件的文件头,获取其元数据(如通道数、采样率、编码等)。
复制代码
soxi Faded.wav
'''
Input File     : 'Faded.wav'
Channels       : 2
Sample Rate    : 44100
Precision      : 16-bit
Duration       : 00:03:32.63 = 9376836 samples = 15947 CDDA sectors
File Size      : 37.5M
Bit Rate       : 1.41M
Sample Encoding: 16-bit Signed Integer PCM
'''
复制代码

 

二、获取音频的统计信息

  使用 sox <inputfile> -n stat 命令获取某音频文件的统计信息。

  音频数据主要有5个属性

  • 采样率(sample rate):指声音由模拟信号转换成数字信号的过程中,每秒从连续信号中提取的用于组成离散信号的样本个数。 音频CD所用的采样率为 44100 Hz,数字音频磁带和许多计算机系统使用 48000 Hz,专业级音频系统通常使用 96000 Hz。
  • 采样大小(sample size 或 Precision):音频采样时用于存储每个样本的数据位数(bits)。如今 16 bit 的采样大小已被广泛使用,24 bit 主要用于专业音频领域。
  • 编码格式(data encoding):即每个音频样本的表示(即“编码”)方式。常用的编码类型包括 floating-point、μ-law、ADPCM、singed-integer PCM、MP3 和 FLAC 等。
  • 通道(channel):即文件中包含的音频通道的数量。其中单声道(mono)和双声道(stereo)是最常见的两种,“环绕声”音频(Surround sound)通常包含六个或更多声道。
  • 比特率(Bit Rate):表示一个单位时间内编码音频信号占用的存储空间大小, 它的数值一般取决于所有的上述四个参数。 

  示例如下:

复制代码
sox Faded.wav -n stat
'''
Samples read:          18753672
Length (seconds):    212.626667
Scaled by:         2147483647.0
Maximum amplitude:     0.977417
Minimum amplitude:    -0.977478
Midline amplitude:    -0.000031
Mean    norm:          0.229415
Mean    amplitude:    -0.000006
RMS     amplitude:     0.302594
Maximum delta:         1.765564
Minimum delta:         0.000000
Mean    delta:         0.202369
RMS     delta:         0.273320
Rough   frequency:         6339
Volume adjustment:        1.023
'''
复制代码

 

三、播放与录制

  play 和 rec 命令提供了最基本的播放和录制功能。

复制代码
play existing-file.wav # 播放
rec new-file.wav # 录制

# 上述命令等同于 sox 命令的如下形式:
sox existing-file.wav −d # 播放
sox −d new-file.wav # 录制
# -d 选项用于指定播放或录制时使用的音频设备,不指定时则表示使用默认设备。 
复制代码

 

 

 

参考资料:

1.《 Linux 对音频万能处理的命令——SOX》

2. https://blog.csdn.net/zhulinniao/article/details/108869700/