как правильно установить portaudio на pi

Я работаю над проектом, который включает запись с микрофона на Raspberry Pi. на данный момент я получаю эту ошибку во время работы программы.

python3: src/hostapi/alsa/pa_linux_alsa.c:3641: PaAlsaStreamComponent_BeginPolling: утверждение `ret == self->nfds' не удалось. Прервано

при поиске способов исправить это я понял, что файл pa_linux_alsa.c принадлежит аудио порта. пожалуйста, обратитесь к следующим ссылкам.

изменил pa_linux_alsa.c, я думаю

как установить порт аудио

ссылка для скачивания

первая ссылка об ошибке и измененном исправлении, до сих пор не знаю, куда скопировать, а последние две об установке portaudio. по-видимому, нет более простого способа установить это с помощью команды.

Я скачал расширенную версию pa_snapshot. но я не знаю, куда мне положить эти файлы, чтобы начать настраивать и делать как в ридми. Я скопировал каталог portaudio в home/pi (в пользователе, я думаю, "cd" и скопировал его туда), затем сделал как в файле readme и перезагрузил систему. я не вижу никаких изменений в ошибке в программе. я попытался использовать команду whereis с pa_linux_alsa.c. эта команда также не показывает файл или что-либо, связанное с portaudio.


person Eshaka    schedule 23.11.2019    source источник
comment
Для всех, кто приходит сюда, эта проблема не является эксклюзивной для Raspberri Pi.   -  person matanster    schedule 26.09.2020


Ответы (1)


Ваша первая ссылка правильно определяет ошибку в portaudio, но исправление неполное. Я разветвил библиотеку portaudio и создал патч, чтобы это исправить. Вот шаги по удалению пакета portaudio и компиляции исправленной версии из исходного кода:

sudo apt-get remove libportaudio2
sudo apt-get install libasound2-dev
git clone -b alsapatch https://github.com/gglockner/portaudio
cd portaudio
./configure && make
sudo make install
sudo ldconfig
cd ..

На данный момент у вас должна быть исправленная библиотека portaudio, основанная на теге pa_stable_v190600_20161030. Наконец, если вам нужен пакет PyAudio для Python, установите его с помощью pip: sudo pip3 install pyaudio.

person Greg Glockner    schedule 24.03.2020
comment
commit 80aafc6 (т.е. кончик вашей ветки alsapatch), кажется, излишне удаляет много обработки ошибок. Я отправил более аккуратную версию в список рассылки portaudio что может быть предпочтительнее - person Sam Mason; 12.05.2020
comment
Кто-нибудь знает, было ли это полностью решено/решено выше по течению? - person matanster; 08.06.2020
comment
Я только что заметил, что Debian загружает мой исправьте сейчас. Следовательно, использование пакета версии 19.6.0-1.1 (или более поздней) предположительно исправит это в Debian. Ubuntu, кажется, еще не подобрала его, и я не могу проверить, потому что в эти дни я использую Arch - person Sam Mason; 17.08.2020
comment
Похоже, он попал в следующий выпуск Ubuntu , если я правильно смотрю. - person matanster; 26.09.2020