Как я могу получить доступ к 4 внешним проводным микрофонам из Python? - PullRequest
0 голосов
/ 04 ноября 2019

Я хочу получить доступ к 4 внешним проводным микрофонам из моего скрипта Python. Мне удалось получить доступ к встроенному микрофону моего ноутбука, но теперь я хочу получить доступ к внешнему микрофону

Я получил доступ к микрофону моего ноутбука

import pyaudio
import numpy as np
import time
import wave



# open stream
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100

CHUNK = 100 # RATE / number of updates per second

RECORD_SECONDS = 1


# use a Blackman window
window = np.blackman(CHUNK)

x = 0



def soundPlot(stream,y):
    t1=time.time()
    data = stream.read(CHUNK, exception_on_overflow=False)
    waveData = wave.struct.unpack("%dh"%(CHUNK), data)
    npArrayData = np.array(waveData)
    indata = npArrayData*window

    fftData=np.abs(np.fft.rfft(indata))
    fftTime=np.fft.rfftfreq(CHUNK, 1./RATE)
    which = fftData[1:].argmax() + 1

   # print("took %.02f ms"%((time.time()-t1)*1000))
    # use quadratic interpolation around the max
    if which != len(fftData)-1:
        y0,y1,y2 = np.log(fftData[which-1:which+2:])
        x1 = (y2 - y0) * .5 / (2 * y1 - y2 - y0)
        # find the frequency and output it
        thefreq = (which+x1)*RATE/CHUNK

        if thefreq>19400 and thefreq<19415:
            print ("The freq is %f Hz." % (thefreq),y)
            y=y+1
    else:
        thefreq = which*RATE/CHUNK

        if thefreq>19400 and thefreq<19415:
            print ("The freq is %f Hz." % (thefreq),y)
            y=y+1

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

y=0    
while True:
    y=y+1
    soundPlot(stream,y)

stream.stop_stream()
stream.close()
p.terminate()

Это код, с которого я печатаю частоты, которыемежду 19400 и 19415. В настоящее время я использую микрофон моего ноутбука. Теперь я хочу получить доступ к внешнему проводному микрофону.

...