Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #8  
Antiguo 15-10-2024
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 280
Poder: 2
navbuoy Va por buen camino
Text to speech funcion Delphi:

Código:
uses
  ComObj, ActiveX;

procedure SpeakText(const text: string);
var
  Voice: Variant;
begin
  // Inicializar COM
  CoInitialize(nil);
  try
    // Crear el objeto de voz (SAPI.SpVoice)
    Voice := CreateOleObject('SAPI.SpVoice');

    // Pronunciar el texto
    Voice.Speak(text);

  finally
    // Finalizar COM
    CoUninitialize();
  end;
end;

Enumerar las Voces:

Código:
uses
  ComObj, ActiveX, SpeechLib_TLB, Variants;

procedure ListVoices;
var
  SpVoice: ISpeechObjectTokens;
  VoiceToken: ISpeechObjectToken;
  TokenEnum: IEnumVariant;
  VoiceID, VoiceName: OleVariant;
  i: Integer;
begin
  // Inicializar COM
  CoInitialize(nil);
  try
    // Crear el objeto de voz para obtener la enumeración de voces
    SpVoice := CreateOleObject('SAPI.SpVoice') as ISpeechObjectTokens;
    SpVoice := CreateOleObject('SAPI.SpObjectTokenCategory').GetTokens('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices', '', '');

    // Enumerar las voces
    TokenEnum := (SpVoice._NewEnum as IEnumVariant);
    i := 0;
    while TokenEnum.Next(1, VoiceID, nil) = S_OK do
    begin
      VoiceToken := IDispatch(VoiceID) as ISpeechObjectToken;
      VoiceName := VoiceToken.GetDescription(0);
      Writeln('Voz ID: ', i, ', Nombre: ', VoiceName);
      Inc(i);
    end;
  finally
    // Finalizar COM
    CoUninitialize();
  end;
end;
Cambiar la Voz:

Código:
uses
  ComObj, ActiveX, SpeechLib_TLB;

procedure SpeakText(const text, voiceId: string);
var
  Voice: ISpeechVoice;
  Token: ISpeechObjectToken;
  SpObjectTokenCategory: ISpeechObjectTokenCategory;
begin
  // Inicializar COM
  CoInitialize(nil);
  
  try
    // Crear el objeto de voz
    Voice := CoSpVoice.Create;

    // Obtener la categoría de las voces
    SpObjectTokenCategory := CoSpObjectTokenCategory.Create;
    SpObjectTokenCategory.SetId(SPCAT_VOICES, False);

    // Seleccionar la voz por ID
    Token := SpObjectTokenCategory.GetTokenFromId(voiceId);
    if Token <> nil then
      Voice.Voice := Token;

    // Pronunciar el texto
    Voice.Speak(text, 0);
  finally
    // Finalizar COM
    CoUninitialize;
  end;
end;

Última edición por navbuoy fecha: 15-10-2024 a las 17:13:20.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Delay en liveBindings look FireMonkey 0 01-04-2022 20:57:00
Ayuda con funcion Delay Novatin C++ Builder 2 25-06-2013 04:48:50
delay con WinSock chelox Internet 0 24-07-2010 06:46:36
Sleep/delay? nena_yei OOP 6 22-07-2010 16:41:47
Delay de Pascal Esau OOP 4 28-08-2003 21:32:11


La franja horaria es GMT +2. Ahora son las 15:38:29.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi