Aller au contenu


Information tutoriel

  • Ajouté le: juin 18 2012 02:58
  • Date Updated: janv. 21 2013 05:58
  • Lectures: 14118
 


* * * * *
2 Notes

Faire parler un PC avec VB.NET

Ou comment donner de la voix à votre robot/PC en moins de 20 lignes

Posté par julkien on juin 18 2012 02:58
Principe

Le but de ce tutoriel est de faire tout simplement parler l'ordinateur en un minimum de lignes
Ici on lui feras simplement annoncer l'heure.


Prérequis

  • VisualBasic 2010 Express
  • WindowsSeven

I) Vérification et configuration des voix pardefault de Windows

Windows ne contient pas par default de langue française,(ben oui il ne parle que l'Américain , ou le chinois ^^) , alors ilfaut ajouter la voix Virginie (de la societe Nuance (ex Scansoft)) en français, cliquer sur ce Mon lien ,decompresser l'archive et installer RSSolo4FrenchVirginie.exe pour tester la voix, appuyer sur la touche Windows* et la touche 'R' pour ouvrir la fenêtre "Exécuter" , taper :"C:\Windows\SysWOW64\Speech\SpeechUX\sapi.cpl" puis cliquer sur ok.

une fenêtre s'ouvre et vous propose plusieurs voix sélectionner: "ScanSoft Virginie_Dri40_16kHz"
rentrer un texte (en français correctement orthographier!;)/> ) et cliquer sur "Tester la voix"
Voilà maintenant que l'on sait que ça marche on vapourvoir coder

*=(la touche Windows est entre la touche 'CTRL' et 'ALT'!:P/>)


II) Créer le projet sous Visual Basic 2010 Express

Ouvrer Visual basic 2010 Express et cliquer sur nouveau projet
Sélectionner : application Windows forms
Renseigner le nom du projet : "Mon_Prog_donne_lheure"et cliquer sur ok
Nous avons donc la form mais elle est un peu vide

Image IPB

Ajoutez un bouton ( il se trouve dans la barre d'outils,un glisser/déposer suffit à le mettre en place )
Ajoutez maintenant une Combo Box
Hein, Quoi ?! Combo Box toi-même ! Non rassurez-vous ce n'est pas une insulte mais juste le menu qui nous permettras de sélectionner nos voix
Il se trouve toujours dans la barre d'outil
Au final on devrais avoir une fenêtre qui ressemble à ça:

Image IPB

Et du coup ça y est on a fini l'interface de commande :)/>.C'est l'avantage de vb.net: facile d'accès, du moins jusque-là ! ( je dis juste ça pour vous faire peur! :P/> )


III) Le code

Contrairement à l'Arduino qui exécute la fonction Loop en boucle, en VB ontravaille par évènement.
Bon ok jusque-là c'est simple mais comment lui dire defaire telle tâche au démarrage ?
Ben en fait c'est vraiment pas compliqué il vous suffitde faire un double clic sur la Form1 précédemment créé !
Et tout d'un coup il nous sort tout un code :

Public Class Form1

Private Sub Form1_Load(ByVal sender AsSystem.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub

End Class


Je ne vais pas vous expliqué en détail le VB il a d'autres sites plus sympas pour apprendre [/font][/size]
Si on décompose le code on trouve 2 groupe [/font][/size]

En première place on trouve la déclaration de la class

PublicClass Form1
End Class


C'est la dedans que l'on met notre code en réalité
En 2eme nous avons la fonction : Chargement de la forme

Private Sub Form1_Load(ByVal senderAs System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub


Je vous invites à coller dans la place de celui existant ce texte :[/font][/size]


Imports System.Speech

Imports System.Speech.Synthesis

Public Class Form1

Dim s As SpeechSynthesizer = New SpeechSynthesizer() ' declaration du systeme de narration

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'au chargementde la forme:

Dim listevoix =s.GetInstalledVoices 'listevoix est egale a la liste des voix installer

For Each v As InstalledVoice In listevoix 'je charge chaque voix installer

ComboBox1.Items.Add(v.VoiceInfo.Name) '

Next

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' quand je clics sur le bouton1

Dim texte As String = "Il est " & Now.Hour & " heure et " & Now.Minute &"Minute" 'declaration du texte

Dim voix As String = ComboBox1.SelectedItem 'la voixest egale la selection du combobox

s.SelectVoice(voix) ' je choisi la voix

s.Speak(texte) 'je lis le texte

End Sub

End Class


Vous avez remarquer ? il y a des lignes de surligné !
C'est normale
Il nous manque une dll pour que le logiciel parle
Le truc c'est que l'on est sous du code en .net(prononcer DotNet)
Il nous donne pas mal d'avantage et nous offre par la mêmeoccasion tout une bibliothèque lié à Windows
comme par exemple:
des module qui permette l'interaction avec les fichier, réseau,les Port de communication( ah ça sera certainement le sujet d'un autre tuto! ;)/>)
etc


pour ajouter la DLL , il suffit de cliquer sur le menu Projet => Ajouter une référence
une fenêtre s'ouvre cliquer sur l'onglet ".Net"
choisissez dans le menu System.speech et cliquer sur Ok


Conclusion

Voilà on as un programme fonctionnel

Oups, j'ai failli oubliez, cliquez sur le bouton lecture pour lancer l'application
Sélectionner la voix " ScanSoft Virginie_Dri40_16kHz" dans le menu et cliquez sur button1

Elle devrais vous dire avec une voix douce : "il est 12 heures et 21 minutes" ....
Enfin la voix douce et l'heure est relatif :D/>

J'espère que ça aideras !
Merci de m'avoir lu


Julkien