begin process at 2010 07 29 16:06:14
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > RECONNAISSANCE VOCALE

RECONNAISSANCE VOCALE


 Description

Ce script utilise l'API "Speech API 5.1" de Microsoft. Il permet de reconnaître des phrases simples en français, pour exécuter une action (ex : la phrase "execute word" permet de lancer word). Testé sous windows XP (mis à jour) avec python 3.1.1.

Source

  • # -*- coding: utf-8 -*-
  • # -----------------------------------------------------------------------------
  • # Les modules
  • # -----------------------------------------------------------------------------
  • import win32com.client, pythoncom # pour utiliser les objets COM
  • import win32api # contient la méthode PostQuitMessage() permettant d'envoyer le message WM_QUIT
  • # pour arrêter le script (existe aussi dans le module win32gui)
  • import os # contient la méthode startfile() pour lancer un exécutable
  • import os.path # contient la fonction permettant de tester si un fichier existe
  • # -----------------------------------------------------------------------------
  • # Les constantes de l'API relatives à la reconnaissance vocale
  • # -----------------------------------------------------------------------------
  • class SpeechLoadOption:
  • """Constantes : les options de chargement d'une grammaire xml"""
  • SLOStatic = 0
  • SLODynamic = 1
  • class SpeechRuleState:
  • """Constantes : les status des règles de la grammaire"""
  • SGDSInactive = 0
  • SGDSActive = 1
  • SGDSActiveWithAutoPause = 3
  • class SpeechRecoContextState:
  • """Constantes : les status du contexte"""
  • SRCS_Disabled = 0
  • SRCS_Enabled = 1
  • class SpeechRecoEvents:
  • """Constantes : les évènements de la reconnaissance vocale"""
  • SREStreamEnd = 1
  • SRESoundStart = 2
  • SRESoundEnd = 4
  • SREPhraseStart = 8
  • SRERecognition = 16
  • SREHypothesis = 32
  • SREBookmark = 64
  • SREPropertyNumChange = 128
  • SREPropertyStringChange = 256
  • SREFalseRecognition = 512
  • SREInterference = 1024
  • SRERequestUI = 2048
  • SREStateChange = 4096
  • SREAdaptation = 8192
  • SREStreamStart = 16384
  • SRERecoOtherContext = 32768
  • SREAudioLevel = 65536
  • SREPrivate = 262144
  • SREAllEvents = 393215
  • class SpeechEngineConfidence:
  • """Constantes : niveaux de fiabilité de la reconnaissance"""
  • SECLowConfidence = -1
  • SECNormalConfidence = 0
  • SECHighConfidence = 1
  • class SpeechGrammarState:
  • """Constantes : le statut de la grammaire"""
  • SGSDisabled = 0
  • SGSEnabled = 1
  • SGSExclusive = 3
  • class SpeechGrammarWordType:
  • """Constantes : les types de mots dans une grammaire"""
  • SGDisplay = 0
  • SGLexical = 1
  • SGPronounciation = 2
  • # -----------------------------------------------------------------------------
  • # La gestion des évènements issus du contexte de la reconnaissance vocale
  • # -----------------------------------------------------------------------------
  • def fiabilite(les_mots):
  • """Pour chaque mot, si le niveau de fiabilité est inférieur au niveau requis, alors renvoie False.
  • Paramètre :
  • les_mots : ensemble des mots reconnus"""
  • fiable = True
  • nb_mots = les_mots.Count
  • for i in range(nb_mots):
  • mot = les_mots.Item(i)
  • if mot.ActualConfidence < mot.RequiredConfidence:
  • fiable = False
  • break
  • return fiable
  • def executer_action(prop):
  • """L'action associée à la phrase reconnue est exécutée.
  • Paramètre :
  • prop : la propriété (.PhraseInfo.Properties.Item(0))"""
  • nom = prop.Name.lower()
  • val = prop.Value
  • if nom == "executable" and val != None: # lancer un programme
  • list_prog = val.split("?")
  • for i in range(len(list_prog)):
  • if os.path.isfile(list_prog[i]) == True:
  • print("Exécution de : " + repr(list_prog[i]))
  • os.startfile(list_prog[i]) # lance le prog. et "rend la main"
  • else:
  • print("Le programme à exécuter n'existe pas")
  • elif nom == "fin_script": # fin du script
  • win32api.PostQuitMessage(0)
  • else:
  • print("Aucune action")
  • class gestion_evenement:
  • """Cette classe exécute les actions déclenchées par un évènement de la
  • reconnaissance vocale. Elle est déclarée par
  • win32com.client.DispatchWithEvents("SAPI.SpSharedRecoContext", <nom de la classe>).
  • Un évènement est traité par une seule méthode nommée :
  • On<nom de l'évènement>"""
  • def OnStartStream(self, StreamNumber, StreamPosition):
  • """Déclenché lorsque le contexte de reconnaissance est actif (autrement
  • dit, dès le début)."""
  • print("---------------------------------------")
  • print("| La reconnaissance vocale est active |")
  • print("---------------------------------------")
  • def OnRecognition(self, StreamNumber, StreamPosition, RecognitionType, Result):
  • """Déclenché lorsque la reconnaissance vocale identifie un mot
  • de la grammaire. Parfois cet évènement survient, mais le texte de Result est vide."""
  • result_reco = win32com.client.Dispatch(Result) # "récupérer" l'interface de l'objet (cf doc)
  • Result = None
  • if result_reco.PhraseInfo.GetText() != "" and fiabilite(result_reco.PhraseInfo.Elements) == True:
  • print("\nLa phrase reconnue est : " + result_reco.PhraseInfo.GetText())
  • executer_action(result_reco.PhraseInfo.Properties.Item(0))
  • def liste_des_logiciels(gramm):
  • """Convertit la liste de logiciels en règles de grammaire. Retourne True si l'ajout de ces
  • règles à la grammaire se déroule avec succès ; False sinon.
  • Paramètre :
  • gramm : la grammaire fixe"""
  • les_regles = gramm.Rules
  • liste_des_logiciels = les_regles.FindRule("liste_des_logiciels") # règle correspondant à la liste
  • if liste_des_logiciels == None: # la liste n'existe pas
  • print("Erreur la règles correspondant à la liste des logiciels n'existe pas => vérifier le fichier xml.")
  • return False
  • liste_des_logiciels.Clear()
  • propriete = "executable" # nom de la propriété
  • # ajoute '+' devant le nom du logiciel pour définir le niveau de fiabilité requise à HIGH
  • # définition du dictionnaire ou la clé est le nom du logiciel ayant pour valeur le
  • # chemin d'accès à l'exécutable ; s'il y a plusieurs exécutables alors ils sont séparés par '?' (ce
  • # caractère n'existe pas dans le noms de fichiers windows)
  • dict_executable = { "+word" : "C:\\Program Files\\Microsoft Office\\Office10\\WINWORD.EXE", "+wordpad" : "C:\\Program Files\\Windows NT\\Accessoires\\wordpad.exe", "+explorateur" : "C:\\mes_programmes\\xplorer2_lite\\xplorer2_lite.exe", "+python" : "C:\\mes_programmes\\Notepad++\\notepad++.exe?C:\\Documents and Settings\\All Users\\Menu Démarrer\\Programmes\\Python 3.1\\IDLE (Python GUI).lnk?C:\\Documents and Settings\\All Users\Menu Démarrer\Programmes\\Python 3.1\\Python Manuals.lnk", "+navigateur" : "C:\\Documents and Settings\\All Users\\Menu Démarrer\\Programmes\\Navigateur\\Google Chrome\\Google Chrome.lnk", "+bloc note" : "C:\\Documents and Settings\\All Users\\Menu Démarrer\\Programmes\\Mes utilitaires\\Notepad2.lnk", "+video" : "C:\\mes_programmes\\VLC\\vlc.exe" }
  • for logiciel, executable in dict_executable.items():
  • liste_des_logiciels.InitialState.AddWordTransition(None, logiciel, " ", SpeechGrammarWordType.SGLexical,
  • propriete, 0, executable, 1)
  • les_regles.Commit()
  • return True
  • # -----------------------------------------------------------------------------
  • # Le corps du script exécuté au lancement
  • # -----------------------------------------------------------------------------
  • if __name__ == "__main__":
  • # créer le contexte en déclarant la gestion des évènements
  • contexte = win32com.client.DispatchWithEvents("SAPI.SpSharedRecoContext", gestion_evenement)
  • if contexte.State != SpeechRecoContextState.SRCS_Enabled:
  • print("Le contexte de reconnaissance n'est pas actif.")
  • # ce fichier contient la partie fixe de la grammaire
  • fichier_gramm = "grammaire.xml"
  • # chargement de la partie fixe
  • gramm = contexte.CreateGrammar(0) # l'id de la grammaire est zéro
  • gramm.State = SpeechGrammarState.SGSDisabled # la grammaire est inactive durant son chargement
  • gramm.CmdLoadFromFile(fichier_gramm, SpeechLoadOption.SLODynamic)
  • # converti la liste des logiciels
  • if liste_des_logiciels(gramm) == True: # la grammaire a été modifiée avec succés
  • # activer la grammaire et les règles
  • gramm.State = SpeechGrammarState.SGSEnabled
  • gramm.CmdSetRuleIdState(0, SpeechRuleState.SGDSActive)
  • # gérer les évènements
  • contexte.EventInterests = SpeechRecoEvents.SREStreamStart + SpeechRecoEvents.SRERecognition
  • # écouter les évènements
  • pythoncom.PumpMessages()
  • print("fin")
