#python #audio
Вопрос:
извините, если это не имеет смысла, в основном у меня есть куча данных, поступающих в список с 1024 элементами. Что я хочу сделать, так это извлечь из них низкочастотные, однако я точно не знаю, как работает эта аудиосистема.
Что у меня есть:
wf = wave.open('song.wav', 'rb')
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True)
data = wf.readframes(CHUNK)
while len(data) > 0:
stream.write(data)
data = wf.readframes(CHUNK)
decoded = numpy.frombuffer(data, dtype=numpy.int16)
print(decoded)
while len(data) > 0:
stream.write(data)
data = wf.readframes(CHUNK)
decoded = numpy.frombuffer(data, dtype=numpy.int16)
print(decoded)
В настоящее время вывод выглядит следующим образом:
[ 53 225 -496 ... 2328 384 2363]
[ 597 2091 757 ... -235 -146 -304]
[ 190 -146 478 ... -1574 2376 -2444]
[ 2100 -3066 1491 ... -939 -174 -127]
[ -353 736 -258 ... -1723 -707 -1836]
[-1257 -2033 -1548 ... -2535 3562 -2650]
[ 1807 -2672 131 ... 382 3786 -1292]
[ 4523 -2838 4932 ... 2692 -1329 3022]
То, что я ищу, — это низкочастотные биты, опять же, я не уверен, как это точно работает, поэтому я хотел бы обратиться к эксперту!
Комментарии:
1. Чтобы получить частоты, вы должны преобразовать свой волновой сигнал (временная область) в спектр (частотная область) с помощью FFT (быстрое преобразование Фурье). Для этого вы можете использовать
Numpy
или, возможно, самым простым является использованиеlibrosa
2. Разберусь в этом, спасибо за информацию!