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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-10-2014
koiji koiji is offline
Miembro
 
Registrado: oct 2007
Posts: 21
Poder: 0
koiji Va por buen camino
lector de texto SAPI.SpVoice

buenas tarde lo que estaba investigando es como poder hacer que la voz de SAPI.SpVoice sea en español porque por defecto esta en ingles tendra la opcion de cambiar la voz a español gracias por sus comentarios


Código Delphi [-]
var
  SpVoice: Variant;
begin
   SpVoice := CreateOleObject('SAPI.SpVoice');
  SpVoice.Speak('Hola Mundo', 0);
end;
Responder Con Cita
  #2  
Antiguo 28-10-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Aquí tienes una descripción completa con código de ejemplo del funcionamiento de esta API.
Tal vez esto te sirva, ya que hace referencia a cambiar el idioma.
Y aquí tienes el enlace para descargar algunos idiomas más.
__________________
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.
Responder Con Cita
  #3  
Antiguo 30-10-2014
koiji koiji is offline
Miembro
 
Registrado: oct 2007
Posts: 21
Poder: 0
koiji Va por buen camino
Buenas tardes Señor neftali no puede encontrar cambiarle el idioma a español encontre una linea SpVoice.GetVoices('','Language=C0A').Item(0) no dio gracias
Responder Con Cita
  #4  
Antiguo 30-10-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
No lo he probado, pero se supone que con esto puedes enumerar todas la "voces" disponibles.

Y en la última parte de esa sección está el evento que hay que programar para cambiarlas.
__________________
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.
Responder Con Cita
  #5  
Antiguo 30-10-2014
koiji koiji is offline
Miembro
 
Registrado: oct 2007
Posts: 21
Poder: 0
koiji Va por buen camino
Error en la configuracion del lenguaje Speech

Acabo de probar el script aqui pongo

Código Delphi [-]
var
  SOToken: ISpeechObjectToken;
begin
  with lstEngineInfo.Items do
  begin
    Clear;
    SOToken := ISpeechObjectToken(Pointer(
      cbVoices.Items.Objects[cbVoices.ItemIndex]));
    SpVoice.Voice := SOToken;
    Add(Format('Name: %s', [SOToken.GetAttribute('Name')]));   ///////////////// Aqui me manda un error nombre del error abajo
    Add(Format('Vendor: %s', [SOToken.GetAttribute('Vendor')]));
    Add(Format('Age: %s', [SOToken.GetAttribute('Age')]));
    Add(Format('Gender: %s', [SOToken.GetAttribute('Gender')]));
    Add(Format('Language: %s', [SOToken.GetAttribute('Language')]));
    Add(Format('Reg key: %s', [SOToken.Id]));
  end
end;

lo que pasa cuando ejecuto me manda este error yo estoy utilizando delphi 2010

First chance exception at $7592D3CF. Exception class EAccessViolation with message 'Access violation at address 004BA755 in module 'Project3.exe'. Read of address 00000000'. Process Project3.exe (5812)
Responder Con Cita
  #6  
Antiguo 31-10-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Ejecuta paso a paso y al llegar a esa línea revisa que todo esté asignado correctamente.
Normalmente estos errores son por acceder a un elemento que apunta a nil.
__________________
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.
Responder Con Cita
  #7  
Antiguo 31-10-2014
koiji koiji is offline
Miembro
 
Registrado: oct 2007
Posts: 21
Poder: 0
koiji Va por buen camino
Revise el codigo varias veces y no encontre ningun error simplemente al compilar me manda el error " Access violatio at address 004BA755 in module 'Project3.exe'. Read of address 00000000. " el codigo completo de lo que estoy haciendo es este talves puede ser porque estar utilizando delphi 2010 porque vi que esta compilado en delphi2007

