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

Contribuez Discussion :

Message vocal ,son wave ou comment faire parler Access


Sujet :

Contribuez

  1. #1
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut Message vocal ,son wave ou comment faire parler Access
    Recemment ,les questions "comment jouer un son" et "comment faire un message vocale" ,ont été posées sur le forum.
    Voici comment je procède.

    Pour jouer un son wave :

    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
    Option Compare Database
    Option Explicit
     
    Public Declare Function PlaySound32 Lib "winmm.dll" Alias "PlaySoundA" (ByVal IpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
     
    Const SND_SYNC = &H0
    Const SND_ASYNC = &H1
    Const SND_FILENAME = &H20000
     
     
    Sub PlayWAV()
        Dim wavfile As String
        ' snd_async: son asynchrone (la musique n'arrete pas le programme)
     
        wavfile = CurrentProject.path & "\son\" & "caisse-enregistreuse.wav"
     
        Call PlaySound32(wavfile, 0&, SND_ASYNC Or SND_FILENAME)
     
    End Sub
    Pour un message vocal ,j'utilise balabolka.exe (http://www.clubic.com/telecharger-fi...balabolka.html)
    qui necessite Microsoft Speech SDK téléchargeable http://www.microsoft.com/download/en...ng=en&id=10121 .Placer le fichier balabolka.exe dans le dossier de votre application. La voix par défaut est très moche ,vous pouvez telecharger Virginie.exe (http://www.mta.alainlapierre.com/co/synthese.html).
    Ensuite ,double cliquer sur balabolka.exe et selectionner la voix ScanSoft Virginie_Dri40_16khz.

    Utilisation simple; à la fermeture d'un formulaire ,prononce le nom d'utilisateur du pc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Option Compare Database
    Option Explicit
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
                                          (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
                                           ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Private Sub Form_Close()
        Call Shell(Application.CurrentProject.path & "\balabolka.exe -nmrq " & "" & """Bonjour" & " " & Environ$("username") & "", vbHide)
    End Sub
    Avec une fonction possédant un ou plusieurs arguments(s):
    _dans un module


    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
    Option Compare Database
    Option Explicit
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
                                          (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
                                           ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Public Function MaterielSpeech(ByVal Lequel As String, Quantite As Integer)
        Dim MonRst As DAO.Recordset
        Dim MonSql As String
        Dim LeMatos As String
    'ma table "materiel" possède une colonne "speech" qui contient le nom à prononcer
     
        MonSql = "SELECT materiel.code, materiel.speech" & _
               " From materiel" & _
               " WHERE (((materiel.code)=" & Chr(34) & Lequel & Chr(34) & "));"
        Set MonRst = CurrentDb.OpenRecordset(MonSql)
        LeMatos = MonRst!speech
        MonRst.Close
        Set MonRst = Nothing
     
      Call Shell(Application.CurrentProject.path & "\balabolka.exe -nmrq " & "" & """reste" & " " & Quantite & " " & LeMatos & "", vbMinimizedNoFocus)
     
    End Function
    _ appel de la fonction ,sur click du champ "quant" de mon formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub quant_Click()
    'procédure visant à connaitre la quantité disponible du matériel en cours
    'combien representant le dispo , maT est le materiel en cours
     
    Call MaterielSpeech(maT, combien)
    '+ une msg box
        MsgBox combien & "_" & maT
    End Sub
    Il y a un petit décalage entre l'ouverture (cachée) de balabolka et le moment ou l'on entend le son ,mais apparement ,on ne peut rien y faire.

    Bonne lecture ,c'est ma première contribution.

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Bonjour,

    Pour les messages, j'utilise ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Cause(pStr_Texte As String)
    Dim oSpeakMe                  As Object
    Dim iSpeechTokens             As Object
     
        On Error GoTo Erreur:
        Set oSpeakMe = CreateObject("Sapi.spVoice")
        Set iSpeechTokens = oSpeakMe.GetVoices()
        Set oSpeakMe.Voice = iSpeechTokens.Item(2)
        oSpeakMe.Speak pStr_Texte
    Erreur:
    End Sub
    Le 2 peut-être remplacé par un 1 pour avoir une voix masculine
    [Access] Les bases du débogage => ici

  3. #3
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour Kloun.
    Chez moi,sur W7 ,J'ai la voix par défaut (Anna) et celle ajoutée ,(Virginie).Donc pas de voix masculine.
    Au boulot sur XP ,j'en ai 7 .
    Ton exemple marche bien ,mais il faut signaler que
    "iSpeechTokens.Item(x)" dépend du nombre de voix installées et que la première ou la dernière n'est pas forcément masculine .
    Bonne journée.

Discussions similaires

  1. comment faire parler l'ordinateur en francais vbs
    Par jackkramiste dans le forum VBScript
    Réponses: 5
    Dernier message: 28/06/2015, 20h36
  2. Comment faire un splash screen pour son application?
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/04/2007, 14h28
  3. [Modélisation] comment faire avec access?
    Par brouillonp dans le forum Access
    Réponses: 8
    Dernier message: 02/01/2006, 13h19
  4. [Message] Comment faire un prompteur sans bruit
    Par Kylen dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 26/08/2005, 11h15
  5. [TP]comment faire pour lire un fichier son
    Par sovo dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 19/09/2004, 19h33

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