微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python sounddevice - 如何播放我同时录制的一段音频?

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?