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 :
Pour un message vocal ,j'utilise balabolka.exe (http://www.clubic.com/telecharger-fi...balabolka.html)
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
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
Avec une fonction possédant un ou plusieurs arguments(s):
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
_dans un module
_ 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
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
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.
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
Bonne lecture ,c'est ma première contribution.
Partager