def __init__(self, displaySignal): threading.Thread.__init__(self) """pyaudio open the sound card""" self.p = pyaudio.PyAudio() print pyaudio.get_portaudio_version_text() print "(portaduio version:", pyaudio.get_portaudio_version(), ")" self.audio_data = 0 self.displaySignal = displaySignal self.c = SlotCommunicate() try: self.in_stream = self.p.open(format=cfg.PYAUDIO_FORMAT_INT16, channels = cfg.SOUND_CARD_CHANNELS, rate = cfg.SOUND_CARD_RATE, input= True, frames_per_buffer = cfg.SOUND_CARD_CHUNK) self.out_stream = self.p.open(format = cfg.PYAUDIO_FORMAT_INT16, channels = cfg.SOUND_CARD_CHANNELS, rate = cfg.SOUND_CARD_RATE, output = True) print "open sound card succ. Sound card rate is: ", cfg.SOUND_CARD_RATE except: print "open sound card failure!"
def __str__(self): s = _Device.__str__(self) s += 'portaudio : %s %s\n' %(pyaudio.get_portaudio_version(), pyaudio.get_portaudio_version_text()) s += 'pyaudio : %s\n' %pyaudio.__version__ s += 'output device : id %i, %s\n' %(self._index_out, self._device_out) s += 'input device : id %i, %s\n' %(self._index_in, self._device_in) return s
def find_device(): print("=" * 90) print("PortAudio System Info:") print("=" * 90) print("Version: %d" % pyaudio.get_portaudio_version()) print("Version Text: %s" % pyaudio.get_portaudio_version_text()) print("Number of Host APIs: %d" % max_apis) print("Number of Devices : %d\n" % max_devs) Found = 0 # Device found? (1 = Yes / 0 = No) #for each audio device, determine if is an input or an output and add it to the appropriate list and dictionary for i in range(0, numdevices): if p.get_device_info_by_host_api_device_index( 0, i).get('maxInputChannels') > 0: print(" Input Device id {0} - {1}".format( i, p.get_device_info_by_host_api_device_index(0, i).get('name'))) if 'Audio' in str( p.get_device_info_by_host_api_device_index(0, i).get('name')): Found = 1 DEVICE = i if p.get_device_info_by_host_api_device_index( 0, i).get('maxOutputChannels') > 0: print("Output Device id {0} - {1}".format( i, p.get_device_info_by_host_api_device_index(0, i).get('name'))) if Found == 1: # Manually using the device index of Samson Microphone devinfo = p.get_device_info_by_index(DEVICE) print('\nSelected device is: {0}\n'.format(devinfo.get('name'))) try: if p.is_format_supported( RATE, # Sample rate input_device=devinfo["index"], # Which device to select input_channels=devinfo[ 'maxInputChannels'], # Number of channels input_format=FORMAT): # Default #output_format=FORMAT): print('\nSupported Device -{0}- has -{1}- Channels\n'.format( str(devinfo["index"]), str(devinfo['maxInputChannels']))) #print ('\nSupported Device -{0}- has -{1}- Channels\n'.format(str(devinfo["index"]),str(devinfo['maxInputChannels']))) except ValueError: print("\n16 bit Format is NOT supported!?!") else: print("\nNo Audio device found... Exit for now") sys.exit() return devinfo # return all of the Audio Devices specifications
buf[-FRAME_SIZE:] = np.fromstring( stream.read(FRAME_SIZE, exception_on_overflow=False), np.int16) # Run the FFT on the windowed buffer fft = np.fft.rfft(buf * window) # Get frequency of maximum response in range freq = (np.abs(fft[imin:imax]).argmax() + imin) * FREQ_STEP n = freq_to_number(freq) n0 = int(round(n)) # Console output once we have a full buffer num_frames += 1 pyaudio.get_portaudio_version() if num_frames >= FRAMES_PER_FFT: print('freq: {:9.4f} Hz note: {:>3s} {:+.2f}'.format( freq, note_name(n0), n - n0)) # # D4 if (note_name(n0), n - n0) < (Das_ist_ein_D4): print(mit) DasBLESignal_Rechts() elif (note_name(n0), n - n0) > (Das_ist_ein_D4): print(gegen) DasBLESignal_Links() #BLE Signal else: E += 1
support rates. """ import pyaudio standard_sample_rates = [ 8000.0, 9600.0, 11025.0, 12000.0, 16000.0, 22050.0, 24000.0, 32000.0, 44100.0, 48000.0, 88200.0, 96000.0, 192000.0 ] p = pyaudio.PyAudio() max_apis = p.get_host_api_count() max_devs = p.get_device_count() print("\nPortAudio System Info:\n======================") print("Version: %d" % pyaudio.get_portaudio_version()) print("Version Text: %s" % pyaudio.get_portaudio_version_text()) print("Number of Host APIs: %d" % max_apis) print("Number of Devices : %d" % max_devs) print("\nHost APIs:\n==========") for i in range(max_apis): apiinfo = p.get_host_api_info_by_index(i) for k in list(apiinfo.items()): print("%s: %s" % k) print("--------------------------") print("\nDevices:\n========") for i in range(max_devs):
def TonG(): # GPIO.setmode(GPIO.BOARD) r = s_r.Recognizer() my_mic = s_r.Microphone(device_index=0) print(my_mic) m1e = 26 m2e = 24 m3e = 22 GPIO.setmode(GPIO.BOARD) GPIO.setup(m1e,GPIO.OUT) GPIO.setup(m2e,GPIO.OUT) GPIO.setup(m3e,GPIO.OUT) Das_ist_ein_G4 = ('G4.583333333333333', 0.013800740096982622) Das_ist_ein_G2 = ('D4.166666666666667', 0.023449495698208978) gegen = "gegen den Uhrzeiger" mit= "mit dem Uhrzeiger" DieZeit = 1 PerfekteNote = 9 WieOftDieFlascheNoteGepsieltWerdenDamitSieEinSiganlAbgiebt = 0 A = 0 B = 0 C = 0 D = 0 E = 0 F = 0 G = 0 H = 0 I = 0 J = 0 K = 0 A1 = 0 A2 = 0 A1R = 0 A2R = 0 C1 = 0 C2 = 0 C1R = 0 C2R = 0 D1 = 0 D2 = 0 D1R = 0 D2R = 0 E1 = 0 E2 = 0 F1 = 0 F2 = 0 F1R = 0 F2R = 0 G1 = 0 G2 = 0 G1R = 0 G2R = 0 NOTE_MIN = 60 # C4 NOTE_MAX = 69 # A4 FSAMP = 48000 # Sampling frequency in Hz FRAME_SIZE = 2048 # How many samples per frame? FRAMES_PER_FFT = 16 # FFT takes average across how many frames? SAMPLES_PER_FFT = FRAME_SIZE*FRAMES_PER_FFT FREQ_STEP = float(FSAMP)/SAMPLES_PER_FFT NOTE_NAMES = 'C C# D D# E F F# G G# A A# B'.split() def freq_to_number(f): return 69 + 12*np.log2(f/440.0) def number_to_freq(n): return 440 * 2.0**((n-69)/12.0) def note_name(n): return NOTE_NAMES[n % 12] + str(n/12 - 1) def note_to_fftbin(n): return number_to_freq(n)/FREQ_STEP imin = max(0, int(np.floor(note_to_fftbin(NOTE_MIN-1)))) imax = min(SAMPLES_PER_FFT, int(np.ceil(note_to_fftbin(NOTE_MAX+1)))) buf = np.zeros(SAMPLES_PER_FFT, dtype=np.float32) # Ursprügnlich war stand da ... .float32 (mit float16 gieng alles gut) num_frames = 0 # Initialize audio stream = pyaudio.PyAudio().open(format=pyaudio.paInt16, channels=1, rate=FSAMP, input=True, frames_per_buffer=FRAME_SIZE) freq1 = 440.08 window = 0.5 * (1 - np.cos(np.linspace(0, 2*np.pi, SAMPLES_PER_FFT, False))) # Print initial text print ('sampling at', FSAMP, 'Hz with max resolution of', FREQ_STEP, 'Hz') while stream.is_active(): buf[:-FRAME_SIZE] = buf[FRAME_SIZE:] buf[-FRAME_SIZE:] = np.fromstring(stream.read(FRAME_SIZE, exception_on_overflow = False), np.int16) # Run the FFT on the windowed buffer fft = np.fft.rfft(buf * window) # Get frequency of maximum response in range freq = (np.abs(fft[imin:imax]).argmax() + imin) * FREQ_STEP n = freq_to_number(freq) n0 = int(round(n)) # Console output once we have a full buffer num_frames += 1 pyaudio.get_portaudio_version() if num_frames >= FRAMES_PER_FFT: print ('freq: {:9.4f} Hz note: {:>3s} {:+.2f}'.format( freq, note_name(n0), n-n0)) # G if (note_name(n0), n-n0) < (Das_ist_ein_G4): print (mit) if(temp1==1): GPIO.output(in1,GPIO.HIGH) GPIO.output(in2,GPIO.LOW) elif (note_name(n0), n-n0) > (Das_ist_ein_G4): print (gegen) if(temp1==1): GPIO.output(in1,GPIO.LOW) GPIO.output(in2,GPIO.HIGH) else: J += 1 print('Super das ist ein Perfektes G') if J <= PerfekteNote: print (note_name(n0), n-n0) else: break # G2 if (note_name(n0), n-n0) < (Das_ist_ein_G2): print (mit) GPIO.output(m1e,GPIO.HIGH) GPIO.output(m2e,GPIO.LOW) GPIO.output(m3e,GPIO.HIGH) elif (note_name(n0), n-n0) > (Das_ist_ein_G2): print (gegen) GPIO.output(m2e,GPIO.HIGH) GPIO.output(m3e,GPIO.LOW) else: J += 1 print('Super das ist ein Perfektes G') if J <= PerfekteNote: print (note_name(n0), n-n0) GPIO.output(m3e,GPIO.LOW) GPIO.cleanup() else: break
import pyaudio if __name__ == '__main__': standard_sample_rates = [8000.0, 9600.0, 11025.0, 12000.0, 16000.0, 22050.0, 24000.0, 32000.0, 44100.0, 48000.0, 88200.0, 96000.0, 192000.0] p = pyaudio.PyAudio() max_apis = p.get_host_api_count() max_devs = p.get_device_count() print "PortAudio System Info:" print "=" * 120 print "Version: %d" % pyaudio.get_portaudio_version() print "Version Text: %s" % pyaudio.get_portaudio_version_text() print "Number of Host APIs: %d" % max_apis print "Number of Devices : %d" % max_devs print "\nHost APIs:\n==========" for i in range(max_apis): apiinfo = p.get_host_api_info_by_index(i) for k in apiinfo.items(): print "%s: %s" % k print "--------------------------" print "\nDevices:\n========" for i in range(max_devs):
def TonA4(): r = s_r.Recognizer() my_mic = s_r.Microphone(device_index=1) # in die Klammer (device_index=0) print(my_mic) m1 = 7 m2 = 5 m3 = 3 GPIO.setmode(GPIO.BOARD) GPIO.setup(m1, GPIO.OUT) GPIO.setup(m2, GPIO.OUT) GPIO.setup(m3, GPIO.OUT) Das_ist_ein_A4 = ('A4.75', -0.021530851746419444) gegen = "gegen den Uhrzeiger" mit = "mit dem Uhrzeiger" DieZeit = 1 PerfekteNote = 1 WieOftDieFlascheNoteGepsieltWerdenDamitSieEinSiganlAbgiebt = 0 A = 0 B = 0 C = 0 D = 0 E = 0 F = 0 G = 0 H = 0 I = 0 J = 0 K = 0 A1 = 0 A2 = 0 A1R = 0 A2R = 0 C1 = 0 C2 = 0 C1R = 0 C2R = 0 D1 = 0 D2 = 0 D1R = 0 D2R = 0 E1 = 0 E2 = 0 F1 = 0 F2 = 0 F1R = 0 F2R = 0 G1 = 0 G2 = 0 G1R = 0 G2R = 0 NOTE_MIN = 60 # C4 NOTE_MAX = 69 # A4 FSAMP = 48000 #22050 # Sampling frequency in Hz FRAME_SIZE = 2048 # How many samples per frame? FRAMES_PER_FFT = 16 # FFT takes average across how many frames? SAMPLES_PER_FFT = FRAME_SIZE * FRAMES_PER_FFT FREQ_STEP = float(FSAMP) / SAMPLES_PER_FFT NOTE_NAMES = 'C C# D D# E F F# G G# A A# B'.split() def freq_to_number(f): return 69 + 12 * np.log2(f / 440.0) def number_to_freq(n): return 440 * 2.0**((n - 69) / 12.0) def note_name(n): return NOTE_NAMES[n % 12] + str(n / 12 - 1) def note_to_fftbin(n): return number_to_freq(n) / FREQ_STEP imin = max(0, int(np.floor(note_to_fftbin(NOTE_MIN - 1)))) imax = min(SAMPLES_PER_FFT, int(np.ceil(note_to_fftbin(NOTE_MAX + 1)))) buf = np.zeros(SAMPLES_PER_FFT, dtype=np.float32) num_frames = 0 # Initialize audio stream = pyaudio.PyAudio().open(format=pyaudio.paInt16, channels=1, rate=FSAMP, input=True, frames_per_buffer=FRAME_SIZE) freq1 = 440.08 window = 0.5 * (1 - np.cos(np.linspace(0, 2 * np.pi, SAMPLES_PER_FFT, False))) print('sampling at', FSAMP, 'Hz with max resolution of', FREQ_STEP, 'Hz') while stream.is_active(): GPIO.setmode(GPIO.BOARD) GPIO.setup(m1, GPIO.OUT) GPIO.setup(m2, GPIO.OUT) GPIO.setup(m3, GPIO.OUT) buf[:-FRAME_SIZE] = buf[FRAME_SIZE:] buf[-FRAME_SIZE:] = np.fromstring( stream.read(FRAME_SIZE, exception_on_overflow=False), np.int16) # Run the FFT on the windowed buffer fft = np.fft.rfft(buf * window) # Get frequency of maximum response in range freq = (np.abs(fft[imin:imax]).argmax() + imin) * FREQ_STEP # Get note number and nearest note n = freq_to_number(freq) n0 = int(round(n)) # Console output once we have a full buffer num_frames += 1 pyaudio.get_portaudio_version() if num_frames >= FRAMES_PER_FFT: print('freq: {:9.4f} Hz note: {:>3s} {:+.2f}'.format( freq, note_name(n0), n - n0)) # A4 if (note_name(n0), n - n0) < (Das_ist_ein_A4): GPIO.setmode(GPIO.BOARD) GPIO.output(m1, GPIO.HIGH) GPIO.output(m2, GPIO.LOW) GPIO.output(m3, GPIO.HIGH) print("backward") print(mit) print(A) elif (note_name(n0), n - n0) > (Das_ist_ein_A4): GPIO.setmode(GPIO.BOARD) print(gegen) GPIO.output(m2, GPIO.HIGH) GPIO.output(m3, GPIO.LOW) print(A) else: A += 1 print('Super das ist ein Perfektes A') # Stimmen() print(A) if A <= PerfekteNote: print(note_name(n0), n - n0) GPIO.setmode(GPIO.BOARD) print(A) GPIO.output(m3, GPIO.LOW) GPIO.cleanup() elif (KeyboardInterrupt): GPIO.output(m3, GPIO.LOW) print('Es hat geklappt') GPIO.cleanup() break else: break
# -*- encoding=utf-8 -*- import pyaudio print dir(pyaudio) print pyaudio.get_portaudio_version() print pyaudio.get_portaudio_version_text() audio_hdl = pyaudio.PyAudio() print dir(audio_hdl) default_host_api_info = audio_hdl.get_default_host_api_info() print default_host_api_info default_input_device_info = audio_hdl.get_default_input_device_info() print default_input_device_info default_output_device_info = audio_hdl.get_default_output_device_info() print default_output_device_info device_count = audio_hdl.get_device_count() print device_count host_api_count = audio_hdl.get_host_api_count() print host_api_count host_api_info_by_index = audio_hdl.get_host_api_info_by_index(1) print host_api_info_by_index