# -*- coding: utf-8 -*-

# -----------------------------------------------------------------------------
# Les modules
# -----------------------------------------------------------------------------
import win32com.client, pythoncom # pour utiliser les objets COM
import win32api # contient la méthode PostQuitMessage() permettant d'envoyer le message WM_QUIT
                # pour arrêter le script (existe aussi dans le module win32gui)
import os # contient la méthode startfile() pour lancer un exécutable
import os.path # contient la fonction permettant de tester si un fichier existe

    
# -----------------------------------------------------------------------------
# Les constantes de l'API relatives à la reconnaissance vocale
# -----------------------------------------------------------------------------
class SpeechLoadOption: 
    """Constantes : les options de chargement d'une grammaire xml"""
    SLOStatic = 0
    SLODynamic = 1

class SpeechRuleState: 
    """Constantes : les status des règles de la grammaire"""
    SGDSInactive = 0
    SGDSActive = 1
    SGDSActiveWithAutoPause = 3

class SpeechRecoContextState: 
    """Constantes : les status du contexte"""
    SRCS_Disabled = 0
    SRCS_Enabled = 1

class SpeechRecoEvents: 
    """Constantes : les évènements de la reconnaissance vocale"""
    SREStreamEnd = 1
    SRESoundStart = 2
    SRESoundEnd = 4
    SREPhraseStart = 8
    SRERecognition = 16
    SREHypothesis = 32
    SREBookmark = 64
    SREPropertyNumChange = 128
    SREPropertyStringChange = 256
    SREFalseRecognition = 512
    SREInterference = 1024
    SRERequestUI = 2048
    SREStateChange = 4096
    SREAdaptation = 8192
    SREStreamStart = 16384
    SRERecoOtherContext = 32768
    SREAudioLevel = 65536
    SREPrivate = 262144
    SREAllEvents = 393215

