Installation de snips sur raspberry

Configuration audio

ReSpeaker 2 mics

Attention, si tu n’as un respeaker mais un autre périphérique audio, il faut que installes les drivers de ton périphérique. Si c’est un périphérique USB, il y’a fort à parier que tu n’aies pas besoin d’installer de drivers, tu peux passer au chapitre suivant « La sortie audio ».

On va donc se charger d’installer les drivers de notre carte son. Pour cela, on va utiliser un outil qui s’appelle « git ». « git » va nous permettre de récupérer tous les fichiers dont on a besoin pour installer les drivers.

$ sudo apt-get install git
$ cd
$ git clone https://github.com/respeaker/seeed-voicecard.git

Normalement, tu devrais obtenir ceci :

pi@raspberrypi:~ $ git clone https://github.com/respeaker/seeed-voicecard.git
Clonage dans 'seeed-voicecard'...
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 637 (delta 8), reused 17 (delta 7), pack-reused 617
Réception d'objets: 100% (637/637), 1.29 MiB | 406.00 KiB/s, fait.
Résolution des deltas: 100% (391/391), fait.
pi@raspberrypi:~ $

La réception à 100% est bon signe. Nous allons donc entrer dans le répertoire fraîchement téléchargé

$ cd seeed-voicecard

Puis juste lancer l’installation

$ sudo ./install.sh

s’ensuit tout un tas de lignes diverses et variées d’installation de prérequis tout ça tout ça, nous ne rentrerons pas dans les détails.

Voilà à quoi devrait ressembler la fin :

7 files changed, 1476 insertions(+)
 create mode 100644 ac108_6mic.state
 create mode 100644 ac108_asound.state
 create mode 100644 asound_2mic.conf
 create mode 100644 asound_4mic.conf
 create mode 100644 asound_6mic.conf
 create mode 100644 dkms.conf
 create mode 100644 wm8960_asound.state
Created symlink /etc/systemd/system/sysinit.target.wants/seeed-voicecard.service → /lib/systemd/system/seeed-voicecard.service.
------------------------------------------------------
Please reboot your raspberry pi to apply all settings
Enjoy!
------------------------------------------------------
pi@raspberrypi:~/seeed-voicecard $

Une fois l’installation terminée, on redémarre donc le raspberry pour que notre ReSpeaker soit pris en compte.

$ sudo reboot

Une fois reconnecté, on peut vérifier que tous les drivers ont été correctement vus par le raspberry avec la commande lsmod :

pi@raspberrypi:~ $ lsmod | grep seeed
snd_soc_seeed_voicecard    16384  1 snd_soc_ac108
snd_soc_simple_card_utils    16384  2 snd_soc_seeed_voicecard,snd_soc_simple_card
snd_soc_core          188416  6 snd_soc_seeed_voicecard,snd_soc_simple_card_utils,snd_soc_bcm2835_i2s,snd_soc_ac108,snd_soc_wm8960,snd_soc_simple_card
pi@raspberrypi:~ $

La sortie audio (haut parleur USB)

Alsa est le logiciel qui gère le son. On va donc utiliser ses outils pour s’assurer que l’on voit bien le micro et notre haut parleur usb. Commençons par le haut parleur USB avec la commande « sudo aplay -l » (L en minuscule pour list) :

pi@raspberrypi:~ $ 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: 7/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
carte 1: Device [USB2.0 Device], périphérique 0: USB Audio [USB Audio]
  Sous-périphériques: 1/1
  Sous-périphérique #0: subdevice #0
carte 2: seeed2micvoicec [seeed-2mic-voicecard], périphérique 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
  Sous-périphériques: 1/1
  Sous-périphérique #0: subdevice #0

pi@raspberrypi:~ $

oula oula !!! Qu’est-ce qu’il nous raconte là ? On va détailler un peu cette réponse

Déjà on peut distinguer 3 cartes :

carte 0: ALSA [bcm2835 ALSA], périphérique 0: bcm2835 ALSA [bcm2835 ALSA]
carte 0: ALSA [bcm2835 ALSA], périphérique 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]

carte 1: Device [USB2.0 Device], périphérique 0: USB Audio [USB Audio]

carte 2: seeed2micvoicec [seeed-2mic-voicecard], périphérique 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []

La carte 0 est tout simplement la carte audio du raspberry. Néanmoins elle n’est pas équipée de micro.

La carte 1 est notre haut parleur USB. C’est donc bon signe, il est bien vu.

La carte 2 est notre carte d’extension audio ReSpeaker qui est équipée de sorties audios.

L’entrée audio (le micro)

Notre carte ReSpeaker est équipée de 2 petits micros de part et d’autre de la carte. Voyons si ils sont bien présents à l’aide de la commande « arecord -l » (avec un L en minuscule pour list) :

pi@raspberrypi:~ $ arecord -l
**** Liste des Périphériques Matériels CAPTURE ****
carte 2: seeed2micvoicec [seeed-2mic-voicecard], périphérique 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
  Sous-périphériques: 1/1
  Sous-périphérique #0: subdevice #0
