Как мне настроить мой звук для Jasper на Raspbian Jessie?


19

Я использую Raspbian Jessie (2015-11-21) для запуска Jasper (основной ветки) на Raspberry Pi 2 Model B. Инструкции по установке в документации, похоже, предназначены для Wheezy, а не для Jessie.

Запуск Jasper на Wheezy работает нормально. Но на Джесси у меня были проблемы с настройкой звука. Либо мой микрофон работал, но не динамик, или наоборот.

Что нужно сделать, так это то, что звуковая карта по умолчанию должна быть настроена на USB, потому что именно там подключен мой USB-микрофон, и Jasper требует этого. Есть много ответов, которые говорят о настройке ALSA через ~/.asoundrc, но /etc/asound.confдаже, /usr/share/alsa/alsa.confно ни один из них не работал для меня.

Когда я открываю свой микшер alsamixerи нажимаю F6, я всегда вижу bcm2835карту по умолчанию. Это карта по умолчанию для Pi2, но я хочу, чтобы мой USB был картой по умолчанию.

Как мне это сделать?

Ответы:


25

Согласно ALSA Wiki , под заголовком, который гласит « Как выбрать определенный заказ для нескольких установленных карт », говорится следующее:

Какая карта имеет номер карты 0, 1 и т. Д. По умолчанию определяется порядком загрузки модуля. Это особенно полезно, чтобы выбрать, какая карта станет картой по умолчанию.

Поэтому теоретически можно выбрать, какая из нескольких установленных карт станет картой 0, по умолчанию, гарантируя, что ее модуль драйвера загружается первым. (Примечание. Предполагается, что для каждой звуковой карты требуется свой драйвер. Если у вас две звуковые карты одного типа, перейдите к следующему разделу.)

Для этого есть два способа: «старый» параметр index = модуля драйвера карты и альтернативный (и новый) параметр slots = модуля snd.

Он документирует два способа сделать это:

  1. Более старый метод "index ="
  2. Более новый метод "slots ="

Первый - это то, что рекомендуют инструкции по установке Jasper. Это также то, о чем говорят большинство решений. Тем не менее, это более старый метод, и он может не работать с более современными изображениями Распби Джесси.

Комбинация обоих методов - вот что сработало для меня.

Прежде всего, проверьте, в каком порядке загружены ваши карты:

$ cat /proc/asound/modules
 0 snd_bcm2835
 1 snd_usb_audio

Отсчет карт начинается с 0того, что bcm2835сначала загружается значение по умолчанию , а вторая - моя USB-карта с микрофоном.

Чтобы изменить порядок моих карт, я сначала создаю файл с именем /etc/modprobe.d/alsa-base.conf. Оно может быть названо как угодно, если оно заканчивается .conf. Затем я добавил следующее:

# This sets the index value of the cards but doesn't reorder.
options snd_usb_audio index=0
options snd_bcm2835 index=1

# Does the reordering.
options snd slots=snd_usb_audio,snd_bcm2835

Комментарии должны объяснить, что делает каждая строка. Как только вы это сделаете, похоже, вам придется перезагрузить компьютер, чтобы он заработал.

После перезагрузки вы сможете записать звук на карту по умолчанию, которая теперь должна быть вашим микрофоном:

$ arecord temp.wav

и затем воспроизведите его, указав карту как 1 и устройство как 0, где должен быть выход вашего динамика:

aplay -D plughw:1,0 temp.wav

Я изначально только добавил строку с slotsв нем. Это помогло сделать мою USB-карту картой по умолчанию, но она была проиндексирована неправильно. Например, как только я это сделал, вот как /proc/asound/modulesвыглядел мой :

$ cat /proc/asound/modules
 1 snd_usb_audio
 2 snd_bcm2835

В идеале это должно выглядеть так:

 0 snd_usb_audio
 1 snd_bcm2835

И именно поэтому я также использую indexметод для достижения этой цели.


Рад, что это помогло :) У меня будет скрипт установки bash, а также поваренная книга шеф-повара, которая сделает все это через несколько дней на моем аккаунте Github (ссылка в моем профиле).
Хоусни

У меня два устройства называется snd_usb_audio, к сожалению.
kleinfreund

@ Хаусни Ты уже делал этот сценарий?
not2qubit

0

После попытки отладить проблемы alsa для этого проекта и заставить работать ОБА usb mic и bcm2835, я думаю, что есть основная проблема, с которой ВСЕ советы ALSA, которые я получил, не касаются.

В каталоге / usr / share / alsa / cards отсутствует файл bcm2835.conf. Файл каталога / usr / share / alsa alsa.conf оставляет много заглушек, которые необходимо указать. Если карта для bcm2835 не поставлена, запуск Jasper.py отображает много предположительно нефатальных сообщений об ошибках. Работая с файлом bcm2835.conf, вы можете избавиться от раздражающих сообщений.

Мне кажется, что это ошибка Джесси; там действительно должен быть файл, который разрешает эти сообщения об ошибках. Мне кажется, просто лениво, что программист Джесси, который занимается ALSA, не создал тестируемого.

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

Другим случаем отсутствия зрелого выпуска является сбой при проверке старых прошивок. Старые прошивки на моем jessie привели к тому, что рабочий стол не реагировал на клавиатуру или мышь, что является показателем того, как использовать jessie со старыми прошивками, если вы не знаете ssh. Не наивная пользовательская ситуация.


1
WRT: «Кажется, просто лениво для программиста Джесси, который имеет дело с ALSA, не создать тестируемый», не думайте, что Debian 8, он же. Джесси, из которой построен Raspbian, предназначен в первую очередь для Raspberry Pi и BCM2835 SoC. Последние будут составлять <1% пользователей Debian, поэтому вряд ли это можно считать приоритетом для них. Тот факт, что группа в первую очередь добровольцев не хочет работать на клавиатуре 25 часов в день, чтобы быть всем для всех, не делает их ленивыми ....
Златовласка

... Это просто указывает на то, что люди в сообществе, обладающие необходимыми техническими знаниями для выполнения работы, не проявляют достаточного интереса
Златовласка
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.