Table des matières
Bonjour à tous,
Dans cet article, nous allons voir comment configurer un microphone et des écouteurs/enceintes USB à votre Raspberry Pi. C’est plutôt facile, mais beaucoup de tutoriels sur Internet sont bien trop compliqués par rapport à la simplicité de la tâche ! Le microphone que je vais utiliser dans cet article est un plutôt bas de gamme mais fonctionne pas mal. Cependant à ce prix, ne vous attendez pas à des miracles pour la réduction du bruit parasite par exemple.
Détection du microphone
Pour vérifier que votre Raspberry détecte bien votre microphone (ou vos écouteurs), je vous invite à le laisser débrancher et à effectuer la commande lsusb
.
Voici le résultat sur mon Raspberry quand le microphone n’est pas connecté:
[pofilo@RPI3:~]$ lsusb
Bus 001 Device 005: ID 0424:7800 Standard Microsystems Corp.
Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Et voici le résultat quand ce dernier est branché:
[pofilo@RPI3:~]$ lsusb
Bus 001 Device 013: ID 0556:0002 Asahi Kasei Microsystems Co., Ltd
Bus 001 Device 005: ID 0424:7800 Standard Microsystems Corp.
Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
On le retrouve donc à la première ligne. Dans mon cas, le nom du fabricant est Asahi Kasei.
Récupération des identifiants des périphériques
Lister les périphériques de lecture
Cette étape va permettre de trouver le numéro de la carte (card number) de vos écouteurs/enceintes et son identifiant (device number). La commande à effectuer est aplay -l
(-l
pour list-devices
).
[pofilo@RPI3:~]$ aplay -l
**** Liste des Périphériques Matériels PLAYBACK ****
carte 0: ALSA [bcm2835 ALSA], périphérique 0: bcm2835 ALSA [bcm2835 ALSA]
Sous-périphériques: 6/7
Sous-périphérique #0: subdevice #0
Sous-périphérique #1: subdevice #1
Sous-périphérique #2: subdevice #2
Sous-périphérique #3: subdevice #3
Sous-périphérique #4: subdevice #4
Sous-périphérique #5: subdevice #5
Sous-périphérique #6: subdevice #6
carte 0: ALSA [bcm2835 ALSA], périphérique 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
Sous-périphériques: 1/1
Sous-périphérique #0: subdevice #0
Les informations importantes à noter à ce stade sont (avec mon exemple):
carte 0: ALSA [bcm2835 ALSA], périphérique 0: bcm2835 ALSA [bcm2835 ALSA]
Ou bien l’équivalent en anglais selon la langue de votre Raspberry. Le premier concerne donc le numéro de la carte et le second l’identifiant du périphérique. On retrouve ici 2 cartes, la première concerne le port Jack de votre Raspberry (s’il en a un), et le deuxième le port HDMI. Je n’ai en effet pas branché d’écouteurs USB.
Voyons comment récupérer les informations similaires concernant votre microphone !
Lister les périphériques d’enregistrement
On va ici également chercher le numéro de carte et l’identifiant du périphérique. Pour cela, la commande sera arecord -l
.
Avec mon microphone branché, j’obtiens:
**** Liste des Périphériques Matériels CAPTURE ****
carte 1: AK5371 [AK5371], périphérique 0: USB Audio [USB Audio]
Sous-périphériques: 1/1
Sous-périphérique #0: subdevice #0
Même principe que pour les périphériques de lecture, j’en déduis que le microphone utilise la carte 1 et que son identifiant de périphérique est 0. Je reconnais d’ailleurs la marque de mon microphone vu dans le premier paragraphe (Asahi Kasei ici sous la forme AK).
Maintenant que nous avons toutes les infos nécessaires, voyons comment configurer le Raspberry pour utiliser ces périphériques.
Configuration du Raspberry
Sur votre Raspberry, dans le home
de votre utilisateur (cd ~
ou même encore cd
), il faut créer un fichier caché nommé .asoundrc
. Vous pouvez également créer un fichier /etc/asound.conf
pour que la configuration soit par défaut commune à tous les utilisateurs du Raspberry.
Dans ce fichier, je vous invite à mettre ce contenu:
pcm.!default
{
type asym
capture.pcm "mic"
playback.pcm "speaker"
}
pcm.mic
{
type plug
slave
{
pcm "hw:<card number>,<device number>"
}
}
pcm.speaker
{
type plug
slave
{
pcm "hw:<card number>,<device number>"
}
}
Il ne vous reste plus qu’à remplacer les variables entre chevrons par les informations récupérées précédemment (juste les chiffres, par exemple pcm "hw:1,0"
pour mon microphone dans mon cas).
Tester la configuration
On commencera par tester la lecture. Ensuite, on essaiera d’enregistrer un petit test sur 5 secondes qu’on pourra ensuite lire afin de s’assurer que tout fonctionne !
Tester le périphérique de lecture
La commande speaker-test -t wav
va nous permettre de jouer un enregistrement de test sur notre périphérique de lecture. Vous pouvez également tester la stéréo en rajoutant l’option -c 2
(pour configurer le nombre de canaux).
Tester le périphérique d’enregistrement
Pour enregistrer un fichier audio au format raw sur une durée de 5 secondes avec une fréquence d’échantillonnage de 48 kHz, je vous laisse utiliser la commande:
arecord --format=S16_LE --duration=5 --rate=48000 --file-type=raw out.raw
Bien sur, le manuel (man arecord
) peut vous aider à configurer votre test comme vous le désirez ! Une fois la commande effectuée, il faudra donc lire le fichier out.raw.
On reprécise dans la commande la fréquence d’échantillonnage ainsi que le format du fichier à lire:
aplay --format=S16_LE --rate=48000 out.raw
Aller plus loin
La commande alsamixer
va vous permettre de gérer un peu plus finement les paramètres de votre microphone ainsi que le volume de vos écouteurs.
Pour changer la carte son, appuyez sur F6, pour passer de la lecture à la capture, utilisez la touche F4 et F3 pour l’inverse.
Alsamixer en mode lecture | Alsamixer en mode capture |
---|---|
Conclusion
Si vous avez un projet de domotique ou autre impliquant un Raspberry et un microphone ou des enceintes, vous voilà paré pour la suite !
Ceci sera vraisemblablement le dernier article de 2018, alors je vous souhaite par avance de joyeuses fêtes de fin d’année !