Як налаштувати звук для Jasper на Raspbian Jessie?


19

Я використовую Raspbian Jessie (2015-11-21), щоб запустити Jasper (головну гілку) на Raspberry Pi 2 Model B. Інструкції з установки в документації, схоже, стосуються Wheezy, а не Джессі.

Запуск 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, типовою за замовчуванням, забезпечивши, що її перший драйвер завантажується. (Примітка. Це передбачає, що для кожної звукової карти потрібен інший драйвер. Якщо у вас є дві звукові карти одного типу, перейдіть до наступного розділу.)

Домогтися цього можна двома способами: "старий" індекс = параметр модуля драйвера картки та альтернативний (і новий) слот = варіант модуля snd.

Він документує два способи цього:

  1. Старіший метод "index ="
  2. Новіший метод "slots ="

Перше - це те, що рекомендують інструкції з установки Jasper. Це також те, про що говорить більшість рішень там. Однак це старіший метод і може не працювати на більш актуальних зображеннях Raspbian Jessie.

Комбінація обох методів - це те, що працювало для мене.

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

$ 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метод для досягнення цього.


Рада, що це допомогло :) У мене на скрипті Github (посилання в моєму профілі) у мене буде сценарій налаштування башти, а також поварна книга шеф-кухаря, щоб зробити все це за кілька днів.
Гусні

У мене є snd_usb_audio, на жаль, два пристрої, які називаються .
kleinfreund

@Housni Ти зробив цей сценарій ще?
not2qubit

0

Після спроби налагодити проблеми alsa для цього проекту та отримати BOTH usb mic та bcm2835 динаміки, які працюють, я думаю, що є основна проблема, з якою ВСІ поради, які я отримав, не мають проблеми.

У каталозі / 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, ака. jessie, з якого побудовано Raspbian, призначений насамперед для Raspberry Pi та BCM2835 SoC. На останній припадає <1% користувачів Debian, тому навряд чи можна вважати їх пріоритетним. Той факт, що група в основному добровольців не хоче працювати за клавіатурою 25 годин на день, щоб бути всім для всіх, не робить їх лінивими ....
goldilocks

... Це просто вказує на недостатній інтерес людей у ​​громаді, які мають необхідну технічну експертизу для виконання роботи.
goldilocks
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.