SOX命令:音频位深度、采样率以及码率

(一)位深度(bit-per-sample)。位深度也叫采样位深,音频的位深度决定动态范围。

我们常见的16Bit(16比特),可以记录大概96分贝的动态范围。那么,您可以大概知道,每一个比特大约可以记录6分贝的声音。同理,20Bit可记录的动态范围大概就是120dB;24Bit就大概是144dB。

假如,我们定义0dB为峰值,那么声音振幅以向下延伸计算,那么,CD音频可的动态范围就是"-96dB~0dB。",依次类推,24Bit的HD-Audio高清音频的的动态范围就是"-144dB~0dB。"。由此可见,位深度较高时,有更大的动态范围可利用,可以记录更低电平的细节。

44分贝 - 属于人类可以接受的程度 
55分贝 - 开始感觉到烦 
60分贝 - 开始没有睡意 
70分贝 - 令人精神紧张 
85分贝 - 长时间让人无法接受而捂住耳朵 
100分贝 - 可让你你的耳朵暂时失去听觉 
120分贝 - 可以瞬间刺穿你的耳膜 
160分贝 - 碎玻璃 
200分贝 - 人类死亡


(二)采样频率(sample rate)


采样频率最直观的影响是什么?是影响声音的频率范围表现力,采样频率越高,能表现的频率范围就越大。44.1KHz采样频率,可以表现的频率范围是0Hz-22050Hz;48KHz采样频率可以表现的频率范围就是0Hz-24000Hz;96KHz采样频率可以表现的频率范围是0Hz-48000Hz。人耳能听到的平均频率范围,大概是20Hz-20000Hz。


综合以上两条,那么,假如您看到一个参数:

16Bit 44.1KHz,代表这个数字音频能够表现"96dB的动态范围"和"0赫兹-22050赫兹"的频率范围;

24Bit 48KHz,代表这个数字音频能够表现"144dB的动态范围"和"0赫兹-24000赫兹"的频率范围。

Linux下用sox修改wav文件的采样率:

1,将2.wav文件的采样率修改为16000HZ

sox   2.wav   -r   16000  2R.wav

 

2.将当前文件夹下的wav文件批量修改为16000HZ

#!/bin/bash
for x in ./*.wav
do 
  b=${x##*/}
  sox $b -r 16000 tmp_$b
  rm -rf $b
  mv tmp_$b $b
done



(三)音频位速,也叫码率,或者比特率。


位速是指在一个数据流中每秒钟能通过的信息量,也可以理解为:每秒钟用多少比特的数据量去表示。

原则上,音频位速越高质量越好。

不过,如果是有损压缩音频,不同的压缩算法,即使位速相同,也会导致音质结果完全不同。

典型代表:96kbps的WMA音频格式的音质明显要比96kbps的MP3音质好。为什么会这样呢?因为不同的压缩算法,对数据的利用率不同而造成的差异。再举例,假如MP3压缩至48kbps以下,已经惨不忍睹,而如果是AAC音频格式,同样是48kbps的位速下,音质明显比MP3好。

而对于无损压缩音频,即使位速完全不同,但是最后的音质却相同。比如把同一个WAV文件分别压缩成FLAC格式和APE格式,得到的文件,位速是不太相同的,但是音质却是一样的。即使是同一种格式,压缩级别不同,位速也完全不同,可是最后的结果,音质还是一样(但编码解码时,CPU占用率不同,编码时间也不同)。


附Linux下sox音频处理指令:

  • 查看音频信息
soxi a.wav
sox a.wav -n stat
  • 修改频率、通道数、位深
sox infile.wav -r 48k -c 1 -b 16 outfile.wav
  • wav转为raw数据
sox in.wav -b 16 -e signed-integer -c 1 -r 48k -t raw out.raw
  • raw转为wav,此时需要指明raw文件的bit rate encode 不然sox识别不了
    也可以同时修改通道数
sox -b 16 -e signed-integer -c 1 -r 48k -t raw out.raw out.wav
sox -t raw -r 16000 -e signed-integer -b 16 -c3 raw.pcm out.wav remix 1 2
  • 两个单通道合成一个立体声
sox -M input.l.wav input.r.wav output.wav
  • 提取指定通道的数据,可以任意变换顺序
sox in.wav out.wav remix 1
sox in.wav out.wav remix 1 2
sox in.wav out.wav remix 3 2
  • trim 切割音频,也可以指定区段播放
sox in.wav out.wav trim 0 10
play in.wav trim 12:34 =15:00 -2:00


 

你可能感兴趣的:(Kaldi学习)