Не получает аудиовыход с PyAudio на Raspberry Pi 4

#python #raspberry-pi #pyaudio #alsa #raspberry-pi4

#python #raspberry-pi #pyaudio #alsa #raspberry-pi4

Вопрос:

Здесь я в растерянности. В настоящее время приведенный ниже код не воспроизводит файл wav должным образом. Я добавил несколько операторов печати и обнаружил, что while цикл никогда не завершается.

Я использую Raspberry Pi 4. Я установил PyAudio с помощью…

 sudo apt-get install libasound-dev
sudo apt-get install portaudio19-dec
sudo apt-get install python3-pyaudio
  

Странно то, что запись работает. Кроме того, использование aplay soundfile.wav также работает.

 def play(fileName):
    CHUNK = 1024

    wf = wave.open(fileName, 'rb')

    p = pyaudio.PyAudio()

    stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
                    channels=2,
                    rate=wf.getframerate(),
                    output=True,
                    output_device_index=0)
  
    data = wf.readframes(CHUNK)

    print("starting loop")

    while len(data) > 0: # also tried: while data != ''
        stream.write(data)
        data = wf.readframes(CHUNK)

    print("finished loop")

    stream.stop_stream()
    stream.close()

    p.terminate()
        
play("soundfile.wav")

  

Приведенный выше код приводит к следующим сообщениям.

 Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, amp;alsaPeriodFrames, amp;dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 924
Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, amp;alsaPeriodFrames, amp;dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 924
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'defaults.pcm.dsnoop.device'
ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5047:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM sysdefault
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'defaults.pcm.dsnoop.device'
ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5047:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM sysdefault
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'defaults.bluealsa.device'
ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5036:(snd_config_expand) Args evaluate error: No such file or directory
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM bluealsa
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'defaults.bluealsa.device'
ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5036:(snd_config_expand) Args evaluate error: No such file or directory
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM bluealsa
Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, amp;alsaPeriodFrames, amp;dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 924
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM input
Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, amp;alsaPeriodFrames, amp;dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 924
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock

starting loop
  

Если у кого-нибудь есть представление о том, в чем может быть проблема, я был бы признателен.

Комментарии:

1. Вы когда-нибудь с этим разобрались?

2. Нет. Для этого проекта я отказался от использования PyAudio и просто использовал ALSA. Странно то, что я выполнил точно такой же пример на Raspberry Pi 3, и он отлично сработал. Возможно, это как-то связано с Pi 4.

3. Я в аналогичной ситуации, но проблема в том, что проект, который я пытаюсь запустить, был написан на pyaudio. Я не смог понять, почему это не будет работать с pi4.

4. Я могу относиться к большому разочарованию по этой проблеме. Похоже, что это не будет решением для вас, но взлом, который я использовал для простого воспроизведения и аудиофайла, был os.system("aplay myFile.wav")