Donner la parole à une application
Bonjour,
Je vous propose 2 méthodes pour faire parler une application (sous Windows) selon les actions réalisées dans celle-ci.
Première méthode
Pour commencer, nous posons 3 boutons sur une forme.
Ensuite, nous mettons comobj dans les clauses uses.
Nous déclarons la procédure que nous allons créer :
Code:
1 2
| private
procedure Parler(Vx: Word); |
Créons la procédure :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| procedure TForm1.Parler(Vx: Word);
var
SavedCW: Word;
SpVoice: Variant;
begin
SpVoice:= CreateOleObject('SAPI.SpVoice');
//Optionnel : Réglage vitesse et volume de la voix
SpVoice.Rate:= 0;//Vitesse de la voix de -10 à 10
SpVoice.Volume:= 100;//Volume de la voix de 0 à 100
//Changer le masque d'interruption FPU pour éviter les exceptions
SavedCW:= Get8087CW;
try
Set8087CW(SavedCW or $4);
Case Vx of //Ce qui peut être dit par l'application
0 : SpVoice.Speak('Bonjour', 0);
1 : SpVoice.Speak('Vous avez utilisé la première procédure', 0);
2 : SpVoice.Speak('Au revoir', 0);
end;
finally
//Restaurer le masque FPU
Set8087CW(SavedCW);
end;
end; |
Codons les boutons de manière à faire parler l'application :
Code:
1 2 3 4
| procedure TForm1.Button1Click(Sender: TObject);
begin
Parler(0);
end; |
Code:
1 2 3 4
| procedure TForm1.Button2Click(Sender: TObject);
begin
Parler(1);
end; |
Code:
1 2 3 4 5
| procedure TForm1.Button3Click(Sender: TObject);
begin
Parler(2);
Close;
end; |
:alerte: Important : Pour que l'application prononce les caractères accentués correctement, il faut ajouter l'option -FcUTF8 aux options de compilation passées à FPC (dans l'EDI Lazarus Projet / Options du projet.../ Options du compilateur / Options personnalisées) et compiler ensuite.
Deuxième méthode
Avec les mêmes composants, nous allons obtenir un résultat identique à celui de la méthode proposée précédemment.
Ici aussi, nous mettons comobj dans les clauses uses.
Nous déclarons la procédure que nous allons créer :
Code:
1 2
| private
Procedure Speaker(Vk: Widestring); |
Créons la procédure :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Procedure TForm1.Speaker(Vk: Widestring);
var
SavedCW: Word;
SpVoice: Variant;
begin
SpVoice:= CreateOleObject('SAPI.SpVoice');
//Optionnel : Réglage vitesse et volume de la voix
SpVoice.Rate:= 0;//Vitesse de la voix de -10 à 10
SpVoice.Volume:= 100;//Volume de la voix de 0 à 100
//Changer le masque d'interruption FPU pour éviter les exceptions
SavedCW:= Get8087CW;
try
Set8087CW(SavedCW or $4);
SpVoice.Speak(Vk, 0);
finally
//Restaurer le masque FPU
Set8087CW(SavedCW);
end;
end; |
Codons les boutons de manière à faire parler l'application :
Code:
1 2 3 4
| procedure TForm1.Button1Click(Sender: TObject);
begin
Speaker('Bonjour');
end; |
Code:
1 2 3 4
| procedure TForm1.Button2Click(Sender: TObject);
begin
Speaker('Vous avez utilisé la deuxième procédure');
end; |
Code:
1 2 3 4 5
| procedure TForm1.Button3Click(Sender: TObject);
begin
Speaker('Au revoir');
Close;
end; |
Comme dans la première méthode, il faut ajouter -FcUTF8 aux options de compilation avant de compiler le projet.
Maintenant, à vous de choisir la méthode qui vous semblera la plus judicieuse à utiliser dans vos projets.