Résolu sur le forum : Borne Wallbox Pulsar Plus 7,4 kW sur abonnement 6 kVA : quel délestage avant accord copro (urgent)Ma panne diagnostiquée — réponse sous 48 h29 €

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

Électroniquemis à jour le 23 avril 2023

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é).

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

  • un mini-PC (pcDuino conseillé) avec système Lubuntu opérationnel. Voir si besoin la page d’accueil du pcDuino
  • Langage Python (2.7) et l’IDE Pyduino ou l’éditeur Geany installés. Voir si besoin : Logiciel pour développer avec Pyduino
  • ma librairie pyDuino installée : voir si besoin : Télécharger et installer Pyduino sur le pcDuino
  • les dépendances de la librairie pyDuino Multimédia installées : voir si besoin : Télécharger et installer Pyduino sur le pcDuino

Schéma fonctionnel

  • La reconnaissance vocale contrôle les broches E/S :

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,
  • des straps,
  • 8 x LED rouge 5mm,
  • 8 x résistance 1/4w de 270 Ohms environ,

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

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

ÉlectroniqueChamp électrique : les notions fondamentales expliquées simplement

        # 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

ÉlectroniqueBien chauffer son atelier d’électronique : confort, sécurité et continuité de travail

                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 !
  • 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.

Donnez votre avis

Soyez le 1er à noter cet article
ou bien laissez un avis détaillé


Partagez cet article maintenant !


Ça ne règle pas votre cas ?

Décrivez la panne sur le forum, avec une photo si vous pouvez : les membres qui ont eu la même répondent, et le sujet reste pour les suivants.

Avatar photoAvatar photoAvatar photoAvatar photoAvatar photoRejoindre les 54 membres — gratuit, 44 pannes résolues

Dans le même tiroir

PyQt Lab’ : Dessin :
Électronique

PyQt Lab’ : Dessin :

PyQt Lab est un logiciel de dessin innovant qui permet aux utilisateurs de créer des dessins de qualité professionnelle. Il…

Portrait de Inès DameronInès Dameron · 24 Avr 2023

Réagissez à cet article

La lettre du club

Une lettre par mois, accrochée au panneau

Les sujets du forum résolus dans le mois, un guide, un chiffre qu’on peut vérifier chez soi. Rien d’autre, jamais plus souvent — et on se désabonne d’un clic.

Ce qu’il y a dedans

Votre adresse

Une lettre par mois. Désabonnement en un clic.

Partagez votre réaction