Syntezator mowy Sam

To jest program, który tylko pokazuje, jak umieścić syntezator mowy istniejący w komputerze we własnym programie, aby sprawdzać wymowę angielską w wydaniu tego syntezatora. Utwórz projekt, wklej kod Unit1 i uruchom. Nic więcej nie trzeba robić, no chyba, że masz wyłączony dźwięk.

Najważniejsze w kodzie jest:
uses Variants, ComObj;
Sam: OLEVariant;
Sam := CreateOLEObject('SApi.SpVoice');
Sam.Speak(Edit.Text);


Napisałem ten gotowiec z myślą o osobach mniej zaawansowanych w Delphi, a bardziej zainteresowanych analizą wymowy syntezatora, po otrzymaniu jednego z pytań do mojego artykułu "Jak zrobić syntezator mowy polskiej wykorzystując Microsoft Sam’a". Właściwie to chodzi o to, żeby nie wchodzić za każdym razem do Panelu strowania / Mowa.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure ButtonClick(Sender: TObject);
  public
    Prompt: TLabel;
    Edit: TEdit;
    Button: TButton;
    Sam: OLEVariant;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  ComObj;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Sam := CreateOLEObject('SApi.SpVoice');
  Width := 800;
  Height := 600;
  Position := poScreenCenter;
  Font.Name := 'Tahoma';
  Font.Size := 8;
  Font.Style := [fsBold];
  Prompt := TLabel.Create(Self);
  Prompt.Left := 20;
  Prompt.Caption := 'Wpisz tekst, którego wymowę chcesz testować.';
  Prompt.Top := 10;
  InsertControl(Prompt);
  Edit := TEdit.Create(Self);
  Edit.Left := Prompt.Left;
  Edit.Width := Width - Edit.Left * 2;
  Edit.Top := Prompt.Top + Prompt.Height + 10;
  Edit.Text := 'This is your computer''s default voice.';
  InsertControl(Edit);
  Button := TButton.Create(Self);
  Button.Left := 20;
  Button.Width := 80;
  Button.Caption := 'Czytaj';
  Button.Top := Edit.Top + Edit.Height + 10;
  Button.OnClick := ButtonClick;
  InsertControl(Button);
end;

procedure TForm1.ButtonClick(Sender: TObject);
begin
  if Trim(Edit.Text) <> '' then
    Sam.Speak(Edit.Text);
end;

end.
Informacje
Ostatnia modyfikacja 29-12-2009 08:58 Ostatni autor Artur Protasewicz
Ilość wyświetleń 1190 Wersja 1
Copyright © 2000-2006 by Coyote Group 0.9.3-pre3
Czas generowania strony: 0.0530 sek. (zapytań SQL: 9)