kblogger

Aplicación que habla [SAPI]

Mirando por ahí me encontré con una librería de Microsoft muy interesante, es la “Microsoft Speech Object Library“, pero ¿Qué hace exactamente?, pues lo que hace ésta librería es permitirnos hacer o divertirnos con nuestra aplicación agregándole un “modulador” de voz.

En fin, me tomé el trabajo de hacer una aplicación de ejemplo:

Agrego el código…

unit Main;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleServer, SpeechLib_TLB, ComCtrls, Buttons, ShellAPI;
 
type
  TFrm_Speech = class(TForm)
    SPVoice: TSpVoice;
    Memo_Hablar: TMemo;
    Track_Velocidad: TTrackBar;
    Lb_Rate: TLabel;
    Lb_Volume: TLabel;
    Track_Volume: TTrackBar;
    Btn_Speak: TBitBtn;
    Spd_Web: TSpeedButton;
    procedure Btn_HablarClick(Sender: TObject);
    procedure Track_VelocidadChange(Sender: TObject);
    procedure Track_VolumeChange(Sender: TObject);
    procedure Spd_WebClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Frm_Speech: TFrm_Speech;
 
implementation
 
{$R *.dfm}
 
procedure TFrm_Speech.Btn_HablarClick(Sender: TObject);
begin
SPVoice.Speak(Memo_Hablar.Text,0)
end;
 
procedure TFrm_Speech.Spd_WebClick(Sender: TObject);
begin
ShellExecute(0,'open','http://foro.latinohack.com/',nil,nil,0);
end;
 
procedure TFrm_Speech.Track_VelocidadChange(Sender: TObject);
begin
SPVoice.Rate := Track_Velocidad.Position
end;
 
procedure TFrm_Speech.Track_VolumeChange(Sender: TObject);
begin
SPVoice.Volume := Track_Volume.Position
end;
 
end.

También pueden crearlo llamando a la función CreateOleObject que es idéntica a la función CreateObject de muchos lenguajes como VBS.

uses ComObj;
 
var
  Voice: OLEVariant;
begin
  Voice := CreateOLEObject('SAPI.SpVoice');
  Voice.Speak('Hello LatinoHack!', 0);
end;

Les dejo el link de descarga de la aplicación de ejemplo más la SAPI.

-Descarga:

http://www.box.net/shared/rdzuulmv14

Más >