class SpeechEngineConfidence:
    """Constantes : niveaux de fiabilité de la reconnaissance"""
    SECLowConfidence = -1
    SECNormalConfidence = 0
    SECHighConfidence = 1

class SpeechGrammarState:
    """Constantes : le statut de la grammaire"""
    SGSDisabled = 0
    SGSEnabled = 1
    SGSExclusive = 3

class SpeechGrammarWordType:
    """Constantes : les types de mots dans une grammaire"""
    SGDisplay = 0
    SGLexical = 1
    SGPronounciation = 2

# -----------------------------------------------------------------------------
# La gestion des évènements issus du contexte de la reconnaissance vocale
# -----------------------------------------------------------------------------
        
def fiabilite(les_mots):
    """Pour chaque mot, si le niveau de fiabilité est inférieur au niveau requis, alors renvoie False.
        Paramètre : 
            les_mots : ensemble des mots reconnus"""
    
    fiable = True
    nb_mots = les_mots.Count
    for i in range(nb_mots):
        mot = les_mots.Item(i)
        if mot.ActualConfidence < mot.RequiredConfidence:
            fiable = False
            break
    return fiable

def executer_action(prop):
    """L'action associée à la phrase reconnue est exécutée.
        Paramètre :
            prop : la propriété (.PhraseInfo.Properties.Item(0))"""

    nom = prop.Name.lower()
    val = prop.Value
    if  nom == "executable" and val != None: # lancer un programme
        list_prog = val.split("?")
        for i in range(len(list_prog)):
            if os.path.isfile(list_prog[i]) == True:
                print("Exécution de : " + repr(list_prog[i]))
                os.startfile(list_prog[i]) # lance le prog. et "rend la main"
            else:
                print("Le programme à exécuter n'existe pas")
    elif nom == "fin_script": # fin du script
        win32api.PostQuitMessage(0)
    else:
        print("Aucune action")
           
