![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
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;
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. |
|
#2
|
||||
|
||||
|
¿Con qué versión y con qué fichero SpeechLib_TLB lo has compilado? ¿Lo acabo de importar con Delphi 12 (la version 5.4) y me da errores al compilar?
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#3
|
|||
|
|||
|
con rad Studio 11.3 y con Windows 10
a mi si que me funciona. pero yo uso C++ Builder, yo solo inclui el sapi.h Neftali para la primera funcion de leer texto y lo lee y lo habla. Última edición por navbuoy fecha: 16-10-2024 a las 14:06:31. |
|
#4
|
||||
|
||||
|
¿Puedes adjuntar el SpeechLib_TLB que estás utilizando?
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#5
|
|||
|
|||
|
A ver si esto te sirve Neftali
Cita:
|
|
#6
|
||||
|
||||
|
Si eso ya lo he hecho. Son lospasos estandard para importar una librería. He generado el fichero SpeechLib_TLB.pas,pero me está dando errors. No se si por la versión de Delphi con la que he hecho la importación o por algún problema en le importador. Te estaba pidiendo que me la pasaras si tú la tenías importada y te compilaba.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#7
|
||||
|
||||
|
Ya está. No es necesario.
he encontrado uno que compila bien aquí: https://github.com/CHERTS/mspeech/bl...echLib_TLB.pas
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
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 |
|