Logo Mon Club Elec

Programmer le pcDuino : Voix : Capturer une image webcam à la voix (en mode connecté) !

Le pcDuino est un système informatique open source qui offre aux utilisateurs une variété de possibilités de programmation. Avec le pcDuino, vous pouvez programmer votre ordinateur pour effectuer des tâches variées, notamment la capture d’images à partir d’une webcam à la voix. Dans cet article, nous allons vous expliquer comment programmer le pcDuino pour capturer une image à la voix en mode connecté. Nous vous expliquerons également les avantages et les inconvénients de cette méthode et vous donnerons des conseils pour vous aider à obtenir les meilleurs résultats.

Programmer le pcDuino : Voix : Capturer une image webcam à la voix (en mode connecté) !

Programmer le pcDuino : Voix : Capturer une image webcam à la voix (en mode connecté) !

Ce que l’on va faire ici

  • Dans ce code, je vous montre comment déclencher à la voix la capture d’une image webcam avec la librairie Pyduino.
  • Une reconnaissance vocale avec Pyduino se fait en 2 étapes :
    • tout d’abord enregistrement d’un fichier audio avec le fonction recordSound() pendant la durée voulue : 3 secondes suffisent.
    • puis analyse vocale du fichier par envoi du fichier son vers le serveur de reconnaissance vocale avec la fonction analyzeVoice() : la fonction renvoie la chaîne reconnue !
  • Le serveur « Google Voice » utilisé a un taux de reconnaissance très bon de l’ordre de 90% avec des voix différentes et sans paramétrages préalable ! La réponse du serveur est également rapide.
  • Pour plus de détails sur la reconnaissance vocale, voir l’instruction Pyduino analyzeVoice()
  • Pour plus de détails sur la capture d’image, voir l’instruction Pyduino captureImage()

Pré-requis

Schéma fonctionnel

  • Ici, l’entrée audio permet la capture du son et son analyse vocale par connexion au serveur distant. D’autre part, la webcam est utilisée pour capturer une image et l’enregistrer dans un fichier :
Programmer le pcDuino : Voix : Capturer une image webcam à la voix (en 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
  • Une webcam compatible ( Logitech C170, C270, etc…)

Une simple webcam avec micro suffit pour disposer à la fois de la capture son et de la capture image.

E/S

  • aucun matériel

Instructions de montage

  • Connecter la webcam sur un port USB
  • Connecter également le micro en entrée si besoin (le plus simple étant une webcam avec micro)
  • On suppose également que le pcDuino est connecté au réseau local avec accès internet disponible.

Le montage à réaliser

Programmer le pcDuino : Voix : Capturer une image webcam à la voix (en 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

# Capturer une image par commande vocale

from pyduinoMultimedia import * # importe les fonctions Arduino pour Python

# entete declarative
noLoop=True

filepathVoice=«  »
filenamVoice=«  »

filepathAudio=«  »
filepathImage=«  »
compt=0

#— setup —
def setup():

        global filepathImage, filepathAudio, filepathVoice, filenameVoice

        # exemples de sons :  wget -4 https://www.mon-club-elec.fr/mes_downloads/pyduino_sons.tar.gz

        filepathAudio=homePath()+sourcesPath(AUDIO)+« photo/ »
        print filepathAudio

        filepathImage=homePath()+dataPath(IMAGE)
        print filepathImage

        filepathVoice=homePath()+dataPath(AUDIO)
        filenameVoice=« test.wav »
        print (filepathVoice+filenameVoice)

        # initialisation webcam
        initWebcam(0,640,480) # la resolution doit etre supportee par la webcam !

        loop() # premier appel loop()
# — fin setup —

# — loop —
def loop():

        global filepathVoice, filenameVoice, filepathAudio, filepathImage, compt

        print (« ——————————–« )
        print(« ********* Capturer une image par commande vocale ********* » )
        print (« ===> Dites \ »photo\ » quand vous etes pret ! « )
        print (« > Enregistrement du fichier voix (2 sec.) … »)

        recordSound(filepathVoice+filenameVoice,2) # enregistre son fichier voulu et duree voulue en secondes

        #playSound(filepathAudio+filename)

        chaine=analyzeVoice(filepathVoice+filenameVoice) # reconnaissance vocale

        if chaine==«  »:
                #speak(« Vous n’avez rien dit. »)
                print(« Vous n’avez rien dit. »)
        else:
                #speak(« Vous avez dit  » + chaine)
                print(« Vous avez dit «  + chaine)

                # analyse chaine
                chaine=chaine.lower() # met en minuscule

                if « photo » in chaine:
                        playSound(filepathAudio+« camera-click-1.wav ») # joue le son

                        closeImage() # ferme visionneur image precedente

                        # capture image
                        filename=« photo »+str(compt)+« .jpg »
                        print filepathImage+filename
                        captureImage(filepathImage+filename) # charge une image dans le buffer a partir webcam
                        compt=compt+1

                        #addTextOnImage(today(« / »)+ »@ »+nowtime(« : »), 10,height()-30, green) # ajoute texte sur image
                        #addTextOnImage(nowdatetime(), 10,height()-20, yellow,0.75) # ajoute texte sur image

                        saveImage(filepathImage+filename) # enregistre l’image
                        delay(500)

                        showImage(filepathImage+filename) # affiche l’image

                        exit(0) # sort de l’exécution

                else:
                        print(« Chaine non valide »)

        timer(2000, loop) # relance timer – la fonction loop s’auto-appelle

# — 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/AnalyzeVoiceCaptureImage.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 :
    • Juste après le message vous y invitant, parlez ! (vous avez 2 secondes)
    • la chaîne correspondante s’affiche ensuite
    • si la chaine est reconnue, une image est capturée et s’affiche.
Programmer le pcDuino : Voix : Capturer une image webcam à la voix (en mode connecté) !

Discussion technique

  • Important de bien régler le niveau sonore en entrée et de bien parler au moment de l’enregistrement..
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é.