如何解决python sounddevice - 如何播放我同时录制的一段音频?
首先声明我对此非常陌生,以前从未使用过任何音频库,也从未在此处发布过。
我想做的基本上是在录制当前音频的同时播放过去的音频。我试过 sounddevice.playrec(),但这不是我想要的。我希望能够“跟踪”或“滚动”过去的音频,并在仍然录制当前音频的同时播放更新或更旧的剪辑。 playrec 不会让我在它仍在录制时更改我正在播放的内容。
我想我可以尝试使用 sounddevice.stream(),并且一直在研究输入/输出传递的 this example。我希望我可以在我的回调函数中做一些类似的事情,我基本上将输入数据保存在某个地方(这将是我可以跟踪的过去的音频),并用过去的音频填充输出缓冲区。
为此,我一直在尝试使用这个回调函数:
def callback(indata,outdata,frames,time,status):
if status:
print(status)
if len(buf) == 0: #buf is just a list of indata arrays - idk if that's what I should be using
outdata.fill(0)
buf.append(indata)
else :
# get_trackbar_value gets me an index between 0 and len(buf),# and also tells me if this has changed since the last time I called the function.
trackbar_val,change,_ = get_trackbar_value()
print(trackbar_val)
print(change)
if not change:
trackbar_val+=1
if trackbar_val >= len(buf): #if the trackbar is at the very max I just want silence
outdata.fill(0)
else:
outdata[:] = buf[trackbar_val]
buf.append(indata)
但这并没有真正起作用。如果我说它有点像回声,但我无法回溯并让它重播我说过的话。有时,当您运行示例中的输入/输出直通代码时,它会产生非常大的噪音。我觉得我误解了 indata 缓冲区实际包含的内容,但我真的找不到很多示例或教程或任何东西来帮助我了解如何处理这些数据。任何指针将不胜感激!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。