Python PortAudio API-无法录制声音

时间:2019-03-20 23:03:11

标签: pyaudio portaudio

我正在用sounddevice编写音频可视化器。它在两台计算机上进行了尝试-在PC上可以运行,但在ThinkPad上却不能。我在同一台笔记本电脑上的Kubuntu和OpenSuse Tumbleweed上尝试过,但没有用。工作的计算机也是Kubuntu,但这是另一种硬件。

我可以连接到某些设备,但只能得到零。获取一些数字的唯一方法是打开麦克风。这不是我想要的东西-我需要阅读声卡播放的内容(例如,音乐播放器播放一些歌曲)。

我的问题是:是错误还是我做错了什么?

这里正在测试代码,尝试使用sounddevice和pyaudio尝试任何可用的设备。设备的数量有时会无故更改,或者至少我看不到任何原因。

import sounddevice as sd
devices = sd.query_devices()
print("sounddevice")
for i in range(len(devices)):
    print("")
    print(i, devices[i])
    try:
        s = sd.Stream(device=(i,i), channels=1)
        s.start()
        print(s.read(10))
        s.stop()
    except Exception as e:
        print(e)    

import pyaudio
p = pyaudio.PyAudio()
print("pyaudio")
for i in range(p.get_device_count()):
    print("")
    print(i)
    try:
        rate=44100
        format=pyaudio.paInt32
        channels=1
        s = p.open(rate, channels, format, input=True, input_device_index=i)
        print(s.read(10))
        s.close()
    except Exception as e:
        print(e)

这是输出:

sounddevice

0 {'name': 'HDA Intel PCH: HDMI 0 (hw:0,3)', 'hostapi': 0, 'max_input_channels': 0, 'max_output_channels': 8, 'default_low_input_latency': -1.0, 'default_low_output_latency': 0.005804988662131519, 'default_high_input_latency': -1.0, 'default_high_output_latency': 0.034829931972789115, 'default_samplerate': 44100.0}
Error opening Stream: Invalid number of channels [PaErrorCode -9998]                                                                                                                                                    

1 {'name': 'HDA Intel PCH: HDMI 1 (hw:0,7)', 'hostapi': 0, 'max_input_channels': 0, 'max_output_channels': 8, 'default_low_input_latency': -1.0, 'default_low_output_latency': 0.005804988662131519, 'default_high_input_latency': -1.0, 'default_high_output_latency': 0.034829931972789115, 'default_samplerate': 44100.0}                                                                                                                    
Error opening Stream: Invalid number of channels [PaErrorCode -9998]                                                                                                                                                    

2 {'name': 'HDA Intel PCH: HDMI 2 (hw:0,8)', 'hostapi': 0, 'max_input_channels': 0, 'max_output_channels': 8, 'default_low_input_latency': -1.0, 'default_low_output_latency': 0.005804988662131519, 'default_high_input_latency': -1.0, 'default_high_output_latency': 0.034829931972789115, 'default_samplerate': 44100.0}                                                                                                                    
Error opening Stream: Invalid number of channels [PaErrorCode -9998]                                                                                                                                                    

3 {'name': 'hdmi', 'hostapi': 0, 'max_input_channels': 0, 'max_output_channels': 8, 'default_low_input_latency': -1.0, 'default_low_output_latency': 0.005804988662131519, 'default_high_input_latency': -1.0, 'default_high_output_latency': 0.034829931972789115, 'default_samplerate': 44100.0}                                                                                                                                              
Error opening Stream: Invalid number of channels [PaErrorCode -9998]                                                                                                                                                    

4 {'name': 'pulse', 'hostapi': 0, 'max_input_channels': 32, 'max_output_channels': 32, 'default_low_input_latency': 0.008707482993197279, 'default_low_output_latency': 0.008707482993197279, 'default_high_input_latency': 0.034829931972789115, 'default_high_output_latency': 0.034829931972789115, 'default_samplerate': 44100.0}
(array([[ 0.],
    [ 0.],
    [ 0.],
    [ 0.],
    [ 0.],
    [ 0.],
    [ 0.],
    [ 0.],
    [ 0.],
    [ 0.]], dtype=float32), False)

5 {'name': 'default', 'hostapi': 0, 'max_input_channels': 32, 'max_output_channels': 32, 'default_low_input_latency': 0.008707482993197279, 'default_low_output_latency': 0.008707482993197279, 'default_high_input_latency': 0.034829931972789115, 'default_high_output_latency': 0.034829931972789115, 'default_samplerate': 44100.0}
(array([[ 0.],
    [ 0.],
    [ 0.],
    [ 0.],
    [ 0.],
    [ 0.],
    [ 0.],
    [ 0.],
    [ 0.],
    [ 0.]], dtype=float32), False)
pyaudio

0
[Errno -9998] Invalid number of channels

1
[Errno -9998] Invalid number of channels

2
[Errno -9998] Invalid number of channels

3
[Errno -9998] Invalid number of channels

4
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

5
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

0 个答案:

没有答案