gpt4 book ai didi

python - Docker下PyAudio没有声音

转载 作者:行者123 更新时间:2023-12-05 08:11:01 35 4
gpt4 key购买 nike

我构建了一个简单的 docker 镜像,并试图找出 PyAudio 不输出任何声音的原因。

  • speaker-test 向耳机插孔输出粉红噪声。
  • aplay sound.wav 也有效
  • python3 play_wave.py sound.wav 挂起并且不输出任何声音。

play_wave.py 是 pyaudio 包中包含的示例/测试程序。

我设置了这个测试库,这样你就可以看到确切的行为:https://github.com/PaulWieland/pyaudio_test

  • git clone https://github.com/PaulWieland/pyaudio_test.git
  • cd pyaudio_test
  • docker build -t paulwieland/pyaudio_test .
  • docker run -it --rm --device/dev/snd paulwieland/pyaudio_test/bin/sh

进入容器后,运行 aplay Front_Center.wav - 音频通过树莓派的耳机插孔播放。

现在运行 python3 play.py Front_Center.wav

在我的例子中,脚本挂起并且永远不会完成。几分钟后我可能会听到一点声音,但它无法正确播放声音。

编辑:

此问题是在使用最新 Raspbian 操作系统的 Raspberry Pi 4 上运行的 PortAudio 存在某种兼容性问题。

我现在确信它与 Docker 或 Python 无关,因为我也无法获得使用 portaudio 播放 wav 的简单 C 程序。

最佳答案

我今天取得了一些进展,这是我尝试提供的有用答案。 Linux 上的音频可能很痛苦,但我今天在玩我的 pi3 (+Raspbian Stretch) 时认为这是一个有希望的线索。

就像我几天前在评论中所说的那样,当我用 pyaudio 播放声音时,我的 pi3 东西在主机和容器中听起来都很糟糕,但当我用 aplay 播放时在主机和 guest 中听起来不错。我在主机上安装了一个 pulseaudio 服务器(默认情况下在大多数非 Raspbian Debians 中打包),并且 pyaudio 开始听起来比在主机上播放更好!我也尝试在容器中安装 pulseaudio,安装成功,而且我启动并运行了守护进程,但是守护进程提示一些无法连接到 dbus,运行后,aplay 播放了声音,但是 pyaudio没有。然后我尝试在容器中使用 --system 标志运行 pulseaudio(因为容器用户是 root,守护进程说 root 应该只运行带有该标志的 pulseaudio),声音又出来了但它听起来和以前一样糟糕。不过,我会尝试让您的容器与 pulseaudio 服务器通信 - 感觉这对我来说是一个很好的举措。

你有两个选择,要么在 guest 中运行一个 pulseaudio 服务器,要么像往常一样在主机上运行一个并允许容器与其通信,大概还有 dbus(抱歉,我不知道如何要做到这一点)。我确实知道如果 pulseaudio 在我的主机上运行,​​容器就无法与其通信,因为 pyaudio 打印了一些关于无法连接到脉冲服务器的消息。后者对我来说是一个很好的举措,因为我可以说很容易在主机中为 pulseaudio+pyaudio+dbus 设置一个已知良好的设置,所以也许很容易在主机中为 pulseaudio+dbus 设置一个良好的设置,并且容器中的 pyaudio。值得一试!

另一个花絮,关于它的值(value) - 你容器中的 ALSA 配置与至少我的 pi3 + raspbian stretch 有所不同。 alsa.conf 文件并不相同,我认为其他事情也在发生。我没有深入研究它,因为我并没有真正遇到与您完全相同的问题。

关于python - Docker下PyAudio没有声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66568132/

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