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?
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
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:
Text To Speech.
Speech Syntesis and Speech Recognition with Speech SDK.
Speech SDK 5.1.
Speaking some text.
%20applied%20to%20Transformer%20models%20in%20machine%20learning.%20The%20image%20shows%20a%20neural%20networ.webp)

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