Я думаю, есть несколько вариантов в зависимости от того, что вы хотите показать.
1: настройка предела Y
Самое простое решение - масштабировать ось Y.
# See docs for function setYrange
# setYRange(min, max, padding=None, update=True)
w.setRange(YRange=[min,max])
Вы можете проверить документы здесь .
То есть, если вы хотите сохранить все аудио значения такими же, как они есть в настоящее время, хотя вам действительно нужны аудио данные в терминах этих значений? Обычно аудиоданные отображаются в виде числа от -1 до +1, по крайней мере, для научных целей.
2: настроить ваши данные
Как уже говорилось ранее, аудиоданные имеют тенденцию быть наиболее полезными, когда их масштабируется от -1 до +1; Нам просто легче взглянуть на него и сразу почувствовать, правильна ли амплитуда (например, если мы тестировали программу усиления). Существует множество других библиотек Python, кроме встроенного модуля wave , который справится с этим намного проще для вас, например PySoundFile или многих других (см. Этот SO post для других методов чтения файлов .wav в Python).
В противном случае вы можете преобразовать данные, полученные из волнового модуля, в данные с плавающей запятой, используя что-то вроде этого (для кода yeeking ):
import wave
import struct
import sys
def wav_to_floats(wave_file):
w = wave.open(wave_file)
astr = w.readframes(w.getnframes())
# convert binary chunks to short
a = struct.unpack("%ih" % (w.getnframes()* w.getnchannels()), astr)
a = [float(val) / pow(2, 15) for val in a]
return a
# read the wav file specified as first command line arg
signal = wav_to_floats(sys.argv[1])
print "read "+str(len(signal))+" frames"
print "in the range "+str(min(signal))+" to "+str(min(signal))
Если возможно, использование библиотеки всегда лучше в этом случае, потому что волновой модуль в его нынешнем виде не поддерживает много вариантов использования аудио (насколько я знал, только моно 16-битное аудио) .
Примечание : Если вы преобразуете его в данные -1 в +1, вероятно, все еще стоит отрегулировать Y-предел, как описано в части 1. Просто, чтобы избежать странного масштабирования при загрузке различных файлов .wav.