【问题标题】:sox convert to spectogram parameters meaningsox 转换为频谱图参数含义
【发布时间】:2018-04-30 03:44:57
【问题描述】:

在这里,我想使用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 中的文档没有明确说明它的含义(或者我没有明确找到它)。

【问题讨论】:

    标签: sox


    【解决方案1】:

    官方sox manual对参数进行了完整的描述,源码在这里spectrogram.c

    但简而言之:

    -X个数:

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

    -Y 数量:

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

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

    dt = 1000/50 = 20 ms/pixel
    

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

    bin_size = 44100/128 = 344.5 Hz
    

    【讨论】:

    • 我刚刚注意到-Y 会选择落在2^n 的频率范围。这就是为什么它达到 128 而不是 50。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 2013-06-17
    • 2018-07-19
    • 2020-06-23
    • 1970-01-01
    相关资源
    最近更新 更多