pi@raspberrypi:~ $

Notre carte 2 (le ReSpeaker) est bien équipée d’une entrée de type « Capture »

La configuration de l’audio

Maintenant, nous allons modifier un fichier qui gère le son. En effet, en installant les outils seeed, celui-ci a modifié notre asound.conf pour lui dire que la sortie du son devrait se faire via les sorties sons de notre ReSpeaker. Or, nous avons des hauts parleurs en USB.

Nous allons modifier ce fichier en tapant :

$ sudo nano /etc/asound.conf

Supprime tout ce qu’il y a dedans pour écrire ce qu’il y a ci-dessous :

pcm.!default {
   type asym
   playback.pcm {
   type plug
   slave.pcm "hw:2,0"
   }
   capture.pcm {
   type plug
   slave.pcm "hw:1,0"
   }
}

Dans la partie playback, on lui dit d’utiliser la carte 1 et sous périphérique 0. Si tu te souviens bien, ça colle avec ce qu’on a vu plus haut.
Dans la partie « Capture », on lui dit d’utiliser la carte 2 et sous périphérique 0.

Bon, on ne va pas se voiler la face, notre asound.conf pourrait être plus optimisé, mais ce n’est pas notre problème du moment.

Maintenant que tu as fait ça, nous allons tester le son.

$ aplay /usr/share/sounds/alsa/Front_Right.wav

Si tu entends une petite voix qui te dit « Front Right », alors c’est un premier pas vers la victoire, cela veut dire que tu as du son en sortie 🙂

Maintenant on va tester le micro

$ arecord toto.wav

Baragouine la phrase que tu veux (tant que ça dure au moins 5 secondes) puis fais un CTRL+C (appuie en même temps sur la touche CTRL et la touche C). Tu devrais avoir ceci :

pi@raspberrypi:~ $ arecord toto.wav
Capture WAVE 'toto.wav' : Unsigned 8 bit, Fréquence 8000 Hz, Mono
^CInterrompu par le signal Interrompre...
pi@raspberrypi:~ $

Il ne reste plus qu’à rejouer le son que tu viens d’enregistrer pour s’assurer que ça fonctionne :

$ aplay toto.wav

Ta douce voix devrait sortir de façon nasillarde du haut parleur USB 🙂

Gestion du volume en lecture et enregistrement

Il y a un petit outil en mode texte qui va nous permettre de régler le volume des haut parleurs en sortie et du micro en entrée, c’est « alsamixer »

$ alsamixer
Alsmamixer

Comme on arrive sur la carte son du raspberry, on va faire « F6 »

Sélection de la carte son

puis sélectionner notre carte USB (en 1 dans l’image ci-dessus) puis taper « Entrée »

Alsa configuration haut parleur USB

Vérifie en haut à gauche que tu n’as pas eu les doigts palmés et que c’est bien notre haut parleur USB de sélectionné. Tu peux ensuite baisser et monter le son grâce aux flèches « haut » et « bas » de ton clavier.

Ensuite, pour le réglage du micro, on refait « F6 » sauf que cette fois ci, on sélectionne « seeed-2mic-voicecard »

Sélection du ReSpeaker

Par défaut, les canaux d’enregistrement sont cachés. Pour les afficher il faut faire F4, mais chez moi ça ferme alsamixer (bug avec putty). Dans ce cas, tu tapes « F5 » et tu verras les canaux en entrée et en sortie. Je te rappelle que sur la carte ReSpeaker, seuls les canaux en entrée (input) nous intéresse.

Modifier le niveau d’enregistrement

Il ne te reste plus qu’à naviguer avec les flèches « droite » et « gauche » du clavier pour sélectionner le canal que tu veux modifier et toujours « haut » et « bas » pour le réglage.

On finit avec un « sudo alsactl store » et on passe à l’installation de snips

