如何在PyAudio中更改可用的采样率?

问题描述

我正在使用ReSpeaker Mic Array v2.0进行一个项目,这是一个PCB板,其中有4个麦克风连接到Jetson Nano板上。

我设法使用以下命令以48 kHz的速率(该ReSpeaker的最大值)录制音频:

arecord -D plughw:ArrayUAC10 -c 6 -r 48000 -f S32_LE test.wav

并且我想使用PyAudio进行相同的操作,但是每次我将速率设置为不同于16 kHz的值时:

    RESPEAKER_RATE = 48000
    RESPEAKER_CHANNELS = 6 
    RESPEAKER_WIDTH = 2
    RESPEAKER_INDEX = 11  # refer to input device id
    CHUNK = 1024
    RECORD_SECONDS = time
    WAVE_OUTPUT_FILENAME = "output.wav"
    
    p = pyaudio.PyAudio()

    stream = p.open(
            rate=RESPEAKER_RATE,format=p.get_format_from_width(RESPEAKER_WIDTH),channels=RESPEAKER_CHANNELS,input=True,input_device_index=RESPEAKER_INDEX,)

它最终会出现错误:

Expression 'paInvalidSampleRate' failed in 'src/hostapi/alsa/pa_linux_alsa.c',line: 2048
Expression 'PaAlsaStreamComponent_InitialConfigure( &self->capture,inParams,self->primeBuffers,hwParamsCapture,&realSr )' failed in 'src/hostapi/alsa/pa_linux_alsa.c',line: 2719
Expression 'PaAlsaStream_Configure( stream,inputParameters,outputParameters,sampleRate,framesPerBuffer,&inputLatency,&outputLatency,&hostBufferSizeMode )' failed in 'src/hostapi/alsa/pa_linux_alsa.c',line: 2843
Traceback (most recent call last):
  File "demo_print.py",line 49,in <module>
    input_device_index=RESPEAKER_INDEX,)
  File "/usr/lib/python3/dist-packages/pyaudio.py",line 750,in open
    stream = Stream(self,*args,**kwargs)
  File "/usr/lib/python3/dist-packages/pyaudio.py",line 441,in __init__
    self._stream = pa.open(**arguments)
OSError: [Errno -9997] Invalid sample rate

我认为这取决于某些ALSA配置,也许在asound.conf文件中?我已经做了很多尝试,但是仍然找不到解决方案。有人可能有任何想法吗?

关于, 皮奥特里克

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)