Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将pyaudio.paint16转换为float_Python_Python 2.7_Numpy_Pyaudio - Fatal编程技术网

Python 将pyaudio.paint16转换为float

Python 将pyaudio.paint16转换为float,python,python-2.7,numpy,pyaudio,Python,Python 2.7,Numpy,Pyaudio,我有通过简单音频记录获得的数据: """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 = py

我有通过简单音频记录获得的数据:

"""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()
我需要在numpy中处理这些数据(而不是转换回来)。因此,我需要将pyaudio.paInt16(或24等)转换为更易于管理的格式,如float或double


有简单的方法吗?

我认为最简单的方法是使用模块(免责声明:我有偏见,因为我是模块的作者):

默认情况下,这将使用
float32
,但您可以如上所示更改
dtype

或者,如果您确实想要将16位值转换为浮点值,请查看

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')