Вы не сказали, но предположите, что вы не используете Pulseaudio. Делать
ps axu | grep pulse
чтобы убедиться, что вы действительно не используете Pulseaudio. Если вы это сделаете, следующее не будет работать.
Вы modprobe snd_bcm2835
не создали петлевое устройство, показанное в вопросе. Так что где-то у вас есть modprobe snd-aloop
, либо вы сделали это и забыли об этом, либо это какая-то конфигурация.
Для проверки выполните оба действия, aplay -l
и arecord -l
в обоих случаях на карте 1 должно отображаться два устройства.
Теперь давайте проверим работоспособность петлевого устройства. Найдите большой WAV-файл (скажем, «music.wav»), откройте два терминала и выполните
aplay -vv -D hw:1,0,0 music.wav
в одном терминале, и после этого
arecord -vv -D hw:1,1,0 -f S16_LE -r 44100 -c 2 /dev/null
в другом. Параметры должны соответствовать любому формату вашего WAV-файла. Вы должны увидеть измеритель VU для aplay
движения синхронно с измерителем VU для arecord
.
Наконец, скажите вашим программам на Python использовать их в hw:1,0,0
качестве устройства вывода звука, однако ваши программы на Python работают и все, что им нужно для этого.
Или создайте ~/.asoundrc
(для пользователя Linux) или /etc/asound.conf
(для всей системы) с такими записями, как
pcm.!default { type hw card 1 } ctl.!default { type hw card 1 }
предполагая, что это snd-aloop
всегда загружается на карту 1, и скрестите палец, который ваши программы Python используют в default
качестве вывода по умолчанию.
Затем вы можете выполнить запись с другого конца петлевого устройства, как описано выше.
Примечание: это виртуальная «звуковая карта», вы не услышите ни одного звука, воспроизводимого и записываемого через эту «карту». Если вы хотите слушать и записывать в одно и то же время, я бы посоветовал просто запустить Pulseaudio, это значительно облегчает эту задачу.