class gestion_evenement:
    """Cette classe exécute les actions déclenchées par un évènement de la 
        reconnaissance vocale. Elle est déclarée par 
            win32com.client.DispatchWithEvents("SAPI.SpSharedRecoContext", <nom de la classe>).
        Un évènement est traité par une seule méthode nommée :
            On<nom de l'évènement>"""

    def OnStartStream(self, StreamNumber, StreamPosition):
        """Déclenché lorsque le contexte de reconnaissance est actif (autrement
        dit, dès le début)."""
        print("---------------------------------------")
        print("| La reconnaissance vocale est active |")
        print("---------------------------------------")
        
    def OnRecognition(self, StreamNumber, StreamPosition, RecognitionType, Result):
        """Déclenché lorsque la reconnaissance vocale identifie un mot
        de la grammaire. Parfois cet évènement survient, mais le texte de Result est vide."""
        
        result_reco = win32com.client.Dispatch(Result) # "récupérer" l'interface de l'objet (cf doc)
        Result = None
        if result_reco.PhraseInfo.GetText() != "" and fiabilite(result_reco.PhraseInfo.Elements) == True:
            print("\nLa phrase reconnue est : " + result_reco.PhraseInfo.GetText())
            executer_action(result_reco.PhraseInfo.Properties.Item(0))
            
def liste_des_logiciels(gramm):
    """Convertit la liste de logiciels en règles de grammaire. Retourne True si l'ajout de ces
        règles à la grammaire se déroule avec succès ; False sinon.
        Paramètre :
            gramm : la grammaire fixe"""
    
    les_regles = gramm.Rules
    liste_des_logiciels = les_regles.FindRule("liste_des_logiciels") # règle correspondant à la liste
    
    if liste_des_logiciels == None: # la liste n'existe pas
        print("Erreur la règles correspondant à la liste des logiciels n'existe pas => vérifier le fichier xml.")
        return False
        
    liste_des_logiciels.Clear()
    
    propriete = "executable" # nom de la propriété
    # ajoute '+' devant le nom du logiciel pour définir le niveau de fiabilité requise à HIGH
    # définition du dictionnaire ou la clé est le nom du logiciel ayant pour valeur le
    # chemin d'accès à l'exécutable ; s'il y a plusieurs exécutables alors ils sont séparés par '?' (ce
    # caractère n'existe pas dans le noms de fichiers windows)
    dict_executable = { "+word" : "C:\\Program Files\\Microsoft Office\\Office10\\WINWORD.EXE", "+wordpad" : "C:\\Program Files\\Windows NT\\Accessoires\\wordpad.exe", "+explorateur" : "C:\\mes_programmes\\xplorer2_lite\\xplorer2_lite.exe", "+python" : "C:\\mes_programmes\\Notepad++\\notepad++.exe?C:\\Documents and Settings\\All Users\\Menu Démarrer\\Programmes\\Python 3.1\\IDLE (Python GUI).lnk?C:\\Documents and Settings\\All Users\Menu Démarrer\Programmes\\Python 3.1\\Python Manuals.lnk", "+navigateur" : "C:\\Documents and Settings\\All Users\\Menu Démarrer\\Programmes\\Navigateur\\Google Chrome\\Google Chrome.lnk", "+bloc note" : "C:\\Documents and Settings\\All Users\\Menu Démarrer\\Programmes\\Mes utilitaires\\Notepad2.lnk", "+video" : "C:\\mes_programmes\\VLC\\vlc.exe" }
    for logiciel, executable in dict_executable.items():
        liste_des_logiciels.InitialState.AddWordTransition(None, logiciel, " ", SpeechGrammarWordType.SGLexical, 
        propriete, 0, executable, 1)
    
    les_regles.Commit()
    return True
           
