Come configuro il mio suono per Jasper su Raspbian Jessie?


19

Sto usando Raspbian Jessie (21-11-2015) per eseguire Jasper (ramo principale) sul Raspberry Pi 2 Modello B. Le istruzioni di installazione nella documentazione sembrano essere per Wheezy e non per Jessie.

L'esecuzione di Jasper su Wheezy funziona bene. Ma, su Jessie, ho avuto problemi a configurare il suono. O il mio microfono ha funzionato ma non l'altoparlante o viceversa.

Ciò che deve essere fatto è che la scheda audio predefinita deve essere impostata su USB perché è lì che è collegato il mio microfono USB e Jasper lo richiede. Ci sono molte risposte che parlano della configurazione di ALSA tramite ~/.asoundrc, /etc/asound.confe anche /usr/share/alsa/alsa.confma nessuna di queste ha funzionato per me.

Quando apro il mixer alsamixere premo F6, vedo sempre bcm2835la scheda predefinita. Questa è la scheda predefinita del Pi2 ma voglio rendere la mia USB la scheda predefinita.

Come faccio a fare questo?

Risposte:


25

Secondo il Wiki ALSA , sotto il titolo " Come scegliere un ordine particolare per più schede installate ", si afferma quanto segue:

Quale carta è la carta numero 0, 1 e quindi è determinata di default dall'ordine di caricamento del modulo. Ciò è particolarmente utile per scegliere quale carta diventa quella predefinita.

In teoria quindi è possibile scegliere quale delle diverse schede installate diventa la scheda 0, quella predefinita, assicurandosi che il suo modulo driver sia caricato per primo. (Nota: ciò presuppone che ogni scheda audio richieda un driver diverso. Se si dispone di due schede audio dello stesso tipo, passare alla sezione successiva.)

Esistono due modi per ottenere ciò, l'indice "vecchio" = opzione del modulo driver della scheda e l'opzione (e nuova) slot = opzione del modulo snd.

Documenta due metodi per farlo:

  1. Il metodo "index =" precedente
  2. Il nuovo metodo "slots ="

Il primo è ciò che raccomandano le istruzioni di installazione di Jasper. È anche ciò di cui parla la maggior parte delle soluzioni là fuori. Tuttavia, questo è il metodo precedente e potrebbe non funzionare su più immagini Raspbian Jessie correnti.

Una combinazione di entrambi i metodi è ciò che ha funzionato per me.

Prima di tutto, controlla per vedere in quale ordine sono state caricate le tue carte:

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

Il conteggio delle carte inizia 0quindi il bcm2835primo viene caricato per primo e la mia scheda USB che ha il mio microfono viene caricata per seconda.

Per riordinare le mie carte, devo prima creare un file chiamato /etc/modprobe.d/alsa-base.conf. Può essere nominato come desiderato purché si concluda .conf. Ho quindi aggiunto quanto segue:

# 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

I commenti dovrebbero spiegare cosa fa ogni riga. Una volta che lo fai, sembra che devi riavviare il computer per farlo funzionare.

Una volta riavviato, dovresti essere in grado di registrare un po 'di audio con la scheda predefinita che ora dovrebbe essere il tuo microfono:

$ arecord temp.wav

e quindi riproducilo, specificando la scheda come 1 e il dispositivo come 0 che è dove dovrebbe essere l'uscita del tuo altoparlante:

aplay -D plughw:1,0 temp.wav

Inizialmente ho solo aggiunto la linea con slotsdentro. Questo ha funzionato nel rendere la mia scheda USB la scheda predefinita ma è stata indicizzata in modo errato. Ad esempio, una volta che l'ho fatto, questo è come il mio /proc/asound/modulesaspetto:

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

Idealmente, dovrebbe apparire così:

 0 snd_usb_audio
 1 snd_bcm2835

Ed è per questo che uso anche il indexmetodo per raggiungere questo obiettivo.


Sono contento che abbia aiutato :) Avrò uno script di installazione bash e un libro di cucina dello Chef per fare tutto questo in pochi giorni, sul mio account Github (link nel mio profilo).
Housni,

snd_usb_audioPurtroppo ho due dispositivi chiamati .
Kleinfreund,

@Housni Hai già creato quella sceneggiatura?
not2qubit

0

Dopo aver provato a eseguire il debug dei problemi di alsa per questo progetto e aver funzionato ENTRAMBI i microfoni USB e gli altoparlanti bcm2835, penso che ci sia un problema di base che TUTTI i consigli ALSA che ho ricevuto non affrontano.

La directory / usr / share / alsa / cards non ha un file bcm2835.conf. Il file di directory / usr / share / alsa alsa.conf lascia MOLTI stub che devono essere specificati. A meno che non venga fornita una scheda per bcm2835, l'accensione di Jasper.py visualizza molti messaggi di errore apparentemente non fatali. Elaborando un file bcm2835.conf, è possibile eliminare i messaggi irritanti.

Mi sembra che questo sia un bug di Jessie; dovrebbe esserci davvero un file che risolve questi messaggi di errore. Mi sembra solo pigro per il programmatore jessie che si occupa di ALSA di non averne creato uno testato.

Non ho analizzato tutti i messaggi di errore, ma sospetto che anche altri messaggi siano causati da questo.

Un altro caso di non avere una versione matura è il mancato controllo del vecchio firmware durante l'avvio. Il vecchio firmware sul mio jessie ha provocato un desktop che non rispondeva alla tastiera o al mouse, che è uno showtopper per l'utilizzo di jessie con il vecchio firmware, a meno che non si conosca ssh. Non è una situazione utente ingenua.


1
WRT "sembra solo pigro per il programmatore jessie che si occupa di ALSA di non averne creato uno testato", non confondersi nel credere che Debian 8, alias. jessie, da cui è costruito Raspbian, è destinato principalmente al SoC Raspberry Pi e BCM2835. Quest'ultimo rappresenterebbe <1% degli utenti Debian, quindi difficilmente può essere considerato una priorità per loro. Il fatto che un gruppo di volontari principalmente non voglia lavorare con la tastiera 25 ore al giorno per essere tutto per tutti non li rende pigri ....
goldilocks

... Indica solo che non c'è interesse sufficiente da parte delle persone nella comunità con le competenze tecniche necessarie per svolgere il lavoro.
Riccioli d'oro
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.