19 Comments

  1. Hello
    Super projet ça a l’air top et le tuto bien fait. J’arrive à l’étape sam install assistant et il me demande enter the path to home assistant. De quel répertoire s’agit-il ?
    Merci de votre aide
    Mathieu

    • Bonjour matthieu,

      C’est tout simplement parce que tu as dans ton assistant une application qui s’appuie sur home-assistant dans ces actions. Au vu de ta question, tu n’as pas home assistant (concurrent jeedom, eedomus, openhab etc…).
      Il faut donc que tu trouves cette application et que tu l’enlèves de l’assistant. Pour cela, tu dois Forké toutes tes applications ainsi que les intents et regarder chaque action.
      Il y’a plusieurs possibilité : Snipplets, github et home assistant. Si ton action fait appel à home assistant, ce n’est pas bon 🙂

      Ced

    • Bonjour
      Effectivement je suis aller un peu vite j’ai voulu essayer pleins d’app snips 😆.
      Par contre j’ai maintenant pleins d’erreurs de ce type quand je fait Sam install assistant.
      Une idée ?
      Certaines apps ont besoin de l’assistant Google ? Je peux faire un mix de snips et de Google ?
      Merci


      Cloning skill bluevert.Heure from url: https://github.com/JDureau/snips-skill-heure
      error: impossible d’ouvrir .git/FETCH_HEAD: Permission non accordée

      Running setup.sh & generating virtual environment for snips-skill-heure
      ✖ Error setting up virtualenv, one or more actions might not be able to run. Reason :
      Traceback (most recent call last):
      File « /usr/lib/python3/dist-packages/virtualenv.py », line 2379, in

    • Bonjour Mathieu,

      Nettoie tout et refait un sam install assistant :
      pi@raspberrypi:~ $ sudo rm -r /usr/share/snips/assistant/*
      pi@raspberrypi:~ $ sudo rm -r /var/lib/snips/skills/*

      Ced

    • Bonjour Pour information j’ai du repartir de zéro et réinstallé ma distribution. Quand j’installe qu’une seule application cela marche sans problème par contre des que j’essaye d’installer une application qui nécessite home assistant cela plante tout. Cela capte bien la voix mais ne répond plus.
      A priori des bugs ont été saisies sur ce problème.

    • Bonjour Mathieu,

      Effectivement, si tu n’as pas home-assistant, il ne faut pas installer les applications qui nécessitent en pré-requis home-assistant.
      C’est vrai que le store d’application de snips est excessivement mal fait à l’heure d’aujourd’hui car il n’est pas possible de trier les applications par la technologie des actions (avec ou sans, HA, github, snippets).
      Il n’y a plus qu’à espérer que ce soit une futur mise à jour proche !

      Ced

  2. Hello,

    Genial tes tutos. Il manque l’integration a Jeedom ! 😀
    petite coquille, page 4, juste avant le paragraphe « l’installation de sam » il faudrait modifier la commande
    sudo apt-get install -y snips-platform-voice snips-skill-server
    par
    sudo apt-get install -y snips-platform-voice snips-skill-server snips-watch

    Sinon il manque un bout;

    Bon je sais que maintenant il y a sam init mais bon…

    Freddy

    • Bonjour Freddy,

      Effectivement, mais tu remarqueras que l’install de snips-watc est page 7 😉
      J’avais déjà remarqué ce détail mais commme l’install est donnée un peu plus loin, j’ai laissé l’article comme il est 🙂

      En tout cas merci pour la relecture ! 🙂

      Ced

  3. Bonsoir Ced,
    J’ai fait un rpi-update et je m’en mors les doigts GRRRRR
    Mon respeaker 2 mic tirer sa révérence.J’ai essayé de ré-installer les pilotes rien n’y fait.
    Problème connu et une solution existe? ou suis-je le seul?

  4. Merci Ced
    Il me manquait un argument dans l’ajout de mon utilisateur dans le groupe sudo.
    Je faisait usermod -G sudo Nouvel utilisateur au lieu de
    usermod -a -G sudo Nouvel utilisateur je teste ça aujourd’hui.

  5. Bonjour,
    Merci pour ce Tuto clair et précis.
    J’ai 2 soucis :
    Si je choisi un autre nom d’utilisateur que pi tout se passe bien jusqu’au reboot post install de mon respeaker2mic; lsmod | grep seeed ne retourne rien aplay -l et arecord -l idem par contre si aplay -l et arecord -l exécuté en sudo ma carte est bien présente ( utilisateur crée au départ appartenant au groupe sudo et pi supprimé avant toute install)
    Et deuxièmement si je fait une Maj du kernel dans dernière mouture avec une installation avec user pi par défaut j’ai le même souci qu’en haut.
    Avez vous une idée ?
    Merci
    Hervé

    • Bonsoir,

      Il ne faut pas oublier d’ajouter ce nouvel utilisateur dans les mêmes groupes natifs que pi. Pour en obtenir la liste :
      cat /etc/group | grep pi

      ensuite il faut exécuter cette commande pour chaque groupe :
      usermod -a -G groupe nouvel_utilisateur

      où « groupe » est le nom du groupe à affecter au nouvel utilisateur et « nouvel_utilisateur » le login du nouvel utilisateur.

      Si cela n’est pas fait, le nouvel utilisateur créé n’a pas accès à certaines ressources (audio, gpio etc…)

      Ced

  6. Bonjour,
    Merci pour ce tuto. J’ai bien suivi toutes les étapes mais lors du test du micro, j’ai un fort grésillement et ma voix est quasi inaudible.
    Tu sais d’ou ca peut venir ?
    Merci

    • Bonjour Pang,

      Il me faudrait plus d’info sur le matériel utilisé mais là, il semblerait que cela soit un problème matériel. Surtout si tu entends ta voix dans le fond.

      Cela peut-être dû à un défaut de masse ou une pollution de ton alimentation. Ce sont là que des suppositions, mais si j’étais toi, j’essaierai de changer d’alimentation et de micro dans un premier temps pour voir le résultat.

      Ced

Poster un Commentaire

Votre adresse de messagerie ne sera pas publiée.


*


Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.