问题标签 [pyaudio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
15552 浏览

python - Pyaudio回调模式下如何处理in_data?

我正在做一个关于python信号处理的项目。到目前为止,我在非阻塞模式下取得了一些成功,但它给输出带来了相当大的延迟和剪辑。

我想使用 Pyaudio 和 Scipy.Signal 实现一个简单的实时音频过滤器,但是在 pyaudio 示例中提供的回调函数中,当我想读取 in_data 时,我无法处理它。尝试以各种方式转换它,但没有成功。

这是我想要实现的代码(从麦克风读取数据,过滤器并尽快输出):

这样做的正确方法是什么?

0 投票
1 回答
1433 浏览

numpy - 如何使用 numpy 更改 pyaudio 中的信号幅度?

我目前正在将 python 3.3 与 pyaudio 和 numpy 结合使用。我从 pyaudio 网站上举了一个例子来播放一个简单的波形文件并将该数据发送到默认声卡上。

现在我想改变音频的音量,但是当我将数组乘以 0.5 时,我会得到很多噪音和失真。

这是一个代码示例:

我应该如何在不破坏波形的情况下处理这个数组的乘法或除法?

谢谢,

0 投票
1 回答
9379 浏览

python - 将多通道 PyAudio 转换为 NumPy 数组

我能找到的所有示例都是单声道的,带有CHANNELS = 1. 如何使用 PyAudio 中的回调方法读取立体声或多声道输入并将其转换为 2D NumPy 数组或多个 1D 数组?

对于单声道输入,这样的工作:

但不适用于立体声输入,result数组的长度是原来的两倍,所以我假设通道是交错的,但我找不到这方面的文档。

0 投票
1 回答
2160 浏览

python - PyAudio - 同步播放和录制

我目前正在使用 PyAudio 开发一个轻量级的录音实用程序,该实用程序适合我正在计划的应用程序的特定需求。我正在使用 ASIO 音频接口。我正在编写程序要做的是通过界面播放一个wav文件,同时记录界面的输出。该接口实时处理板载信号并更改音频。由于我打算将此渲染输出导入 DAW,因此我需要输出与输入音频完美同步。使用 DAW,我可以同时在我的界面中播放音频并记录输出。当我这样做时,它在 DAW 中完美同步。我的实用程序的目的是能够从 python 脚本中触发它。

通过蛮力方法,我想出了一个可行的解决方案,但我现在陷入了一个幻数,我不确定这是某种常数还是我可以计算的东西。如果它是一个我可以计算出的数字,那将是理想的,但我仍然想了解它的来源。

我的回调如下:

我关心的是功能:

我通过观察我的输出文件与原始播放文件的偏移量来将这个计算放在一起。发生了两件事,我的输出文件在同时播放时比原始文件开始晚,而且它也会提前结束。通过反复试验,我确定它是在开始时额外增加了特定数量的帧,在结束时丢失了。这将计算那些帧数。我确实理解第一部分,它是使用采样率转换为帧的输入/输出延迟(以秒/亚秒精度提供)。但我不太确定如何填写 1060 值,因为我不确定它来自哪里。

我发现通过使用我的 ASIO 驱动程序上的延迟设置,我的应用程序继续正确同步记录的文件,即使上述输出/输入延迟由于调整而发生变化(输入/输出延迟始终是相同的值),所以 1060 在我的机器上似乎是一致的。但是,我根本不知道这是否是一个可以计算的值。或者如果它是一个特定的常数,我不确定它到底代表什么。

任何有助于更好地理解这些值的帮助将不胜感激。我很高兴我的实用程序现在可以正常工作,但想完全了解这里发生的事情,因为我怀疑可能使用不同的界面可能不再正常工作(出于几个原因,我想支持这一点)。

编辑 2014 年 4 月 8 日回应罗伯托:我收到的值latencyCalc = math.ceil((stream.get_output_latency() + stream.get_input_latency()) * wave_file.getframerate()) + 1060 是 8576,额外的 1060 使总延迟达到9636 帧。您对我为什么添加 1060 帧的假设是正确的。我正在通过外部 ASIO 接口播放文件,我希望在录制的文件中捕获的处理是接口上发生的处理的结果(不是我编码的东西)。为了比较输出,我只是播放了测试文件并记录了界面的输出,没有对界面进行任何处理。然后我检查了 Audacity 中的两条轨道,通过反复试验确定 1060 是我可以让两者对齐的最接近的轨道。从那以后我意识到它仍然不完全完美,但是在同时播放时它非常接近并且听不见(当移除 1060 偏移时这是不正确的,有明显的延迟)。与 1060 相比,添加/删除额外的帧也是太多的补偿。

我相信你是正确的,额外的延迟来自外部接口。我最初想知道它是否可以用我手头的数字信息计算出来,但我得出的结论是它只是界面中的一个常数。我觉得这是真的,因为我已经确定如果我删除 1060,文件的偏移量与在 Reaper 中手动执行相同的测试完全相同(这正是我正在自动化的过程)。我的延迟比使用新的蛮力补偿的收割机要好得多,所以我称之为胜利。在我的应用程序中,目标是用新处理的文件完全替换原始文件,因此需要两者之间的绝对最小延迟。

回答您关于 PyAudio 中 ASIO 的问题,幸运的是,答案是肯定的。您必须使用用于 PortAudio 的 ASIO SDK 编译 PortAudio 以使用 ASIO,然后更新 PyAudio 设置以这种方式编译。幸运的是,我正在使用 Windows,http: //www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio 内置了 ASIO 支持,然后可以通过 ASIO 访问这些设备。

0 投票
1 回答
918 浏览

python - pyaudio 和套接字有问题

我正在尝试修复我编写的脚本。这是一个客户端应用程序,我需要弄清楚如何使用套接字来记录我办公室运行 linux 的计算机的数据。

我在服务器上使用 netcat,监听端口 5555。

我知道我必须将 转换i为整数,但是遇到了麻烦。

我已经有一个用于发送 .wav 文件的 ftp 脚本,我只需要让s.recv提示工作即可。

0 投票
0 回答
1679 浏览

python-2.7 - pyaudio 无法使用 USB 音频设备索引以 16000 采样率工作,并在 ubuntu 12.04 LTS 中出现错误“Errno Invalid sample rate] -9997”

