gpt4 book ai didi

用于播放不同声音的音频的 python 线程,似乎没有正确锁定,并且函数的开头在线程调用后返回

转载 作者:太空宇宙 更新时间:2023-11-04 10:50:43 27 4
gpt4 key购买 nike

我正在编写根据键盘输入从计算机播放声音的代码。声音存储为 wav 文件并使用 PyAudio 播放。然而,两次连续键盘敲击所播放的声音之间的延迟太慢,因此我试图添加线程以加快 I/O 时间。然而,音频现在变得沙哑,我认为线程上的锁没有起作用。相关代码如下:

while threading.activeCount() < NUM_THREADS:
message, delta_time = midi_in.get_message()
if message:
if message[2] == 0:
continue
elif message and (str(message[1]) == "108" or str(message[1]) == "107"):
break
else:
t = threading.Thread(target=play, args=(message,))
lock = threading.Lock()

lock.acquire()
t.start()
lock.release()



def play(message):

WAVE_FILENAME = "final"+str(message[1]) + '.wav'
CHUNK = 1024
wf = wave.open(WAVE_FILENAME)
p = pyaudio.PyAudio()

stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels = wf.getnchannels(),
rate = wf.getframerate(),
output = True)
data = wf.readframes(CHUNK)
while data != '':
stream.write(data)
data = wf.readframes(CHUNK)

stream.stop_stream()
stream.close()

p.terminate()

非常感谢您的帮助!

最佳答案

I don't think the locks on the threads are working

原因是下面创建了一个新锁:

lock = threading.Lock()

换句话说,您没有在循环的迭代中使用相同的锁;每次迭代都有自己的锁。因此,不会发生同步。

关于用于播放不同声音的音频的 python 线程,似乎没有正确锁定,并且函数的开头在线程调用后返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14128199/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com