PyAudio регистрирует звук, когда микрофон не подключен - PullRequest
0 голосов
/ 12 января 2020

Я использую микрофон с 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 много шума, тогда как другие полосы чисты, когда микрофон выключен.

...