Есть ли способ, чтобы поток pyaudio записывал только частоты от 500 до 5000 Гц?Python

Программы на Python
Anonymous
Есть ли способ, чтобы поток pyaudio записывал только частоты от 500 до 5000 Гц?

Сообщение Anonymous »

У меня есть следующий код, который принимает аудиовход, выполняет БПФ и печатает результирующий массив:

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

import numpy as np
import pyaudio as pa
import struct
import time

np.set_printoptions(threshold = np.inf)

CHUNK = 1048
FORMAT = pa.paInt16
CHANNELS = 1
RATE = 44100# in Hz

p = pa.PyAudio()

stream = p.open(
format = FORMAT,
channels = CHANNELS,
rate = RATE,
input=True,
frames_per_buffer=CHUNK
)

while 1:
data = stream.read(CHUNK)

dataInt = struct.unpack(str(CHUNK) + 'h', data)
FFT_array = np.abs(np.fft.fft(dataInt))*2/(11000*CHUNK)
print(FFT_array)

Есть ли какой-нибудь способ

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

data = stream.read(CHUNK)
могли записывать только частоты от 500 до 5000 Гц? (или любой указанный диапазон частот)
Если бы он был, это действительно помогло бы мне, поскольку эта часть занимает 0,1 секунды с более высоким значением CHUNK, поскольку оно определяет самую низкую записываемую частоту. Это означает, что если я задам значение CHUNK 22050, самая низкая частота будет 1 Гц, поэтому запись займет 1 секунду. Если бы я мог начать запись, скажем, с частотой 40 Гц, этот факт был бы незначительным. Скорость очень важна для моего приложения, как минимум 30 кадров в секунду было бы хорошо.
Я пробовал искать в Интернете и спрашивал в чате, но мне не повезло.
Если вы есть идеи, как это исправить, или найти что-нибудь в Интернете. Буду очень рад ответу.

Подробнее здесь: https://stackoverflow.com/questions/782 ... 500-to-500

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