# -----------------------------------------------------------------------------
# Le corps du script exécuté au lancement
# -----------------------------------------------------------------------------
if __name__ == "__main__":
    # créer le contexte en déclarant la gestion des évènements
    contexte = win32com.client.DispatchWithEvents("SAPI.SpSharedRecoContext", gestion_evenement)
    if contexte.State != SpeechRecoContextState.SRCS_Enabled:
        print("Le contexte de reconnaissance n'est pas actif.")

    # ce fichier contient la partie fixe de la grammaire
    fichier_gramm = "grammaire.xml"
 
    # chargement de la partie fixe
    gramm = contexte.CreateGrammar(0) # l'id de la grammaire est zéro
    gramm.State = SpeechGrammarState.SGSDisabled # la grammaire est inactive durant son chargement
    gramm.CmdLoadFromFile(fichier_gramm, SpeechLoadOption.SLODynamic)
    
    # converti la liste des logiciels
    if liste_des_logiciels(gramm) == True: # la grammaire a été modifiée avec succés
    
        # activer la grammaire et les règles
        gramm.State = SpeechGrammarState.SGSEnabled
        gramm.CmdSetRuleIdState(0, SpeechRuleState.SGDSActive)

        # gérer les évènements
        contexte.EventInterests = SpeechRecoEvents.SREStreamStart + SpeechRecoEvents.SRERecognition
    
        # écouter les évènements
        pythoncom.PumpMessages()
        
    print("fin")



 Conclusion

La liste des logiciels reconnus peut être définie en fonction des besoins.
Finalement la reconnaissance vocale en français est accessible gratuitement sous windows xp.
Tout est dans le zip.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip LA SYNTHÈSE VOCALE DANS WINDOWS XP EN FRANÇAIS

 Sources de la même categorie

Source avec Zip SCRIPT PERMETTANT DE DÉCODER LA STRUCTURE SECONDAIRE D'UNE P... par Basilio
SUPPRESSION par Rano Its
CONVERTISSEUR DE TEMPÉRATURE par skizo00o
Source avec Zip Source avec une capture I.A. (DÉBUTANT) par Rano Its
Source avec Zip LA SYNTHÈSE VOCALE DANS WINDOWS XP EN FRANÇAIS par brennal

Commentaires et avis

Commentaire de Auronron le 16/03/2010 03:14:30

Bonjour,

J'ai essayer le script mais il ne fonctionne pas.

J'ai bien installer pywin32-py3.1 et j'ai aussi python-3.1.1 et windows xp pro en Français SP2 d'installer.

Mais pourtant l'erreur suivante s'affiche :

Traceback (most recent call last):
  File "C:\Documents and Settings\Jarzon\Mes documents\projet python\RECO_PY\sr.py", line 302, in <module>
    gramm.CmdLoadFromFile(fichier_gramm, SpeechLoadOption.SLODynamic)
  File "C:\Python31\lib\site-packages\win32com\gen_py\C866CA3A-32F7-11D2-9602-00C04F8EE628x0x5x0.py", line 2316, in CmdLoadFromFile
    , LoadOption)
pywintypes.com_error: (-2147352567, "Une exception s'est produite.", (0, None, None, None, 0, -2147200942), None)

Merci

Commentaire de brennal le 16/03/2010 11:02:14

Bonjour,

Je n'ai pas ce problème.
Je pense pas que ce soit une erreur d'accès à l'objet COM ; sinon une erreur serait survenue plus tôt. D'après le message, l'option de chargement n'est pas correcte. Peux - tu remplacer "SpeechLoadOption.SLODynamic" par sa valeur 1 à la ligne "gramm.CmdLoadFromFile(fichier_gramm, SpeechLoadOption.SLODynamic)".
Merci

Commentaire de Auronron le 17/03/2010 03:38:15

Merci pour ta réponse, j'ai fais se que tu as dit mais la même erreur s'affiche.

J'ai installer la Build 214 de pywin32 es-ce que tu as la même ?

Commentaire de Auronron le 17/03/2010 04:43:35

Sinon SpeechLoadOption.SLODynamic renvoie bien 1

Commentaire de brennal le 17/03/2010 15:58:35

Bonjour,

