如何解决在Linux上检测何时未将输入用于Python SoundDevice / PortAudio
我正在使用Python的声音设备库(在下面运行PortAudio)在Linux(RPi 4的Raspbian Buster桌面)上录制音频,但是看来我脚本的多个实例会导致错误PaErrorcode -9985
,我相信是由于PortAudio(或OS?)不允许多个程序同时访问音频输入。
我是菜鸟,但阅读了有关Try块的信息,并将使用sounddevice的代码部分封装在Try块中,在该块中,它一直重试,直到不再给出错误代码为止。但是,声音设备似乎无法识别输入是否空闲,即使输入变为自由后也是如此。例如,即使在第一个实例关闭后,在第二个实例上运行sounddevice.default.device
也会产生[-1,3]而不是第一个实例的[0,0]。很奇怪,通常只有两个设备:
第一个实例sounddevice.query_devices()结果:
* 0 sysdefault,ALSA (128 in,128 out)
1 dmix,ALSA (0 in,2 out)
第二个实例的结果:
0 snd_rpi_hifiberry_dacplusadcpro: HiFiBerry DAC+ADC Pro HiFi multicodec-0 (hw:0,0),2 out)
1 sysdefault,128 out)
2 dmix,2 out)
< 3 default,2 out)
除了Try块like this之外,我还尝试了重新导入sounddevice并重新检查,但这也没有用。从搜索错误代码到阅读声音设备或portaudio的文档,我一直找不到任何解决方案。我还查看了一个pidfile,但是如果我无法让sounddevice重新识别正确的输入,那将无济于事。
总体而言,我正在尝试弄清楚如何使声音设备识别输入是免费的并且可以使用它。
更新:根据注释的要求,下面是一个简单的示例脚本,其中两个实例不能同时运行。
import sounddevice
from scipy.io.wavfile import write
mysamplerate = 44100
myrecording = sounddevice.rec(mysamplerate * 10,samplerate=mysamplerate,channels=1)
sounddevice.wait()
write('output.wav',mysamplerate,myrecording)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。