Python 在pyaudio/wave中录制和播放字节列表

Python 在pyaudio/wave中录制和播放字节列表,python,wave,looper,pyaudio,Python,Wave,Looper,Pyaudio,我想用pyaudio和wave-lib录制和播放我的语音,但我不知道怎么做,因为wave-lib需要一个文件的路径,即使我试图将它设置为一个变量,并在几秒钟前录制了字节列表,但仍然不起作用,因为我不能对列表使用“读取”。有人有什么想法吗?我想做一个像KORG之类的活套 我想在停止录制后立即播放它,就像真正的looper一样,而不将录制保存为文件 下面是我的代码(Python 3.4): 停止记录后,您需要加入附加的数据,使用data='''.join(self.frames),并在最后构建一个循

我想用pyaudio和wave-lib录制和播放我的语音,但我不知道怎么做,因为wave-lib需要一个文件的路径,即使我试图将它设置为一个变量,并在几秒钟前录制了字节列表,但仍然不起作用,因为我不能对列表使用“读取”。有人有什么想法吗?我想做一个像KORG之类的活套

我想在停止录制后立即播放它,就像真正的looper一样,而不将录制保存为文件

下面是我的代码(Python 3.4):


停止记录后,您需要加入附加的数据,使用
data='''.join(self.frames)
,并在最后构建一个循环(for,while)以流式传输所有字节列表,我是这样做的:

import pyaudio

chunk = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 41000
RECORD_SECONDS = 5


p = pyaudio.PyAudio()

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



print ("***Recording***")

all = [] 

for i in range(0, RATE / chunk * RECORD_SECONDS):
     data = stream.read(chunk)
     all.append(data) 


print("***Stop recording***")


print ("***START PLAY***")


data = ''.join(all)


for i in range(0, len(data), chunk):
    stream.write(data[i:i+chunk])

你有什么错误吗??快速浏览一下,告诉我您不需要它
f=wave.open(self.frames,“rb”)
,但是我应该如何从这个列表中
readframes
?这是在大喊大叫,
'list'没有属性'wave'
或者没有
read
属性(无论我想做什么)我不能运行你的代码,float到int有一个错误(你错过了
int
,应该是
,因为I在范围内(0,int(速率/块*记录秒)):
但是我有另一个错误
回溯(最后一次调用):文件“looptest.py”,第40行,数据=“”。join(all)TypeError:序列项0:expected str instance,bytes find
这里是我的python27,我可以正常运行我有Python3.4,也许这就是原因:D我应该在开始时提到我使用的版本try
data=“”。join(all).strip('\0x0'))
与以前一样的错误(您和我的代码都有)
import pyaudio

chunk = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 41000
RECORD_SECONDS = 5


p = pyaudio.PyAudio()

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



print ("***Recording***")

all = [] 

for i in range(0, RATE / chunk * RECORD_SECONDS):
     data = stream.read(chunk)
     all.append(data) 


print("***Stop recording***")


print ("***START PLAY***")


data = ''.join(all)


for i in range(0, len(data), chunk):
    stream.write(data[i:i+chunk])