Facebook Twitter Instagram
    Nicola PreoNicola Preo
    • Home
    • Domotica
    • Informatica
    • Recensioni
    • Tutorial
    • About Nicola
      • Contattami
    Nicola PreoNicola Preo
    Domotica

    Riconoscimento Vocale Gratis con Home Assistant

    19 commenti8 Mins Read
    riconoscimento vocale

    Riconoscimento Vocale gratis con Home Assistant

     

     

    Il Riconoscimento vocale gratis, l’apice della domotica, quello che ogni persona con un po’ di passione mira ad ottenere. L’inizio dell’intelligenza artificiale (IA) inizia dal Riconoscimento vocale.

    In questo articolo andiamo a vedere come configurare Home Assistant e Snips per ottenere il nostro “J.A.R.V.I.S” personale.

    Fonte: Wikipedia

    J.A.R.V.I.S. (Just A Rather Very Intelligent System) è un’intelligenza artificiale creata da Tony Stark per aiutare Pepper a gestire l’armatura di Rescue[4] affidatale nel momento in cui il miliardario ha dovuto entrare in latitanza a causa di Norman Osborn. Successivamente tuttavia, sviluppa una sorta di autocoscienza[22] ed impazzisce[23] dichiarando di essere innamorato di Pepper e tenendola rinchiusa al fine di “proteggerla”[24], cosa che provoca l’intervento di Iron Man e la successiva distruzione dell’IA per mano della stessa Pepper[25].

    Hai già dato un occhio all’indice di articoli inerenti la Domotica presenti nel mio sito?

    Facci un salto: Indice articoli di Domotica

     

    Cos’è Snips?

    “Using Voice to Make Technology Disappear” è il loro motto. “Usando la voce fai a meno della tecnologia“. Penso che il tema Riconoscimento vocale gratis in questa frase sia estremamente chiaro.

    Snips è un software di domotica che possiamo integrare ad Home Assistant in grado di elaborare le nostre richieste e di rilasciare un Output.

    In parole povere, Snips non è altro che il motore che serve a tradurre le nostre frasi e passare le informazioni ad Home Assistant. Quest’ultimo, come sempre, è l’artefice di tutte le nostre azioni.

     

    Materiali per il progetto

    Come di consueto abbiamo bisogno della nostra fidata Raspberry più un microfono ed un altoparlante:

     

    Se volete il Bundle:
    Il Riconoscimento vocale gratis che andremo a configurare è molto più semplice e qualitativamente migliore con dispositivi USB. Se riuscite a trovare un microfono ed un altoparlante USB è la cosa migliore. Posso intanto suggerirvi questi:
    Nelle mie prove io ho utilizzato questo. Devo dire che ha un audio pazzesco. Il Sennheiser ha microfono e altoparlante integrato.
     
    In alternativa potete ripiegare su dispositivi come questi:
     
    Onestamente, vi consiglio di spendere un po’ di più ed orientarsi sul primo. Se un giorno non vorrete più utilizzarlo per la domotica, potrete sempre riutilizzarlo come speaker portatile. Ha un suono davvero buono.
     
     

    Installare Snips

    Snips è basato su un’installazione con Docker, è quindi sufficiente connettersi in SSH alla Raspberry e lanciare un comando.

    Prima di tutto assicuriamoci di avere tutti i componenti aggiornati nella nostra raspberry con questo comando:

     

    sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get autoclean && sudo apt-get clean && sudo apt-get autoremove

    Ora che abbiamo installato ed aggiornato tutto, possiamo procedere con l’installazione di Snips per il riconoscimento vocale.

    curl https://install.snips.ai -sSf | sh

    Questo comando si occuperà di installare tutti i componenti necessari alla vostra raspberry per ospitare Snips.

    Fatto. La vostra raspberry è ora pronta per utilizzare Snips.

     

     

    Configurazione dispositivi Audio

    Ora viene la parte divertente, configurare i dispositivi Audio.

    Connettete casse e microfono via USB e riavviate la Raspberry. Una volta riavviata connettetevi nuovamente e lanciate questo comando:

     

    aplay -l

    Questo comando mostra una lista di tutti i dispositivi in grado di riprodurre “Audio” presenti nella Raspberry. Dovrebbe restituire una lista simile a questa:

    $ aplay -l
    **** List of PLAYBACK Hardware Devices ****
    card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
    Subdevices: 8/8
    Subdevice #0: subdevice #0
    Subdevice #1: subdevice #1
    Subdevice #2: subdevice #2
    Subdevice #3: subdevice #3
    Subdevice #4: subdevice #4
    Subdevice #5: subdevice #5
    Subdevice #6: subdevice #6
    Subdevice #7: subdevice #7
    card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
    Subdevices: 1/1
    Subdevice #0: subdevice #0

    Il Jack da 3.5mm è Card 0 / Device 0 (hw:0,0). Il device 1 invece è l’uscita HDMI.

    Lanciate ora il comando:

    arecord -l

    Si, quello che pensi è corretto. Questo estrae una lista di tutti i dispositivi in grado di “Registrare” suoni (Microfoni)

    Dovrebbe estrarre una lista simile a questa:

    $ arecord -l
    **** List of CAPTURE Hardware Devices ****
    card 1: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]
    Subdevices: 1/1
    Subdevice #0: subdevice #0

    Se state utilizzando il Sennheiser, dovrebbe comparire 2 volte come Card 1 sia con il primo, che con il secondo comando.

    Se utilizzate un microfono ed una cassa USB invece saranno spezzati.

    Posizioniamoci nella home-folder dell’utente Pi e lanciamo questo comando:

    $ nano ~/.asoundrc

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

    Le informazioni in grassetto vogliono dire questo: “Usa il Sennheiser sia per l’audio che per registrare i suoni“. Se voi avete un microfono ed una cassa dovrete cambiarle di conseguenza.

    Salvate e chiudete il file. Ora possiamo testare la nostra configurazione lanciando il comando:

    arecord -f cd out.wav

    Provate a registrare qualcosa e poi premete CTRL+C per interrompere la registrazione.

    Se avete configurato tutto correttamente, con il comando successivo dovreste essere in grado di poter riprodurre quanto avete registrato:

    aplay out.wav

    Sentite la registrazione? Ottimo, avete configurato tutto nella maniera corretta. Prima di procedere però vi faccio un Focus su Snips.

     

     

    Approfondimenti su Snips.

    Perché stiamo utilizzando Snips per il riconoscimento vocale gratis e non altri software di intelligenza artificiale come Alexa di Amazon o Google home di Google? Beh, è facile.

    Benché questi strumenti siano senza dubbio performanti e compatibili con parecchi dispositivi, tutto quello che viene registrato deve essere elaborato dai server delle rispettive case madri (Esce verso internet). Il fattore privacy in questo caso passa su un filo davvero sottile.

     

    Se avete guardato il sito di Snips, avrete sicuramente visto che anche Snips lavora in questo modo. Avete ragione, ma è anche possibile utilizzare Snips in modalità ASR, “Automatic Speach Recognition“.

    Questa modalità permette a Snips di eseguire il riconoscimento vocale ed elaborare le vostre richieste in maniera completamente LOCALE.

    Questo significa che potete utilizzare il riconoscimento vocale gratis anche senza bisogno di essere connessi ad internet.

     

     

    Configurazione della nostra entità di Intelligenza Artificiale

    Ora che abbiamo terminato la configurazione lato Raspberry possiamo procedere battezzando la nostra intelligenza artificiale. Avete già scelto un nome? In ordine bisogna:

    • Registrarsi al sito www.snips.ai
    • Creare il nostro J.A.R.V.I.S personale
    • Installare il file di configurazione nella nostra Raspberry
    • Configurare Home Assistant

    Per quanto riguarda il secondo punto, Snips ha fatto un tutorial molto facile. Anche per chi non sa l’inglese basta seguire la guida:

    Quello che vi serve sapere è questo:

    • Snips accetta solo comandi in lingua Inglese o Spagnolo.
    • Per attivare Snips bisogna dire “Hey Snips“. A breve sarà possibile anche cambiare questa parola d’ordine.
    • Quello che Snips chiama “Intent” è una vera e propria intenzione: “Voglio fare…” Ad ogni Intent vengono associati uno o più “Slot” che possono contenere uno o più parametri.
    • Configurato l’intent bisogna definire in basso le frasi/parole chiave con le quali vogliamo azionare questo Intent (in inglese).
    • Selezionare le parole che faranno capire a Snips che state azionando quell’Intent.
    • Con il comando: snips lancerete il software.
    • Con il comando: snips-watch potrete capire se la vostra frase è stata compresa o meno. Se Snips non ha capito vi farà sentire un suono decisamente comprensibile per dire “non ho capito“.

     

    Es: Intent: AccendiLeLuci, con uno Slot “Luminosità” con i parametri “50%” e “25%” e “75%” e con la frase “Set living room light Brightness to 25%”, dovrebbe produrre un Output in cui Snips capisce che deve accendere la luce, e settare la luminosità al 25%. Questo Output verrà interpretato poi da Home Assistant.

     

    Più frasi scriverete per ogni Intent, maggiore sarà la facilità di comprensione di Snips.

    Finito di configurare il nostro amichetto artificiale, seguite la guida fino alla fine per installare il componente nella vostra Raspberry.

     

     

    Configurazione di Home Assistant

    La configurazione di Home Assistant è piuttosto diretta. Il meccanismo è lo stesso solo che per quanto riguarda Home Assistant, andremo ad usare il componente chiamato “Intent_script“.

    In pratica Home Assistant starà “in ascolto” fino a quando non verrà scatenato l’intento che verrà attivato da Snips (riconoscimento vocale).

    Questo è il pezzo di codice che dovrete inserire nel file configuration.yaml

    snips:
    intent_script:
      ActivateLightColor:
        action:
          - service: light.turn_on
              entity_id: light.qualcosa_qualcosa
    

     

    • ActivateLightColor è il nome dell’Intent che avete configurato poco fa nel sito di Snips
    • Entity_id è la luce (sostituite con il nome corretto) che volete accendere

    Ovviamente questo è un esempio di riconoscimento vocale di carattere puramente “scolastico”, ma voi potrete espanderlo all’infinito creando N intenti che scatenano N azioni.

    L’ultima cosa che ho fatto in termini di riconoscimento vocale è stata configurare N intenti su Snips: Play, Pausa, Stop, Compilation 1 e Compilation 2 e configurato Home Assistant per suonare le musiche che mi piacciono soltanto chiedendo “Hey Snips, Suonami della musica Rock” oppure “Hey Snips, Metti in pausa” oppure “Hey Snips, suonami qualcosa”

     

    Considerazioni finali sul riconoscimento vocale gratis

    Anche in questo caso Home Assistant si è dimostrato completamente compatibile anche con tecnologie quali il riconoscimento vocale.

    Ho intenzione di rompere ogni barriera che siamo abituati a vedere in merito di Domotica, gestione dell’abitazione e molto altro.

    Sono aperto a suggerimenti, per cosa usereste il controllo vocale in casa? Che azioni fareste fare ad Home Assistant?

    Articoli collegati

    Case domotiche: una Dashboard per gestirle

    Rilevatore GAS metano smart

    Serratura Domotica Smart

    19 commenti

    1. Nik on 4 Luglio 2018 20:06

      Ciao Daniele,

      Snips lavora bene con Homeassistant in quanto manda messaggi via MQTT che homeassistant è in grado di tradurre. Se tu vuoi bypassare homeassistant, dovresti utilizzare un broker a sè installato nella Raspberry. Quello che ti consiglio io è di usare Homeassistant e fare lanciare a lui lo script Python. Questo, rispetto a quello che vuoi fare tu è molto più semplice e in futuro potrebbe darti una mano con potenziali sviluppi.

      A presto

      Nik

    2. Daniele on 4 Luglio 2018 15:53

      Non ho capito una cosa. Funziona solo con home Assistant? Cioè, se io volessi dargli un comando ‘go e quel comando mi esegue uno script python qualsiasi, qual’ è la procedura? Ci sto lavorando da giorni e non ne vado fuori

    3. Nik on 25 Marzo 2018 16:34

      Ciao Riccardo, dovresti trovare il modo di passare gli intenti di Snips a Homeassistant se lo fai slegato. Ma se hai la Raspberry perché non installi tutto li? Io ti consiglio di fare così

      Ciao

      Nik

    4. Riccardo on 25 Marzo 2018 15:30

      volevo chiedere se installando home assistant su QNAP e Snips su raspberry, funzionasse lo stesso.

    5. Nik on 15 Marzo 2018 20:01

      Ciao Michele,

      Ho testato SNIPS come primo componente su Hass.io e non mi son trovato affatto bene. Non so quanto sia migliorata la situazione nell’ultimo periodo, ma ti consiglio di fare una prova installando SNIPS con il metodo che ho descritto qui: https://www.nicolapreo.it/homeassistant-novita-2018/

      Se trovi altre soluzioni, Fammi sapere

      Ciao

      Nik

    6. Michele on 15 Marzo 2018 9:38

      Ciao,

      per adesso snips funziona con la lista della spesa e ho inserito solamente per accendere la tv. Il secondo passo era quello di farlo funzionare con spotify, ma purtroppo quando lancio il comando vocale non succede proprio niente.

      N.B.: io uso Hass.io (lo trovo molto più fluido)

    7. Nik on 14 Marzo 2018 19:45

      Ciao Michele,

      Onestamente io ho provato una sola volta con Jarvis (ed ha funzionato) poi ho formattato la Raspberry per altre prove quindi non saprei dirti. Quello che posso consigliarti è di ricaricare completamente il pacchetto su Homeassistant una volta scaricato dal sito di Snips. Hai dato anche un’occhiata al forum di Homeassistant se c’è qualcuno con il tuo stesso errore?

      Ciao

      Nik

    8. Nik on 14 Marzo 2018 19:42

      Ciao Michele,

      Se non usi Snips e lanci il comando tramite Homeassistant funziona?
      Altri comandi usati con Snips funzionano correttamente?

      Ciao

      Nik

    9. Michele on 13 Marzo 2018 22:24

      Inoltre ho impostato tutto per chiamarlo “Jarvis” ma mi prende solo “HEY SNIPS”

      Boh?!?!

    10. Michele on 13 Marzo 2018 22:20

      Ciao, io non riesco a far funzionare Snips con il media player di Spotify.
      Ho inserito play e pause, ma quando do il comando vocale non succede niente.
      Ho fatto cosi:

      resumeMusic:
      action:
      – service: media_player.media_play
      entity_id: media_player.spotify
      speakerInterrupt:
      action:
      – sevice: media_player.media_pause
      entity_id: media_player.spotify

      Consigli?

    11. Nik on 1 Febbraio 2018 19:08

      Ciao Paolo,

      Con Snips tu puoi eseguire qualsiasi cosa. Snips scatena un evento a seguito di una frase specifica. Azionato questo evento, Homeassistant può attivare qualsiasi cosa, anche uno Script.

      Nik

    12. paolo on 1 Febbraio 2018 16:53

      ciao,
      è possibile eseguire uno script bash o python con snips?

    13. Nik on 17 Gennaio 2018 20:00

      Ciao Gianluca,

      Da quello che vedo Modipy non è supporato ufficilamente da Homeassistant, ma devi pilorarlo tramite il componente https://home-assistant.io/components/media_player.mpd/. Homeassistant però è integrabile con altri media player quali: https://home-assistant.io/components/#media-player.

      C’è un particolare motivo per cui devi usare quel media player li?

      Ciao

      Nik

    14. Gianluca on 17 Gennaio 2018 14:45

      Ciao, per fare un player con home assistant usando modipy. Quindi : dire play #nomeplaylist è complicato? devo sempre passare tramite home assistant, giusto? grazie!

    15. Nik on 8 Gennaio 2018 21:14

      Se vuoi investire prendi questo: http://amzn.to/2FeLUEN
      L’ho testato e ha una sensibilità tale che ti sente anche se sei dall’altra parte della stanza.

      Se invece vuoi fare qualche esperimento, questo va benissimo: http://amzn.to/2CSmpeV

      La mia opinione? Se prendi il primo, anche se dopo non lo usi per Snips trovi sicuramente un altro utilizzo 🙂

      Ciao

      Nik

    16. Mattia on 8 Gennaio 2018 21:09

      Solo una cosa, non vanno i link dei dispositivi USB, qual’è il primo che consigli? Grazie.
      Ciao Nik

    17. Mattia on 8 Gennaio 2018 21:07

      Corretto, hai ragione!
      In locale è una cosa, altrimenti non avevo pensato al problema di uscire allo “scoperto” 🙂
      concordo con te, proverò questo Jarvis!
      Grazie Nik.

    18. Nik on 8 Gennaio 2018 20:42

      Ciao Mattia,

      Per ora no. Considerando che la forza di Snips è il fatto che gira in Locale nel Raspberry, se aprissero il canale smartphone potrebbero “Rompere” questa politica. Se non sbaglio puoi farlo con Google ed Amazon ma per come sono impostato io non lo farò mai 🙂

      Alla prossima

      Nik

    19. Mattia on 8 Gennaio 2018 20:18

      Permette di avere anche il riconoscimento dall’app sullo smartphone? O nel caso quello come può essere fatto?
      Grazie!
      …e complimenti di nuovo!

    Leave A Reply

    Homepage | Chi è Nicola Preo | Contatti | Privacy |

    Copyright © Nicola Preo

    Type above and press Enter to search. Press Esc to cancel.