Звуковое устройство Python не воспроизводит звук на Raspberry Pi

Я пытаюсь начать программировать небольшой синтезатор (генератор волн) на моем Raspberry Pi 3a+. Для начала я попытался использовать модуль звукового устройства Python для воспроизведения потока из массива numpy. Тем не менее, мой raspberry pi не выводит никакого звука, что странно, поскольку точно такой же код отлично работает на моем ноутбуке и воспроизводит приятный, устойчивый синусоидальный тон, как и следовало ожидать.

Код, который я использовал, в основном просто скопирован пример кода из документации звукового устройства, его можно найти здесь: https://python-sounddevice.readthedocs.io/en/0.4.1/examples.html#play-a-sine-signal

Я думаю, что загрузил все необходимые модули на свой пи (portAudio и т. д.), так как я загрузил такие же на свой ноутбук, где код работает.

Может быть, sounddevice просто не справляется с какой-то частью железа pi, или я где-то накосячил в настройках ALSA (хотя проверял несколько раз)?

Интересно, что pi отлично воспроизводит звук с модулем simpleaudio, который, к сожалению, недостаточно универсален для того, что я планирую делать, поэтому мне нужно звуковое устройство или что-то подобное. Я был бы очень благодарен, если бы кто-то мог помочь мне здесь.


person Dönerspiess    schedule 07.10.2020    source источник
comment
У меня та же проблема, пока я понял, что это проблема с ALSA и частотой дискретизации. Я сообщу вам, если найду что-нибудь еще   -  person Tris    schedule 25.10.2020
comment
@Tris Спасибо за ответ, по крайней мере, я не одинок с этой проблемой. Могу я спросить, какой Pi вы используете? Было бы интересно узнать, характерна ли эта проблема для определенных моделей. Надеюсь, вы более успешны, чем я, в выяснении причин этой проблемы (у вас могут быть хорошие шансы на это, я не очень хорош в кодировании и не имею опыта работы с аудиовыходом Pi), но если я найду некоторые решение, я тоже выложу его здесь, конечно.   -  person Dönerspiess    schedule 26.10.2020


Ответы (1)


Вам нужно установить частоту дискретизации в /etc/asounc.config на любую частоту дискретизации, которую вы планируете использовать.

pcm.!default {
    rate 48000
    type hw
    card 0
    device 0
}

ctl.!default {
        type hw
        card 0
}
  • Сделайте это, добавив частоту, а затем частоту дискретизации, которую вы планируете использовать.

Ваши приложения должны будут использовать эту частоту дискретизации для правильной работы, поэтому убедитесь, что она правильно установлена ​​в вашем коде.

Надеюсь, это решит вашу проблему

person Tris    schedule 28.10.2020
comment
Спасибо, это сработало. Это было немного сложно, потому что asound.config не существует на моем пи, поэтому мне пришлось выяснить, что .asoundrc делает примерно то же самое, но имеет другую структуру, поэтому мне пришлось проверить, куда поместить файл код, который вы предоставили (я не очень интуитивен в таких вещах), но в итоге все как-то получилось. - person Dönerspiess; 29.11.2020