Código Delphi [-]

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    cbVoices: TComboBox;
    lstEngineInfo: TListBox;
    Button2: TButton;
    reText: TEdit;
    SpVoice: TSpVoice;
    tbRate: TTrackBar;
    lblRate: TLabel;
    tbVolume: TTrackBar;
    lblVolume: TLabel;
    lstProgress: TProgressBar;
    procedure Button1Click(Sender: TObject);
    procedure cbVoicesChange(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var BeenPaused : Boolean;
begin
  if not BeenPaused then
    SpVoice.Speak(reText.Text, SVSFlagsAsync)
  else
  begin
    SpVoice.Resume;
    BeenPaused := False
  end
end;

procedure TForm1.cbVoicesChange(Sender: TObject);
var
  SOToken: ISpeechObjectToken;
begin
  with lstEngineInfo.Items do
  begin
    Clear;
    SOToken := ISpeechObjectToken(Pointer(
      cbVoices.Items.Objects[cbVoices.ItemIndex]));
    SpVoice.Voice := SOToken;
    Add(Format('Name: %s', [SOToken.GetAttribute('Name')]));
    Add(Format('Vendor: %s', [SOToken.GetAttribute('Vendor')]));
    Add(Format('Age: %s', [SOToken.GetAttribute('Age')]));
    Add(Format('Gender: %s', [SOToken.GetAttribute('Gender')]));
    Add(Format('Language: %s', [SOToken.GetAttribute('Language')]));
    Add(Format('Reg key: %s', [SOToken.Id]));
  end
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;
  SOToken: ISpeechObjectToken;
  SOTokens: ISpeechObjectTokens;
begin
  SendMessage(lstProgress.Handle, LB_SETHORIZONTALEXTENT, Width, 0);
  //Ensure all events fire
  SpVoice.EventInterests := SVEAllEvents;
  //Log('About to enumerate voices');
  SOTokens := SpVoice.GetVoices('', '');
  for I := 0 to SOTokens.Count - 1 do
  begin
    //For each voice, store the descriptor in the TStrings list
    SOToken := SOTokens.Item(I);
    cbVoices.Items.AddObject(SOToken.GetDescription(0), TObject(SOToken));
    //Increment descriptor reference count to ensure it's not destroyed
    SOToken._AddRef;
  end;
  if cbVoices.Items.Count > 0 then
  begin
    cbVoices.ItemIndex := 0; //Select 1st voice
    cbVoices.OnChange(cbVoices); //& ensure OnChange triggers
  end;
  //Log('Enumerated voices');
  //Log('About to check attributes');
  tbRate.Position := SpVoice.Rate;
  lblRate.Caption := IntToStr(tbRate.Position);
  tbVolume.Position := SpVoice.Volume;
  lblVolume.Caption := IntToStr(tbVolume.Position);
  //Log('Checked attributes');
end;

procedure TForm1.FormDestroy(Sender: TObject);
var
  I: Integer;
begin
  //Release all the voice descriptors
  for I := 0 to cbVoices.Items.Count - 1 do
    ISpeechObjectToken(Pointer(cbVoices.Items.Objects[i]))._Release;
end;


end.
Responder Con Cita
  #8  
Antiguo 31-10-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por koiji Ver Mensaje
Revise el codigo varias veces y no encontre ningun error simplemente al compilar me manda el error " Access violatio at address 004BA755 in module 'Project3.exe'. Read of address 00000000. "
¿Al compilar o al ejecutar?
__________________
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.
Responder Con Cita
  #9  
Antiguo 31-10-2014
koiji koiji is offline
Miembro
 
Registrado: oct 2007
Posts: 21
Poder: 0
koiji Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
¿Al compilar o al ejecutar?
al compilar y al ejecutar cualquiera de los 2 eso es muy raro porque error de codigo no visualizo tengo instalado el componente speech

1.- al compilar me manda a la linea de codigo

Código Delphi [-]
Add(Format('Name: %s', [SOToken.GetAttribute('Name')]));

2.- al ejecutar solo el error pero me muestra el listbox con las voces pero cuando selecciono alguno tambien me manda el mismo error en ejecución
Responder Con Cita
  #10  
Antiguo 06-11-2014
koiji koiji is offline
Miembro
 
Registrado: oct 2007
Posts: 21
Poder: 0
koiji Va por buen camino
Cita:
Empezado por koiji Ver Mensaje
al compilar y al ejecutar cualquiera de los 2 eso es muy raro porque error de codigo no visualizo tengo instalado el componente speech

1.- al compilar me manda a la linea de codigo

Código Delphi [-]
Add(Format('Name: %s', [SOToken.GetAttribute('Name')]));

2.- al ejecutar solo el error pero me muestra el listbox con las voces pero cuando selecciono alguno tambien me manda el mismo error en ejecución

Neftali usted me podra colaborar con este error que no e podido solucionar de cambio de voces

Código Delphi [-]
Add(Format('Name: %s', [SOToken.GetAttribute('Name')]));
Responder Con Cita
  #11  
Antiguo 07-11-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por koiji Ver Mensaje
al compilar y al ejecutar cualquiera de los 2 eso es muy raro porque error de codigo no visualizo tengo instalado el componente speech

1.- al compilar me manda a la linea de codigo

Código Delphi [-]
Add(Format('Name: %s', [SOToken.GetAttribute('Name')]));

2.- al ejecutar solo el error pero me muestra el listbox con las voces pero cuando selecciono alguno tambien me manda el mismo error en ejecución
¿Qué error te devuelve al compilar?
No entiendo que puedas ejecutarlo si no consigues compilarlo. Debes estar ejecutando algo anterior.
Hay que centrarse en el punto 1.
__________________
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.
Responder Con Cita
Respuesta



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
Lector de mensajes FideRosado Varios 7 14-11-2013 17:55:16
Lector de Firmas sergio_015 Varios 8 10-05-2007 01:15:31
Lector de Biometria APC JerS Varios 3 02-11-2006 15:29:31
Es imposible un lector de DVD???? gandalf_27 Varios 2 15-06-2006 16:07:40
Ayuda para SAPI Duc API de Windows 2 28-07-2004 17:31:16


La franja horaria es GMT +2. Ahora son las 01:32:11.


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