pyaudio - 非确定性 pyaudio/ALSA 失败
问题描述
我测试了一些能发出声音的普通 python 代码,特别是来自另一个问题的代码。
当我从命令行运行该代码时python code.py
,它会发出这一系列直接来自 ALSA 的消息。到目前为止,这并不罕见,据我所知,它忽略了一些不可用的设备,这些设备以某种方式存在于所涉及的 ALSA 配置文件中,并在发现它不存在后跳过使用 jack:
ALSA lib pcm_dmix.c:1089:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm_route.c:869:(find_matching_chmap) Found no matching channel map
connect(2) call to /dev/shm/jack-1000/default/jack_0 failed (err=No such file or directory)
attempt to connect to server failed
connect(2) call to /dev/shm/jack-1000/default/jack_0 failed (err=No such file or directory)
attempt to connect to server failed
ALSA lib pcm_oss.c:377:(_snd_pcm_oss_open) Unknown field port
ALSA lib pcm_oss.c:377:(_snd_pcm_oss_open) Unknown field port
ALSA lib pcm_usb_stream.c:486:(_snd_pcm_usb_stream_open) Invalid type for card
ALSA lib pcm_usb_stream.c:486:(_snd_pcm_usb_stream_open) Invalid type for card
ALSA lib pcm_dmix.c:1089:(snd_pcm_dmix_open) unable to open slave
但是,当我将声音的持续时间修改为例如 50 或 100 毫秒时,通过扬声器实际听到的持续时间在不同的运行中明显不同。因为我希望编程一些特殊的哔哔声和东西,所以这是一个问题。它仍然是不确定的,在重新启动后也是如此。
您将如何确定听到的实际声音持续时间变化的原因?
伴随的症状:每次运行时都不会发出有关“无法打开从属设备”的消息,有时会发出,有时不会发出。有些事情是不确定的,我想知道你是否会花一天时间来清理复杂的 ALSA 配置,或者以非常不同的方式处理这个问题。
无论如何,复制play_sound
调用以在第一个声音之后添加另一个声音:
play_sound("sine", 150, 0.8, 100)
play_sound("sine", 130, 0.8, 200)
我得到一个稍微不同的控制台输出:
attempt to connect to server failed
ALSA lib pcm_oss.c:377:(_snd_pcm_oss_open) Unknown field port
ALSA lib pcm_oss.c:377:(_snd_pcm_oss_open) Unknown field port
ALSA lib pcm_usb_stream.c:486:(_snd_pcm_usb_stream_open) Invalid type for card
ALSA lib pcm_usb_stream.c:486:(_snd_pcm_usb_stream_open) Invalid type for card
ALSA lib pcm_dmix.c:1089:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm_dmix.c:1089:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm.c:2642:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2642:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2642:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm_route.c:869:(find_matching_chmap) Found no matching channel map
connect(2) call to /dev/shm/jack-1000/default/jack_0 failed (err=No such file or directory)
attempt to connect to server failed
connect(2) call to /dev/shm/jack-1000/default/jack_0 failed (err=No such file or directory)
attempt to connect to server failed
ALSA lib pcm_oss.c:377:(_snd_pcm_oss_open) Unknown field port
ALSA lib pcm_oss.c:377:(_snd_pcm_oss_open) Unknown field port
ALSA lib pcm_usb_stream.c:486:(_snd_pcm_usb_stream_open) Invalid type for card
ALSA lib pcm_usb_stream.c:486:(_snd_pcm_usb_stream_open) Invalid type for card
ALSA lib pcm_dmix.c:1089:(snd_pcm_dmix_open) unable to open slave
我没有手动修改 ALSA 配置,它是一个 Ubuntu 20.04 系统。也许我使用了错误的 linux 发行版来让它开箱即用地运行得非常顺利。
您将如何解决为什么声音的持续时间是不确定的?
解决方案
推荐阅读
- dart - What is the best practice to show a progress in angulardart?
- scala - spark scala cartesian product of each element in a column
- python - 使用 asyncio 存储属性值
- cordova-plugins - 无法获取未知属性“PLAY_SERVICES_VERSION”-Phonegap Build (cordova-plugin-googleplus)
- architecture - elm state transition Msg
- python - 如何找到三个连续随机变量的贝叶斯网络的联合概率
- windows-installer - .msi 和 .mst 未进行数字签名
- sql-server - 我在使用 SQL Server 中的 INSERT INTO OPENROWSET 将每列超过 255 个字符插入 Excel 文件时遇到问题
- amazon-web-services - 拒绝 aws_beanstalk/ubuntu 的请求访问
- c# - 使用c#将输入到不同控件中的值动态添加到xml中