import multiprocessing
import numpy as np
import pyaudio
import soundfile
CHUNK = int(1024) # 每个缓冲区的帧数
FORMAT = pyaudio.paInt16 # 采样位数
CHANNELS = 1 # 单声道
RATE = 22050 # 采样频率
class Recorder:
def __init__(self, mic_ids, queue):
self.mic_ids = mic_ids
self.queue = queue
def run(self):
p1 = pyaudio.PyAudio() # 实例化对象
stream1 = p1.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK,
input_device_index=self.mic_ids[0],
) # 打开流,传入响应参数
print("start...", 1)
while True:
audio1 = stream1.read(CHUNK)
out_data1 = np.frombuffer(audio1, dtype=np.int16)[None, :]
self.queue.put(out_data1)
class Player:
def __init__(self, queue):
self.queue = queue
super(Player, self).__init__()
def run(self):
p = pyaudio.PyAudio()
stream = p.open(channels=1,
rate=22050,
output=True,
format=FORMAT,
)
while True:
ret = self.queue.get()
stream.write(ret, num_frames=CHUNK)
stream.stop_stream()
stream.close()
p.terminate()
if __name__ == "__main__":
q = multiprocessing.Queue(maxsize=1000)
record = Recorder([1], q)
play = Player(q)
p1 = multiprocessing.Process(target=play.run)
p1.daemon = True
p1.start()
p2 = multiprocessing.Process(target=record.run)
p2.daemon = True
p2.start()
p1.join()
p2.join()
10-16
1万+
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
08-11
2313
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
07-28
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交