Speech SDK con Delphi

Hoy os traigo un componente muy interesante, Speech SDK (Microsoft Speech Object Library), una API de windows que permite dictar texto por los altavoces del ordenador. Ésta idea me vino el otro dĂ­a mientras miraba una pelĂ­cula dĂ³nde uno de los testigos no querĂ­a que su voz se viera involucrada en la declaraciĂ³n. Para ello, utilizaron un ordenador, un software para la transcripciĂ³n y unos altavoces. De Ă©sta manera el testigo, escribĂ­a todo lo que querĂ­a decir y la voz del ordenador decĂ­a todas esas palabras y frases. Pues bien, despuĂ©s de investigar un poco y consultar las diferentes API's de las que dispone nuestro SO, ya sea Windows XP o vista, he encontrado la API Speech SDK que me permite hacer esta pijada.
  • CĂ³mo lo instalo en Delphi?
He encontrado varios ejemplos de la instalaciĂ³n del componente pero solo para Delphi 6 y 7, y la verdad es que para Delphi 2007 o 2009, la cosa ha cambiado bastante. Pues bien, despuĂ©s de interminables pruebas, he conseguido realizar una mini aplicaciĂ³n que es capaz de decir lo que entro en un Edit box, y la verdad es que una vez lo tenemos todo instalado, solo es insertar el componente necesario y ejecutar uno de sus mĂ©todos.

Primeros pasos:

Una vez tengo abierto el delphi, creo un nuevo package (File -> New -> Package - Delhpi for win32), que en este caso voy a llamar TSpeechSDK50, ya que utilizarĂ© la Microsoft Speech Object Library 5.0. PodrĂ­a utilizar la 5.1, pero es la que me viene con el windows. En uno de los enlaces anteriores os he dejado la pĂ¡gina de la descarga de Ă©sta API.


Ahora viene la parte importante, tengo que importar la librerĂ­a que necesito. Por lo tanto, vamos a Component -> Import Component, y dentro del asistente, selecciono Import a type Library. Ahora continuo con el asistente y selecciono la librerĂ­a que me interesa:

Ahora en el siguiente paso, tenemos que seleccionar en que paleta queremos los componentes y sobretodo marcar la casilla "Generate Component Wrappers".


Ahora, para finalizar, importamos éste componente a nuestro package:

El proyecto quedarĂ¡ de la siguiente manera:

Ahora, tenemos en nuestro proyecto el fichero SpeechLib_TLB.pas:

Ahora que ya lo tenemos todo, viene la parte mĂ¡s importante, hacemos un Compile, un Build y un Install, y nos tiene que aparecer el siguiente mensaje indicando que se han instalado todos los componentes correctamente:

Bien, si ahora nos fijamos en nuestra paleta de componentes, veremos como han aparecido todos éstos componentes:



  • Creando la aplicaciĂ³n Thundax Speech Dictator
Ahora, solo tenemos que crear una pequeña aplicaciĂ³n donde utilizaremos Ă©stos componentes. AquĂ­ os dejo mi aplicaciĂ³n Thundax Speech Dictator, que tiene un TMemo el cual todas las palabras que contengan serĂ¡n reproducidas por el altavoz. El idioma predefinido es el inglĂ©s, por lo tanto lo voy a dejar asĂ­. Si quisiĂ©ramos otros idiomas o voces, solo hay que descargarlos de la web de microsoft.

La nueva aplicaciĂ³n, tambiĂ©n debe contener el fichero SpeechLib_TLB.pas ya que las declaraciones de diversas variables estĂ¡n contenidas dentro de Ă©sta librerĂ­a. Por lo tanto mi ejemplo tiene la siguiente forma:

El cĂ³digo fuente de la aplicaciĂ³n es aĂºn mĂ¡s sencillo, solo tenemos que emplastar el componente TSPVoice y ejecutar su mĂ©todo Speak.

unit Unit3;

interface

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

type
    TForm3 = class(TForm)
        Button1: TButton;
        SpVoice1: TSpVoice;
        Memo1: TMemo;
        procedure Button1Click(Sender: TObject);
    private
        { Private declarations }
    public
        { Public declarations }
    end;

var
    Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
var
    iSpeechFlags: Integer;
begin
    if Memo1.Text = '' then
        exit;
    iSpeechFlags := SVSFlagsAsync or SVSFPurgeBeforeSpeak or SVSFIsXML;
    SpVoice1.Speak(Memo1.Text, iSpeechFlags);
end;

end.


Ahora, una vez tenemos la aplicaciĂ³n en funcionamiento, y le damos al Play, escucharemos el texto escrito en el TMemo:


En mi opiniĂ³n, es una buena API, disponemos de muchas funcionalidades ya sea reproducir un texto o reconocer incluso las palabras que nosotros decimos. Solo hay que explorar un poco mĂ¡s la potencia de Ă©sta API, incluyendo diferentes idiomas e incluso añadiendo diferentes voces. Todo Ă©sto y mĂ¡s en Microsoft. Si probĂ¡is la aplicaciĂ³n en Windows XP o en Windows Vista, encontrarĂ©is bastante diferĂ©ncia, ya que la voz que podemos oir en windows vista, es de una mujer y se entiende mucho mejor.
  • Enlaces de interĂ©s:
Installing the Microsoft SAPI Speech SDK.
Text To Speech.
Speech Syntesis and Speech Recognition with Speech SDK.
Speech SDK 5.1.
Speaking some text.

Comments

  1. dictar texto no puedo encontrar como, tendrĂ¡s un ejemplo?

    ReplyDelete

Post a Comment

Popular Posts