我想用pyaudio和wave lib录制和播放我的声音,但我不知道怎么做,因为wave lib需要一个指向文件的路径,即使我试图用几秒钟前录制的字节列表将其设置为一个变量,但仍然不起作用,因为我不能对列表使用“read”。有人知道吗?我想做一个像KORG那样的活套,等等
把它录下来后,我要立即停止录制,就像放了个活套一样。在
这是我的代码(python3.4):
def record(self): #recording a voice
#var for bytes from recording
self.stream = self.player.open(format = self.FORMAT,
channels = self.CHANNELS,
rate = self.RATE,
input = True,
frames_per_buffer = self.CHUNK)
print("Recording")
self.frames = [] #byte list
#recoring for a few seconds (5sec at this moment)
for i in range(0, int(self.RATE / self.CHUNK * self.RECORD_SECONDS)):
self.data = self.stream.read(self.CHUNK) #sing stream do data var
self.frames.append(self.data) #add bytes to the end of a list
print("Stop recording")
self.stopRecording()
def stopRecording(self):
self.stream.stop_stream()
self.stream.close()
print("Recording has been stopped")
self.play()
def play(self): #playing a record
print("Playing")
f = wave.open(self.frames,"rb")
#read data
data = f.readframes(CHUNK)
#play stream
while data != '':
self.stream.write(data)
data = f.readframes(CHUNK)
self.stopPlaying()
停止记录后,您需要连接附加数据,使用
data = ''.join(self.frames)
,并在最后构建一个循环(for,while)来流化所有字节列表,我是这样做的:相关问题 更多 >
编程相关推荐