Sox преобразовать в параметры параметров спектрограммы - PullRequest
0 голосов
/ 30 апреля 2018

Здесь я хочу использовать sox для преобразования файла flac в файл 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 или питон. Было бы замечательно, если бы кто-то мог ответить здесь более подробно, так как в документации в chirlu / sox не ясно указано, что это значит (или я не нашел это явно).

1 Ответ

0 голосов
/ 30 апреля 2018

Официальное руководство sox описывает параметры полностью, а исходный код здесь spectrogram.c .

Но вкратце:

−X число:

пикселей по оси X / сек; значение по умолчанию рассчитывается автоматически, чтобы соответствовать заданному или известная продолжительность звука до размера оси X, или 100 в противном случае. Если дано в сочетании с −d этот параметр влияет на ширину спектрограммы; в противном случае это влияет на продолжительность спектрограммы. num может быть от 1 (низкое временное разрешение) до 5000 (высокое временное разрешение) и не должно быть целым числом.

и

-Y номер:

Устанавливает целевую общую высоту спектрограммы. Значение по умолчанию 550 пиксели. Используя эту опцию (и по умолчанию), SoX будет выбрать высоту для отдельных каналов спектрограммы, которая является еще одним чем степень двойки, поэтому фактическая общая высота может не соответствовать данный номер.

Для -X 50 разрешение по горизонтали составляет:

dt = 1000/50 = 20 ms/pixel

Для -Y 200 наибольшая мощность 2, меньшая 200, равна 128. Предполагая частоту дискретизации 44,1 кГц, разрешение по частоте составляет:

bin_size = 44100/128 = 344.5 Hz
...