Jak skonfigurować dźwięk dla Jaspera w Raspbian Jessie?


19

Używam Raspbian Jessie (2015-11-21), aby uruchomić Jasper (gałąź główna) na Raspberry Pi 2 Model B. Instrukcje instalacji w dokumentacji wydają się dotyczyć Wheezy, a nie Jessie.

Uruchamianie Jaspera na Wheezy działa dobrze. Ale na Jessie miałem problemy z konfiguracją dźwięku. Albo mój mikrofon działał, ale nie działał głośnik lub odwrotnie.

To, co należy zrobić, to ustawić domyślną kartę dźwiękową na USB, ponieważ tam właśnie jest podłączony mój mikrofon USB i Jasper tego wymaga. Istnieje wiele odpowiedzi na temat konfigurowania ALSA za pośrednictwem ~/.asoundrc, /etc/asound.confa nawet /usr/share/alsa/alsa.confżadna z nich nie działała dla mnie.

Kiedy otwieram mikser przez alsamixeri nacisnę F6, zawsze widzę bcm2835kartę domyślną. To jest domyślna karta Pi2, ale chcę, aby mój USB był domyślną kartą.

Jak mam to zrobic?

Odpowiedzi:


25

Według Wiki ALSA pod tytułem „ Jak wybrać konkretne zamówienie dla wielu zainstalowanych kart ”, stwierdza:

Która karta ma numer 0, 1, a więc domyślnie zależy od kolejności ładowania modułów. Jest to szczególnie przydatne do wyboru karty, która stanie się domyślną.

Teoretycznie można więc wybrać, która z kilku zainstalowanych kart stanie się kartą 0, domyślną, upewniając się, że moduł sterownika jest ładowany jako pierwszy. (Uwaga: zakłada się, że każda karta dźwiękowa wymaga innego sterownika. Jeśli masz dwie karty dźwiękowe tego samego typu, przejdź do następnej sekcji).

Można to osiągnąć na dwa sposoby: „stary” indeks = moduł modułu karty i alternatywne (i nowe) sloty = opcja modułu snd.

Dokumentuje dwie metody:

  1. Starsza metoda „index =”
  2. Nowsza metoda „slots =”

To pierwsze zalecają instrukcje instalacji Jaspera. O tym też mówi większość rozwiązań. Jest to jednak starsza metoda i może nie działać na bardziej aktualnych obrazach Raspbian Jessie.

Połączenie obu metod sprawdziło się dla mnie.

Przede wszystkim sprawdź, w jakiej kolejności zostały załadowane twoje karty:

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

Liczenie kart zaczyna się od, 0więc domyślnie bcm2835jest ładowane jako pierwsze, a moja karta USB z moim mikrofonem jest ładowana jako druga.

Aby zmienić kolejność kart, najpierw tworzę plik o nazwie /etc/modprobe.d/alsa-base.conf. Można go nazwać dowolną nazwą, o ile kończy się .conf. Następnie dodałem:

# 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

Komentarze powinny wyjaśniać, co robi każda linia. Gdy to zrobisz, wydaje się, że musisz ponownie uruchomić komputer, aby działał.

Po ponownym uruchomieniu powinieneś być w stanie nagrać trochę dźwięku z domyślną kartą, która powinna być teraz Twoim mikrofonem:

$ arecord temp.wav

a następnie zagraj w nią, określając kartę jako 1, a urządzenie jako 0, czyli tam, gdzie powinno być wyjście głośnika:

aplay -D plughw:1,0 temp.wav

Początkowo dodałem tylko linię z slotsnim. To działało, czyniąc moją kartę USB domyślną kartą, ale została źle zindeksowana. Na przykład, kiedy to zrobiłem, /proc/asound/moduleswyglądałem tak:

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

Idealnie powinno wyglądać tak:

 0 snd_usb_audio
 1 snd_bcm2835

I dlatego też używam tej indexmetody, aby to osiągnąć.


Cieszę się, że pomogło :) Będę mieć skrypt instalacyjny bash, a także książkę kucharską szefa kuchni, aby zrobić to wszystko za kilka dni, na moim koncie Github (link w moim profilu).
Housni 11.01.16

snd_usb_audioNiestety mam dwa urządzenia .
kleinfreund

@Housni Czy stworzyłeś już ten skrypt?
not2qubit

0

Po próbie debugowania problemów z alsą w tym projekcie i uruchomieniu OBIEKTYW mikrofonu USB i głośników bcm2835 myślę, że istnieje podstawowy problem, z którym WSZYSTKIE otrzymane porady ALSA nie rozwiązują.

Katalog / usr / share / alsa / cards nie ma pliku bcm2835.conf. Plik katalogu / usr / share / alsa alsa.conf pozostawia wiele kodów pośredniczących, które należy określić. O ile nie jest dostarczona karta dla bcm2835, uruchomienie Jasper.py wyświetla wiele rzekomo niekrytycznych komunikatów o błędach. Opracowując plik bcm2835.conf, możesz pozbyć się irytujących wiadomości.

Wydaje mi się, że to błąd Jessie; naprawdę powinien istnieć plik, który rozwiązuje te komunikaty o błędach. Wydaje mi się, że jestem leniwy dla programisty jessie, który zajmuje się ALSA, aby nie stworzył testowanego.

Nie przepracowałem wszystkich komunikatów o błędach, ale podejrzewam, że są to również spowodowane innymi komunikatami.

Innym przypadkiem braku dojrzałej wersji jest brak sprawdzania starego oprogramowania podczas uruchamiania. Stare oprogramowanie układowe na moim jessie spowodowało, że pulpit nie reagowałby na klawiaturę lub mysz, co jest przeszkodą w używaniu jessie ze starym oprogramowaniem, chyba że znasz ssh. Nie naiwna sytuacja użytkownika.


1
WRT to „wydaje się po prostu leniwe dla programisty jessie, który zajmuje się ALSA, aby nie stworzył takiego, który jest testowany”, nie mylcie się z przekonaniem, że Debian 8, alias. jessie, z którego zbudowany jest Raspbian, jest przeznaczony głównie dla Raspberry Pi i BCM2835 SoC. Ta ostatnia stanowiłaby <1% użytkowników Debiana, więc nie można ich uznać za priorytet. Fakt, że grupa przede wszystkim ochotników nie chce pracować przy klawiaturze 25 godzin dziennie, aby być wszystkim dla wszystkich, nie powoduje, że są leniwi ....
goldilocks

... To tylko wskazuje, że ludzie w społeczności nie mają wystarczającego zainteresowania niezbędną wiedzą techniczną do wykonania pracy.
goldilocks
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.