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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
  private
    procedure Parler(Vx: Word);
Créons la procédure :

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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
procedure TForm1.Button1Click(Sender: TObject);
begin
  Parler(0);
end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
procedure TForm1.Button2Click(Sender: TObject);
begin
  Parler(1);
end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
procedure TForm1.Button3Click(Sender: TObject);
begin
  Parler(2);
  Close;
end;
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
  private
    Procedure Speaker(Vk: Widestring);
Créons la procédure :

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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
procedure TForm1.Button1Click(Sender: TObject);
begin
  Speaker('Bonjour');
end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
procedure TForm1.Button2Click(Sender: TObject);
begin
  Speaker('Vous avez utilisé la deuxième procédure');
end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.