readframes возвращают 2 байта в python - PullRequest
6 голосов
/ 27 мая 2011

Когда readframes() используется в python, онлайн документация говорит, что частота выборки возвращается, похоже, что она возвращает 2 байта. Я думаю, что есть 4 байта в каждом кадре:

left = 2 bytes
right = 2 bytes

Должен ли я проверить, является ли он монофоническим или стереофоническим, и является ли он стереофоническим, считывать по 2 кадра за раз, а если он монофонический, читать по 1 кадру за раз?

1 Ответ

5 голосов
/ 28 мая 2011

Волновой файл имеет:

  • частота дискретизации Wave_read.getframerate() в секунду (например, 44100, если с аудио-CD).
  • ширина выборки составляетWave_read.getsampwidth() байт (т.е. 1 для 8-битных выборок, 2 для 16-битных выборок)
  • Wave_read.getnchannels() каналов (обычно 1 для моно, 2 длястерео)

Каждый раз, когда вы делаете Wave_read.getframes(N), вы получаете N * sample_width * n_channels байт.

Итак, если вы читаете2048 кадров из 44100Гц, 16-битного стереофайла, в результате вы получите 8192 байта.

...