sox转换为谱图参数含义

时间:2018-04-30 03:44:57

标签: sox

在这里,我想使用sox将flac文件转换为Spectogram png文件。当我想转换.flac文件时,我可以使用以下命令

sox output.flac -n spectrogram -r -o a.png

如果我想转换成N x 129像素的光谱图,我可以使用以下命令

sox output.flac -n spectrogram -Y 200 -X 50 -m -r -o spectogram.png

但是,我并不完全明白-Y 200-X 50参数是什么意思,即有没有办法可以将这些参数转换为采样频率,时间段(以毫秒为单位)以及频率像在Matlab或Python中一样。如果有人可以在这里详细回答,那将是很好的,因为chirlu/sox中的文档没有明确说明它的含义(或者我没有明确地找到它)。

1 个答案:

答案 0 :(得分:2)

官方sox manual完整地描述了参数,源代码在这里spectrogram.c

但简单地说:

  

-X num:

     

X轴像素/秒;默认值是自动计算以适合给定的   或已知的X轴大小的音频持续时间,否则为100。如果给出   与-d一起使用时,此选项会影响。的宽度   频谱;否则,它会影响频谱图的持续时间。   num可以是1(低时间分辨率)到5000(高时间分辨率)   并且不必是整数。

  

-Y num:

     

设置光谱图的目标总高度。默认值为550   像素。使用此选项(默认情况下),SoX将   为一个光谱图通道选择一个高度   比一个2的幂,所以实际的总高度可能会低于   给定的数字。

对于-X 50,水平时间分辨率为:

dt = 1000/50 = 20 ms/pixel

对于-Y 200,小于200的最大功率为128.假设采样率为44.1 kHz,则频率分辨率为:

bin_size = 44100/128 = 344.5 Hz