PyAudio无法找到任何输出设备。

6
当我运行时:
import pyaudio
pa = pyaudio.PyAudio()
pa.get_default_output_device_info()

我得到:

IOError: No Default Output Device Available

当我说:

pa.get_device_count()

它返回0L
当然,如果我列出设备。
for i in range(0, device_count):
        print("Name: " + pa.get_device_info_by_index(i)["name"])
        print("Index: " + pa.get_device_info_by_index(i)["index"])
        print("\n")

它不会打印任何东西。

我正在运行Ubuntu 16.04,并通过以下方式设置了我的默认音频输出:

pacmd list-sinks
pacmd set-default-sink 0

我已经安装了最新版本的PulseAudio、ALSA和PortAudio。有什么建议吗?
更新:在Audacity中无法查看任何声音设备,尽管它们出现在“系统设置>声音”下。在Audacity中,我收到以下错误信息:
“打开声音设备时出错。请检查录音设备设置和项目采样率。”
我认为这几乎肯定是一个PortAudio问题,因为设置页面如下: enter image description here

2
这可能类似于https://github.com/spatialaudio/python-sounddevice/issues/74? - Matthias
你使用的是哪个版本的pyaudio?我熟悉音频系统,可能可以帮助你解决源代码问题;但为了找到问题,人们需要能够复制你的软件设置。 - Andrew of Scappoose
@NullSalad 你用的是什么扬声器? - ds_secret
@Null Salad.. 一周前提供了赏金,但没有回答用户2133679在评论中发布的问题,在赏金期间如果有答案发布也没有回答... 真的,为什么要提供赏金呢?只是为了获得“推广员”徽章吗... 我猜是这样..... - ZF007
哈哈,不是的,我只是忘记了。我正在使用pyaudio 0.2.11,并且我有内置的笔记本电脑扬声器,卡:HDA Indetl PCH,芯片Realtek ALC270。同时运行python 2.7.12。 - Null Salad
3个回答

6
很可能是需要替换的损坏文件。
  1. 在pip安装的位置中搜索“/usr/./libstdc++.so.6”。

  2. 搜索“/usr/lib/x86_64-linux-gnu/libstdc++.so.6”,并将其复制到(1)的位置。这应该解决问题。

  3. 如果您安装了Anaconda版本3 - 4.3.0或4.4.0或更早版本,请检查“anaconda3/lib/libstdc++.so.6”,并使用(2)进行替换。

或者A)重命名文件,并将从(2)中获得的文件放入原来libstdc++.so.6文件的位置;或者B)升级到版本5.0.1的Anaconda,然后运行 conda update --all 命令。如果您选择"B",请不要忘记手动删除所有的eggs或whls,以确保不会再次安装旧软件。

这应该能为您解决问题。

愉快使用 ;-)


在第一步中,我已经安装了许多与 /usr/ 相关的库:`/usr/lib/i386-linux-gnu/libstdc++.so.6 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.22 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.22 /usr/lib32/libstdc++.so.6 /usr/lib32/libstdc++.so.6.0.22 /usr/libx32/libstdc++.so.6 /usr/libx32/libstdc++.so.6.0.22 /usr/local/MATLAB/R2016a/sys/os/glnxa64/libstdc++.so.6.0.17 /usr/local/MATLAB/R2016a/sys/os/glnxa64/libstdc++.so.6.old/usr/share/gdb/auto-load/usr/lib/i386-linux-gnu/libstdc++.so.6.0.22-gdb.py `我应该选择哪一个? - Null Salad
(对于上面的丑陋格式,我很抱歉,我还不得不删除一些在usr/share/下可能与空间要求无关的文件 :P) - Null Salad
哇塞!我做到了,而且还手动重新安装了portaudio(使用tarballs而不是apt-get),现在它可以工作了!!!!非常感谢! - Null Salad
1
虽然我运行它时会出现一堆错误,我不知道它们的含义,但它仍然可以工作,所以我不抱怨: ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe ... ALSA lib pcm_route.c:867:(find_matching_chmap) Found no matching channel map ... Cannot connect to server socket err = No such file or directory ... jack server is not running or cannot be started JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for 4294967295, skipping unlock ...(缩短以适应) - Null Salad
很高兴听到现在它可以工作了。U17 即将发布...预发布版本已经上线了网站。根据您在 U16 上安装的软件数量,我偶尔会迁移到新的 U 版本并进行全新安装,而不是从当前 U 版本中进行更新。这种方法只需要一个额外的 HDD 或 SDD 和引导加载程序中的额外选择启动选项。这种方法使“升级” less painful。这是一种硬连线故障保护。当 MS 提供完整的 SP(也就是忽略默认还原点软件,我认为这只适用于小改变)时,这也非常有用。 - ZF007
显示剩余2条评论

1

看起来你缺少 portaudio19-dev 包。使用以下命令在终端中安装该包:

sudo apt-get install portaudio19-dev

-2

使用apt-get安装,然后用python2运行。或者使用conda安装,然后用python3运行。


2
请您详细阐述您的答案,可以参考以下链接中的内容,了解如何更好地表达您的答案:https://stackoverflow.com/help/how-to-answer - Soumen Mukherjee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接