Я использую последнюю версию Raspbian на Raspberry Pi с установленными Python 2.7 и 3.7. Для проекта мне нужно реализовать некоторые возможности пространственного / бинаурального воспроизведения аудиофайлов в Python и Pyglet (версия 1.5.6) (https://pypi.org/project/pyglet/, https://github.com/pyglet/pyglet) кажется самым простым вариантом с наименьшими зависимостями. Однако я не слышу вывод звука через наушники. Вот что я сделал:
- Установленные зависимости пиглета:
sudo apt-get install ffmpeg libopenal1 libopenal-dev python3-pil.imagetk python3-pil python3-matplotlib python3-scipy gstreamer1.0-alsa gstreamer1.0-python3-plugin-loader
(Из предыдущих программ в системе также были установлены cmake, python3-opencv libopencv-dev libusb-1.0-0-dev, libboost-program-options-dev
и python3-numpy
) - Затем я установил пиглет как согласно данным в руководстве:
sudo pip3 install --upgrade pyglet
. Установка прошла без ошибок. - Я знаю, что по умолчанию Raspbeery Pi часто выводит звук через порт HDMI, а не через порт A / V. Итак, я перешел в raspi-config, используя
sudo raspi-config
, перешел в Advanced Options -> Audio. Выбрал подходящий вариант (в моем случае 1 Headphones
). Я проверил, нормально ли воспроизводится звук через мои наушники, проиграв пару видео с YouTube и аудиофайлов на самом Raspberry Pi. - Затем я проверил, работает ли пиглет, импортировав пиглет с
import pyglet
в python shell, он работал нормально, без предупреждений или ошибок. - Я запустил пример программы, представленный здесь: https://github.com/pyglet/pyglet/tree/master/examples/soundspace. Для этого я загрузил репо https://github.com/pyglet/pyglet и перешел в соответствующий каталог (с помощью команды
cd
) и написал: sudo python3 soundspace.py
. Для краткого обзора программа содержит 4 инструмента, которые можно перемещать по комнате с помощью мыши. При этом звук, который вы слышите от каждого инструмента, изменяется в зависимости от положения и ориентации этих инструментов, а также от вашего виртуального положения в мини-игре. Программа выполняется без отображения ошибок в терминале, но я не слышу звука. Когда я пытаюсь переместить объекты, программа зависает, но в терминале не отображается никаких ошибок. - Поскольку меня меньше всего беспокоила сложная программа, я решил создать свою собственную простую программа, которая будет воспроизводить файл wav (полученный из самого репозитория разработчика Pyglet, прежде чем кто-либо скажет, что файл wav несовместим https://github.com/pyglet/pyglet/tree/master/examples/soundspace), ссылка из: https://pyglet.readthedocs.io/en/latest/programming_guide/media.html. Вот фрагмент кода:
import pyglet
pyglet.options['search_local_libs'] = True
pyglet.options['audio'] = ('openal')
source = pyglet.media.load('Bass.wav', streaming=False)
source.play()
Согласно документации, если я не ошибаюсь, это должно воспроизводить файл wav, передаваемый в источник. Кажется, программа работает без ошибок, отображаемых в терминале. Но я не слышу звука из программы.
Я также немного напортачил с
pyglet.media.Player()
, но все те же наблюдения: в терминале нет ошибок, но нет звука.
Есть какие-нибудь предложения по устранению проблемы? Обратите внимание, что я бы предпочел использовать Pyglet, поскольку это единственный пакет пространственного / бинаурального / позиционного звука Python, которому удалось почти хорошо работать, не нарушая мою ОС, поэтому было бы лучше, если альтернативные предложения будут немного встроены в этот пакет и не совсем другое.