Я использую микрофон с PyAudio для визуализации, которая реагирует на звук. Я заметил много шума в нижней части, который сохраняется даже при выключенном микрофоне. Я понятия не имею, как это возможно. Микрофон подключен через аудиоразъем (?).
Вот код, который я использую:
class Sound:
def __init__(self, CHUNK=2048, FORMAT=pyaudio.paInt16, CHANNELS=1, RATE=44100):
self.CHUNK = CHUNK
self.pa = pyaudio.PyAudio()
self.stream = self.pa.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK)
self.previous_bands = np.random.rand(8)
self.gain = 0.05
self.alpha = 0.8
self.sin = True
self.amplitudes = np.abs(np.random.rand(8))*0
self.frequencies = np.abs(np.random.rand(8))*0
def read_audio(self):
while True:
data = self.stream.read(self.CHUNK)
decoded = np.fromstring(data, dtype=np.int16)
frequencies = np.fft.fft(decoded)
current_bins = self.bands(np.abs(frequencies[:int(self.CHUNK/2)]), self.sin, self.amplitudes, self.frequencies)
yield current_bins
def bands(self, amplitudes, sin, sin_amplitudes, sin_frequencies):
bands = np.zeros(8, dtype=np.float32)
bands[0] = np.sum(amplitudes[0:4]) * 0.1
bands[1] = np.sum(amplitudes[4:12]) * 0.2
bands[2] = np.sum(amplitudes[12:28]) * 0.3
bands[3] = np.sum(amplitudes[28:60])
bands[4] = np.sum(amplitudes[60:124])
bands[5] = np.sum(amplitudes[124:252])
bands[6] = np.sum(amplitudes[252:508])
bands[7] = np.sum(amplitudes[508:])
return bands
В полосах от 0 до 2 много шума, тогда как другие полосы чисты, когда микрофон выключен.