J'ai récupéré ma version de pywin32 dans le fichier \Lib\site-packages\pywin32-214-py3.1.egg-info. J'ai aussi la version 214.

Dans mon script, la création du contexte de la reconnaissance vocale utilise l'objet COM dont la chaîne est "SAPI.SpSharedRecoContext". Dans ma base de registre, cet objet est mis en oeuvre dans le fichier sapi.dll. La version du fichier de cette dll est 5.1.4111.0.
Pour faire fonctionner le script, j'ai aussi dû installer le SDK "Microsoft Speech SDK 5.1". Avec cette installation, j'ai obtenu la documentation de cette API (sapi.chm normalement), où la méthode CmdLoadFromFile (entre autre) est expliquée.
Est - que c'est ton cas ?

Commentaire de Auronron le 22/03/2010 03:06:03

Pareille pour moi.

Cependant dans la page de documentation on peux lire ceci a la fin de la section INSTALLATION :

Conserver la valeur "Microsoft engine recognizer 5.1" dans "Langue".

Pourtant quand je vais sur Voix dans le panneau de configuration j'ai comme choix dans la liste déroulante de la section Langue "Microsoft English Recognizer v5.1" et non pas "Microsoft engine recognizer 5.1"

J'ai aussi un ordinateur portable dans le quel Windows 7 est installer et lors que je lance le script la même erreur s'affiche seulement la reconnaissance vocale incorporer a windows 7 se lance.

J'ai aussi regarder le code de la synthèse vocale et il fonctionne parfaitement sous Windows XP et Windows 7.

Merci

Commentaire de brennal le 23/03/2010 19:11:24

Bonjour,

Je viens d'acquérir un nouveau pc avec windows 7. Mon script ne fonctionne pas. Je pense que l'outil de reconnaissance est déjà intégré car lorsque je regarde les paramètres de la reconnaissance vocale dans le panneau de configuration, le paramètre 'langue' a la valeur 'Microsoft speech recognizer 8.0 for windows (french - france). De plus, il existe un tutoriel sur l'utilisation de la reconnaissance vocale.
Il ne me reste plus qu'à essayer.

Commentaire de Flocreate le 19/05/2010 18:57:32

bonjour,
je suis un programmeur VB6iste.
j'ai installé le SAPI 5.1 et j'arrive fort bien a le faire reconnaitre.
En anglais seulement.
Il me semble que vous avez dis que vous reconnaissiez du français.
avez vous installé un recogniser en plus ?
je suis sous XP SP3
cordialement,

Commentaire de brennal le 21/05/2010 13:28:59

Bonjour,
J'arrive à reconnaître des "phrases simples" en "français" du type "execute word", "execute notepad", ... En fait ce sont des mots assez proches de l'anglais, mais je peux les prononcer avec une intonation française. Je n'ai pas installé de composant supplémentaire, mais seulement entraîné le moteur de reconnaissance vocale dans ce sens.
Néanmoins, cela ne fonctionne pas avec du texte semblable à ce message. Désolé, si l'intitulé de la source vous a induit en erreur.
Cordialement,

Commentaire de Flocreate le 22/05/2010 14:21:00

ya pas de mal, merci pour la réponse.
pour le français il va apparemment falloir attendre le SDK 5.3 intégré dans Vista et Seven mais qu'il ne semple pas pouvoir être téléchargé pour le moment.

une autre question, comment avez vous entrainez le moteur ?
par du code ou par un soft fournit par microsoft ?
il serrait peut-être possible de créer un nouveau recogniser en lui apprenant uniquement les mots qui nous intéressent (et en français).

cordialement,

Commentaire de brennal le 30/05/2010 11:58:56

Bonjour,
J'ai installé le SDK 5.1 de microsoft. Le moteur de reconnaissance est alors accessible dans le panneau de configuration.
Il existe une option pour entraîner le moteur. Cela consiste à "réciter" du texte en anglais.
Pour "créer un nouveau recognizer", je n'ai vu qu'une solution de contournement consistant à utiliser le lexique utilisateur (objet SpLexicon), et à associer des prononciation avec des mots. Cela fonctionnait plus ou moins bien (ça dépend des avis). Maintenant, je n'ai pas d'équipement audio particulier, mais seulement celui d'un PC d'entrée de gamme avec un micro de base.
Cordialement,

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Juillet 2010
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales