IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IHM Discussion :

Lecture sons par rapport à des données [AC-2010]


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 50
    Points : 33
    Points
    33
    Par défaut Lecture sons par rapport à des données
    Bonjour,

    Je développe actuellement une application permettant de tracer des cartons dans un processus de production.
    Pour cela, j'ai réussi à développer sur access 2010 un formulaire permettant de générer des codes barres simples et de les imprimer pour ensuite les coller sur les différents cartons (après avoir renseigné dans le formulaire le nombre de cartons). Une fois les codes barres collés sur les cartons, ils sont stockés dans une zone.
    Dans un seconde temps, la personne viendra scanner ces cartons à l'aide d'un embarqué informatique sous access 2010.

    Ce que j'aimerai obtenir : une fois le code barre détecté par le lecteur de code barre, afficher les informations relatives à l'identification (OK) mais également faire en sorte que le nom associé au carton soit mentionné par une voix enregistré au préalable (KO).

    Les noms correspondent à des textes simples : C001, C002 .... D125... (soit une lettre entre A et Z suivie de 3 chiffres).

    J'ai pensé à enregistré la prononciation des lettres de A à Z ainsi que les chiffres entre 0 et 9 et ensuite faire en sorte, par rapport au nom, que le formulaire puisse lire la chaine de caractère, savez vous comment je pourrai procéder ?

    Merci d'avance pour votre aide

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Pour ce faire, il te faut une table de correpondance des sons avec un identifiant commun pour pouvoir reconstituer les phrases un peu comme Simone à la SNCF
    Le train N°TTTT en provenance de PPPPP et à destination de DDDD, départ HH:MM partira de la voie VVVV.
    Les mots en rouge sont des variables et les mots en vert, fixes

    Par exemple, la phrase bâteau sera :
    Le code barre de traçage est => codebarreinit.wav
    Il te faut donc enregistrer tous les sons possibles associés à l'enregistrement correspondant dans la table des sons et donc :
    toutes les lettre de A à Z
    A.wav, B.wav...
    les nombres de 1 à 20, 30, 40, 50, 60, 80, 90, 100, 1000 et aussi le "'t" pour les liaisons de type 25 (vingt 't 5)
    1.wav, 2.wav...
    et ainsi de suite...

    La difficulté est de concevoir le contenu de la table et les bonnes associations mais c'est jouable... J'ai déjà donnée ;o)

    Une fois cela mis en place, tu pourras faire jouer l'API sndPlaySound() en asynchrone :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lngRes=sndPlaySound (strNomFichier, SND_ASYNC Or SND_NODEFAULT)
    Comme tu devras jouer plusieurs fichiers en lot, il te faudra faire une fonction générique appelée sur l'événement souhaitée...
    par exemple...
    D125:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Dim strBoxCode(1 To 5)
        strBoxCode(1) = "d.wav"
        strBoxCode(2) = "100.wav"
        strBoxCode(3) = "20.wav"
        strBoxCode(4) = "tit.wav"
        strBoxCode(5) = "5.wav"
        For S = LBound(strBoxCode) To UBound(strBoxCode)
            Call PlayBoxSound(strBoxCode(S))
        Next
    C'est un bon projet...

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  3. #3
    Membre averti
    Homme Profil pro
    Amateur
    Inscrit en
    Octobre 2010
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Octobre 2010
    Messages : 205
    Points : 360
    Points
    360
    Par défaut
    Bonjour,

    Je me permets de proposer une seconde approche que argyronet, que j'utilise parfois. Il s'agit d'utiliser la fonction Voix de Windows (avec une voix française à télécharger). Testé sous XP, cela fontionne !


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Sub Parle(strTexte As String)
    'pour télécharger une voix française : http://www.foad-spirit.net/voix_synthese/RSSolo4French.zip
     
        Dim spv As Object
        Set spv = CreateObject("SAPI.SpVoice")
     
     
     
        spv.Speak strTexte
     
    End Sub
    Pour votre problème (diction lente):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Public Sub LitCarton(ID_Carton As String)
     
        Dim strA_Lire As String, i As Long
     
        For i = 1 To Len(ID_Carton)
     
            If i <> Len(ID_Carton) Then
     
                strA_Lire = strA_Lire & Mid$(ID_Carton, i, 1) & " "    'Ajoute un espace entre chaque lettre
     
            Else
     
                strA_Lire = strA_Lire & Mid$(ID_Carton, i, 1)
     
            End If
     
        Next i
     
        Parle strA_Lire
     
    End Sub
    ou directement, qui marche pas mal aussi

    Plus d'infos, où j'ai trouvé mon code http://www.gmayor.com/word_text_to_speech.htm
    Pierre.

    Dans un monde passablement absurde, il y a quelque chose qui ne l'est pas, c'est ce qu'on peut faire pour les autres.

    André Malraux


    Ce message vous a aidé ? alors

    Votre souci est résolu ? alors

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Oui, c'est effectivement (beaucoup) plus simple.
    De mon temps, on ne disposait de voix aussi claire sachant tout déchiffrer avec une telle intonation.

    Par contre ça peut lever une erreur -2147200966 dans certaines conditions soit par exemple le débranchement soudain du casque USB en cours de lecture ou encore s'il n'y en a pas...

    Et aussi... ça bloque tout traitement pendant la lecture donc si ça se limite à quelques caractères ça va.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  5. #5
    Membre averti
    Homme Profil pro
    Amateur
    Inscrit en
    Octobre 2010
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Octobre 2010
    Messages : 205
    Points : 360
    Points
    360
    Par défaut
    Oui mais je n'ai jamais réussi à la faire fonctionner de façon asynchrone, malgré les paramètres idoines !

    Cela dépend de l'utilisation Stoo69...

    Si quelqu'un arrive à l'avoir fonctionnel en asynchrone... qu'il le poste
    Pierre.

    Dans un monde passablement absurde, il y a quelque chose qui ne l'est pas, c'est ce qu'on peut faire pour les autres.

    André Malraux


    Ce message vous a aidé ? alors

    Votre souci est résolu ? alors

  6. #6
    Membre averti
    Homme Profil pro
    Amateur
    Inscrit en
    Octobre 2010
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Octobre 2010
    Messages : 205
    Points : 360
    Points
    360
    Par défaut
    Citation Envoyé par Pepito78 Voir le message
    Oui mais je n'ai jamais réussi à la faire fonctionner de façon asynchrone, malgré les paramètres idoines !

    Cela dépend de l'utilisation Stoo69...

    Si quelqu'un arrive à l'avoir fonctionnel en asynchrone... qu'il le poste
    Je me corrige moi même il est possible de le faire parler en asychrone :

    Dans les déclarations générales d'un module

    Pour parler donc en asynchrone (ou pas d'ailleurs) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Public Sub Parle(strTexte, Optional Asynchrone As Boolean = True)
    ' Code basé sur www.gmayor.com%2Fword_text_to_speech.htm
        On Error Resume Next
        Set speech = CreateObject("SAPI.SpVoice")
     
        If Asynchrone Then
            speech.Speak strTexte, 3
     
     
            Do
                DoEvents
            Loop Until speech.WaitUntilDone(10)
     
     
        Else
     
            speech.Speak strTexte
     
        End If
     
        Set speech = Nothing
     
    End Sub
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Sub ArrêteDeParler()
    'Based on a macro by Mathew Heikkila
    'used to interrupt any running speech to text
        On Error Resume Next
        speech.Speak vbNullString, 2
        Set speech = Nothing
    End Sub
    Et pour compléter le tout, comment installer la voix française sur Seven/Vista 64...

    http://social.technet.microsoft.com/...-0e2e2ce74e0e/
    Pierre.

    Dans un monde passablement absurde, il y a quelque chose qui ne l'est pas, c'est ce qu'on peut faire pour les autres.

    André Malraux


    Ce message vous a aidé ? alors

    Votre souci est résolu ? alors

  7. #7
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Tu m'as devancé...
    3 c'est bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SVSFlagsAsync Or SVSFPurgeBeforeSpeak

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Enum SpeechVoiceSpeakFlags
        SVSFDefault = 0
        SVSFlagsAsync = 1
        SVSFPurgeBeforeSpeak = 2
    End Enum
    ???
    Si oui, il faut le préciser car c'est un peu vague...
    Si tu avais référencé SAPI.dll, tu aurais vu que ton appel pouvait bénéficier d'arguments, c'est ainsi que je l'ai vu de suite...

    Merci.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  8. #8
    Membre averti
    Homme Profil pro
    Amateur
    Inscrit en
    Octobre 2010
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Octobre 2010
    Messages : 205
    Points : 360
    Points
    360
    Par défaut
    Oui, Oui. j'avais aussi une version avec Microsoft API Speech référencée... avec les arguments qui allait bien (les mêmes que toi), mais ça ne fonctionnait pas du tout (aucune parole).

    La subtilité tenait à ce que l'objet speech soit déclaré au niveau de module et pas dans la procédure.

    Pourtant sur le site de l'auteur cette subtilité était écrite en gros et en gras !
    Pierre.

    Dans un monde passablement absurde, il y a quelque chose qui ne l'est pas, c'est ce qu'on peut faire pour les autres.

    André Malraux


    Ce message vous a aidé ? alors

    Votre souci est résolu ? alors

  9. #9
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Je confirme, en Private dans le module...
    Mais...

    Ce qui est drôle et par une simple erreur de frappe, j'ai posé 457 comme argument à la place du 3. Mon objet étant toujours déclaré au sein de la procédure, ça marche en asynchrone !!!
    Va comprendre, pourquoi 457 ?
    J'avoue que j'y perds mon latin...

    Et chez toi, tu as la même chose ?
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  10. #10
    Membre averti
    Homme Profil pro
    Amateur
    Inscrit en
    Octobre 2010
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Octobre 2010
    Messages : 205
    Points : 360
    Points
    360
    Par défaut
    Citation Envoyé par argyronet Voir le message
    Et chez toi, tu as la même chose ?
    Non, j'ai bien essayé déclaration de speech dans la procédure (suppression de la déclaration module), il ne se passe rien, le code se déroule en ignorant speech.speak strTexte, 457

    Va savoir...
    Pierre.

    Dans un monde passablement absurde, il y a quelque chose qui ne l'est pas, c'est ce qu'on peut faire pour les autres.

    André Malraux


    Ce message vous a aidé ? alors

    Votre souci est résolu ? alors

  11. #11
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Humm... Peut-être est-ce dû au fait que je suis en Win7-64...
    Bref, je garde le 3, c'est plus conventionnel.

    En tout cas, notre conversation n'intéresse pas plus que ça l'instigateur de la demande...

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  12. #12
    Membre averti
    Homme Profil pro
    Amateur
    Inscrit en
    Octobre 2010
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Octobre 2010
    Messages : 205
    Points : 360
    Points
    360
    Par défaut
    Citation Envoyé par argyronet Voir le message
    Humm... Peut-être est-ce dû au fait que je suis en Win7-64...
    Moi aussi !

    En tout cas, notre conversation n'intéresse pas plus que ça l'instigateur de la demande...
    Un peu frustrant parce que la méthode est plutôt adaptée à sa demande (en synchrone et asynchrone maintenant), et généralisable dès que l'on a besoin de synthèse vocale.

    En même temps, j'ai l'impression qu'il ne répond pas souvent aux réponses, à la vue des différents fils qu'il a initiés

    Très enrichissant d'avoir échanger sur ce sujet (j'ai trouvé mon bug asynchrone vieux de plus de 2 ans )

    Cordialement,
    Pierre.

    Dans un monde passablement absurde, il y a quelque chose qui ne l'est pas, c'est ce qu'on peut faire pour les autres.

    André Malraux


    Ce message vous a aidé ? alors

    Votre souci est résolu ? alors

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 50
    Points : 33
    Points
    33
    Par défaut
    Tout d'abord je tiens à m'excuser pour les discussions ouvertes et dont je n'ai pas donné signe de vie. Les informations ont toujours été très fructueuses mais c'est mon plus gros défaut : mener plusieurs projets en même temps, je passe ainsi vite d'un problème à un autre en oubliant les bonnes manières!

    Je vais prendre le temps d'ajouter la mention "résolue".

    En ce qui concerne mon problème de voix, je viens juste de faire un test et ça marche très bien avec la méthode de Pepito78 : simple et très efficace ! Moi qui ne suit pas un pro des codes ni d'access, je dois dire que son utilisation est très simple et en adéquation avec ma demande ! MERCI BEAUCOUP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Tableau automatique par rapport à des données d'un autre tableau
    Par ZHNEE dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 14/12/2014, 19h21
  2. Réponses: 4
    Dernier message: 01/02/2012, 20h19
  3. Algo de placement par rapport à des périodes données
    Par romfret dans le forum Algorithmes et structures de données
    Réponses: 17
    Dernier message: 28/04/2011, 17h11
  4. [BDD] Rapidité par rapport à des méthodes
    Par nicotine002 dans le forum Langage
    Réponses: 9
    Dernier message: 07/06/2006, 10h23
  5. Html : liste de choix par rapport à des choix
    Par Djwaves dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 22/03/2006, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo