2016-03-22 14 views
0

Ich habe Daten durch einfache pyAudio Aufzeichnung erhalten:Convert pyaudio.paint16 zu schweben

"""PyAudio example: Record a few seconds of audio and save to a WAVE file.""" 

import pyaudio 
import wave 

CHUNK = 1024 
FORMAT = pyaudio.paInt16 
CHANNELS = 2 
RATE = 44100 
RECORD_SECONDS = 5 
WAVE_OUTPUT_FILENAME = "output.wav" 

p = pyaudio.PyAudio() 

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

print("* recording") 

frames = [] 

for i in range(0, int(RATE/CHUNK * RECORD_SECONDS)): 
    data = stream.read(CHUNK) 
    frames.append(data) 

print("* done recording") 

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

und ich brauche diese in numpy zu verarbeiten (und werden nicht konvertiert zurück). Also muss ich von pyaudio.paInt16 (oder 24 und so weiter ...) in etwas überschaubareres wie float oder double konvertieren.

Gibt es einen einfachen Weg?

Antwort

0

Ich denke, der einfachste Weg, um das sounddevice Modul verwendet (Disclaimer: Ich bin voreingenommen, da ich seinen Autor):

import sounddevice as sd 

CHANNELS = 2 
RATE = 44100 
RECORD_SECONDS = 5 

myrecording = sd.rec(int(RECORD_SECONDS * RATE), samplerate=RATE, 
        channels=CHANNELS, blocking=True, dtype='float64') 

Standardmäßig ist diese verwendet float32, aber Sie können die dtype ändern wie oben gezeigt. Wenn Sie die 16-Bit-Werte tatsächlich in Gleitkommawerte konvertieren möchten, sehen Sie sich alternativ my tutorial about this topic an.