#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")