Как правильно декодировать .wav с помощью PythonPython

Программы на Python
Ответить
Anonymous
 Как правильно декодировать .wav с помощью Python

Сообщение Anonymous »

Я пишу базовый частотный анализ аудиофайлов WAVE, но у меня возникают проблемы с преобразованием кадров WAVE в целые числа.

Вот соответствующая часть. моего кода:

Код: Выделить всё

import wave
track = wave.open('/some_path/my_audio.wav', 'r')

byt_depth = track.getsampwidth() #Byte depth of the file in BYTES
frame_rate = track.getframerate()
buf_size = 512

def byt_sum (word):
#convert a string of n bytes into an int in [0;8**n-1]
return sum( (256**k)*word[k] for k in range(len(word)) )

raw_buf = track.readframes(buf_size)
'''
One frame is a string of n bytes, where n = byt_depth.
For instance, with a 24bits-encoded file, track.readframe(1) could be:
b'\xff\xfe\xfe'.
raw_buf[n] returns an int in [0;255]
'''

sample_buf = [byt_sum(raw_buf[byt_depth*k:byt_depth*(k+1)])
- 2**(8*byt_depth-1) for k in range(buf_size)]
Проблема в том, что когда я строю sample_buf для одного синусоидального сигнала, я получаю
альтернативный, испорченный синусоидальный сигнал.
Я не могу понять, почему сигнал перекрывается сверху вниз.

Есть идеи?

P.S.: Поскольку я Я француз, мой английский довольно неуверенный. Не стесняйтесь редактировать, если есть грубые ошибки.

Подробнее здесь: https://stackoverflow.com/questions/344 ... ith-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»