我正在尝试在 ubuntu 12.04 中使用pyaudio播放 wav 文件并选择输出设备索引 - USB Advanced Audio Device: USB Audio (hw:1,0) 。

如果我选择帧速率 48000.000000 wav 文件并选择输出设备索引 - USB 音频它工作正常,我可以听到。但是如果我选择帧速率 16000.000000 wav 文件并选择输出设备索引 - USB 音频它工作正常,我听不见,它显示以下错误:



如果我选择“默认”设备索引,则相同的采样率 16 k 它工作正常。我的代码很容易获取音频设备输出索引,并且我正在传递输出设备索引 ID



使用 PyAudio 播放声音。如果您有任何想法使用带有 USB 音频设备的 PyAudio 来处理 16k 采样率,请告诉我。

0 投票
2 回答
2088 浏览

python - 是否可以使用 pyaudio 一次播放两个音符?

是否可以使用 pyaudio 演奏和弦?

0 投票
1 回答
1381 浏览

python - 在使用 PyAudio 生成音调时,为什么我会在它们之间获得点击?

标题说明了问题所在。我不知道如何解决这个问题。咔哒声在播放的每个音调之间。我也听起来像一些人的流行音乐。

0 投票
1 回答
952 浏览

python - 我应该把portaudio放在哪里以便Paudio可以找到它

在没有 make 和 gcc 的 Gentoo 上工作(在机器人 Nao 上),我很难安装 portaudio。我设法将pyaudio放在正确的位置,以便python可以检测到它,但是每当我尝试“import pyaudio”时,它都会要求我先安装portaudio。我有一个运行 gentoo 的虚拟机来模拟 gcc 和 make 可用的机器人。我可以在那台机器上编译portaudio,但是在将其内容复制到机器人后,我无法运行make install。我应该把每个库文件准确地放在哪里,以便 pyAudio 可以找到它?

谢谢

0 投票
1 回答
767 浏览

python - 使用 WinPython 安装 PyAudio

在 Windows 7 上,我想安装 PyAudio 以与 WinPython 一起使用,但 PyAudio 安装程序崩溃了,因为注册表中没有 Python 条目。WinPython 以自己的方式做了很多事情,所以安装它并不会像安装常规版本的 Python 那样设置注册表,我对此并不感到惊讶。无论如何,我能做什么?

使用 Python 3.3.2 作为 WinPython 安装的一部分。

还有一个问题:

我按照建议将 WinPython 注册到 Windows 7,然后安装了 PyAudio,它运行良好,直到我尝试运行“import pyaudio”,此时它退出,说“请先构建并安装 PortAudio Python 绑定”。我的意图是不必构建任何东西,PyAudio 安装程序网页说它包括 PortAudio V19。

更多信息:我注意到 PyAudio 的安装程序说“仅限 32 位”,我怀疑我的 WinPython 版本是“为 64 位构建的”(不确定这是什么意思,但安装目录是 c:\WinPython-64bit-3.3 .3.2)