如何在pi上正确安装portaudio

Esh*_*aka 4 audio alsa portaudio pyaudio raspberry-pi

我正在从事一个项目,该项目涉及从树莓派上的麦克风录音。现在我在程序运行时收到这个错误。

python3: src/hostapi/alsa/pa_linux_alsa.c:3641: PaAlsaStreamComponent_BeginPolling: 断言 `ret == self->nfds' 失败。中止

在寻找解决此问题的方法时,我发现文件 pa_linux_alsa.c 属于端口音频。请参考以下链接。

修改 pa_linux_alsa.ci 认为

如何安装端口音频

下载链接

第一个链接是关于错误和修改后的修复,仍然不知道在哪里复制,最后两个是关于安装 portaudio。显然没有更简单的方法可以用命令安装它。

我下载了它的 pa_snapshot 增强版。但我不知道我应该把这些文件放在哪里以开始像自述文件中那样配置和制作。我将 portaudio 目录复制到home/pi(在我认为的用户中。“ cd ”并将其复制到那里)然后按照自述文件进行操作并重新启动系统。我没有看到程序中的错误有任何变化。我尝试将命令whereis与 pa_ linux_alsa.c 一起使用。该命令也不显示文件或与 portaudio 相关的任何内容。

Gre*_*ner 7

您的第一个链接正确识别了 portaudio 中的错误,但修复不完整。我分叉了 portaudio 库并创建了一个补丁来解决这个问题。以下是删除 portaudio 包并从源代码编译修补版本的步骤:

sudo apt-get remove libportaudio2
sudo apt-get install libasound2-dev
git clone -b alsapatch https://github.com/gglockner/portaudio
cd portaudio
./configure && make
sudo make install
sudo ldconfig
cd ..
Run Code Online (Sandbox Code Playgroud)

此时,您应该有一个基于 pa_stable_v190600_20161030 标签的修补过的 portaudio 库。最后,如果您需要 Python 的 PyAudio 包,请使用 pip: 安装它sudo pip3 install pyaudio

  • 我刚刚注意到 [Debian 正在引入我的补丁](https://sources.debian.org/patches/portaudio19/19.6.0-1.1/944509-crash.patch/)。因此,使用软件包版本 19.6.0-1.1(或更高版本)可能会在 Debian 上修复它。Ubuntu好像还没接上,没法测试,因为这几天都在用Arch (3认同)
  • commit 80aafc6(即你的“alsapatch”分支的提示)似乎不必要地删除了很多错误处理。我向 portaudio 邮件列表提交了一个更简洁的版本(https://lists.columbia.edu/pipermail/portaudio/2019-July/001888.html),这可能更可取 (2认同)
  • [看起来像](https://launchpad.net/ubuntu/+source/portaudio19/19.6.0-1.1/+publishinghistory)它进入了下一个Ubuntu版本,[如果我没看错的话](https:// /askubuntu.com/questions/1277958/package-integration-process-from-debian-case-in-point-portaudio)。 (2认同)