Logo Mon Club Elec

Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté).

Le pcDuino est une plateforme de développement open source qui permet aux développeurs de créer des applications et des systèmes embarqués. Avec Pyduino, un framework de programmation Python pour le pcDuino, il est possible de créer des applications qui utilisent la reconnaissance vocale pour allumer et éteindre des sorties numériques. Dans ce tutoriel, nous allons vous montrer comment utiliser Pyduino pour créer une application de reconnaissance vocale qui permet d’allumer et d’éteindre des sorties numériques en mode connecté.

Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté).

Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté).

Ce que l’on va faire ici

  • Dans ce code, je montre comment contrôler les broches E/S du miniPC grâce à la reconnaissance vocale en mode connecté en utilisant ma librairie PyduinoMultimedia.
  • La chaîne reconnue est analysée pour mettre les broches dans l’état voulu :
    • une chaine contenant « allum » et un nombre entre 1 et 7 allumera la broche correspondante (mise au niveau HIGH)
    • une chaine contenant « éteindre » et un nombre compris entre 1 et 7 allumera la broche correspondante (mise au niveau LOW)
    • une chaîne contenant « allum » ou « éteindre » et « tout » mettre toutes les broches dans l’état voulu.
  • Il sera facile d’adapter à loisir ce code à ses propres besoins… notamment en utilisant un mot-clé au lieu du numéro de la broche.
  • Pour plus de détails sur la reconnaissance vocale avec PyduinoMultimedia, voir la fonction analyzeVoice

Pré-requis

Schéma fonctionnel

  • La reconnaissance vocale contrôle les broches E/S :
Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté).

Matériel nécessaire

Système

  • Le pcDuino
  • Une entrée audio opérationnelle :
    • le micro intégré d’une webcam (le plus simple)
    • une carte audio USB avec entrée audio et un micro

E/S

  • une plaque d’essai pour montage sans soudures,
Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté).
  • des straps,
Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté).
  • 8 x LED rouge 5mm,
Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté). Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté). Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté). Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté). Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté). Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté). Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté). Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté).
  • 8 x résistance 1/4w de 270 Ohms environ,
Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté). Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté). Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté). Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté). Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté). Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté). Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté). Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté).

Instructions de montage

  • Connecter sur les broches 0 à 7 (configurée en sortie) une LED et sa résistance (270 Ohms) en série connectée au 0V
  • Note technique : chaque broche va fournir (3.3-1.5)/270 = 6,66 mA soit au total 8 x 6,66mA… soit 53mA au plus, ce qui semble tout à fait acceptable pour ne pas risquer d’endommager le mini-PC.

Le montage à réaliser

Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté).

Le fichier *.py

Copier/coller ce code dans l’éditeur Geany :

#!/usr/bin/python
# -*- coding: utf-8 -*-

# exemple pyDuino – par X. HINAULT – www.mon-club-elec.fr
# Juillet 2013 – Tous droits réservés – GPLv3
# voir : https://github.com/sensor56/pyDuino

# broches E/S controlees par la voix

from pyduinoMultimedia import * # importe les fonctions Arduino pour Python

# entete declarative
#noLoop=True

ledTemoin=0  # LED témoin ok pour parler

#— setup —
def setup():

        # broche de led temoin
        pinMode(ledTemoin, OUTPUT) # broche en sortie
        digitalWrite(ledTemoin, LOW) # eteint LED

        # broches ES utilisees
        for pin in range (1,8): # defile broche 1-7
                pinMode(pin, OUTPUT) # broche sortie
                digitalWrite(pin, LOW) # eteint LED
# — fin setup —

# — loop —
def loop():

        # fichier d’enregistrement a utiliser
        filepathAudio=homePath()+dataPath(AUDIO)
        filename=« test.wav »
        print (filepathAudio+filename)

        #speak(« Test de reconnaissance vocale. Dites quelque chose »)

        digitalWrite(ledTemoin,HIGH) # LED pour OK parler

        recordSound(filepathAudio+filename,3) # enregistre son fichier voulu et duree voulue en secondes

        digitalWrite(ledTemoin,LOW) # LED Stop parler

        #playSound(filepathAudio+filename)

        chaine=analyzeVoice(filepathAudio+filename) # reconnaissance vocale

        if chaine==«  »: # si rien dit
                #speak(« Vous n’avez rien dit. »)
                pass
        else: # si dit quelque chose
                speak(« Vous avez dit «  + chaine)

                # analyse de la chaine recue
                chaine=chaine.lower() # met en minuscule

                print chaine # affiche chaine reconnue

                # analyse chaine reconnue et met LED dans etat voulu
                if « allum » in chaine:
                        if « 1 » in chaine or « un » in chaine : digitalWrite(1,HIGH)
                        if « 2 » in chaine or « deux » in chaine : digitalWrite(2,HIGH)
                        if « 3 » in chaine or « trois » in chaine : digitalWrite(3,HIGH)
                        if « 4 » in chaine or « quatre » in chaine : digitalWrite(4,HIGH)
                        if « 5 » in chaine or « cinq » in chaine : digitalWrite(5,HIGH)
                        if « 6 » in chaine or « six » in chaine : digitalWrite(6,HIGH)
                        if « 7 » in chaine or « sept » in chaine : digitalWrite(7,HIGH)
                        if « tou » in chaine :
                                for i in range(1,8):digitalWrite(i,HIGH)

                elif « éteindre » in chaine:
                        if « 1 » in chaine or « un » in chaine : digitalWrite(1,LOW)
                        if « 2 » in chaine or « deux » in chaine : digitalWrite(2,LOW)
                        if « 3 » in chaine or « trois » in chaine : digitalWrite(3,LOW)
                        if « 4 » in chaine or « quatre » in chaine : digitalWrite(4,LOW)
                        if « 5 » in chaine or « cinq » in chaine : digitalWrite(5,LOW)
                        if « 6 » in chaine or « six » in chaine : digitalWrite(6,LOW)
                        if « 7 » in chaine or « sept » in chaine : digitalWrite(7,LOW)
                        if « tou » in chaine :
                                for i in range(1,8):digitalWrite(i,LOW)

# — fin loop —

#— obligatoire pour lancement du code —
if __name__==« __main__ »: # pour rendre le code executable
        setup() # appelle la fonction main
        while not noLoop: loop() # appelle fonction loop sans fin

 

Ce code est également disponible ici : https://raw.github.com/sensor56/pyduino-exemples/master/Voice/AnalyzeVoiceLedControleES.py

Utilisation

  • Réaliser le montage et connecter le micro (le plus simple = une webcam avec micro-intégré)
  • Vérifier les niveaux de son au préalable avec Audacity
  • Appuyer sur le bouton exécuter dans Geany
  • Une fenêtre de Terminal doit apparaître :
    • lorsque la LED connectée sur la broche 0 s’allume, parler !
    • la reconnaissance vocale se fait automatiquement et une annonce vocale se fait selon message reconnu
    • les LEDs sont mises dans l’état voulu !
Programmer le pcDuino : Pyduino : Reconnaissance vocale : Allumer/éteindre des sorties numériques à l’aide de la reconnaissance vocale (mode connecté).
  • Simple et efficace.

Discussion technique

  • Ce code peut encore être amélioré en évitant une analyse du fichier son si celui-ci est vide… Ceci évitera une connexion intempestive inutile au serveur Google Voice.
Noter cet article

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Archive Mon Club Elec

Articles populaires

Newsletter

Inscrivez-vous maintenant et bénéficiez d'un soutien continu pour réaliser vos travaux électriques en toute sécurité.