![]() |
![]() |
| 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
|
|||
|
|||
|
Perdonen a todos los interesados en este tema, es que me he tomado unas vacaciones en el mes de agosto y no he tocado mi PC por varios días.
A partir de hoy les prometo que retomaré el asunto y los mantengo al tanto. Nota: Les aconsejo que no esperen mucho de mí, ya que soy un aprediz del delphi y de este asunto en particular ni hablar. chao
__________________
Saludos Seara2005 |
|
#2
|
||||
|
||||
|
Hecho todo lo anterior, solo queda saber como cargar el personaje, ponerlo en pantalla y hacerlo hablar.
Y ya solo queda hacer con él lo que nos apetezca. El tema de averiguar los motores de voz que puede usar y el tipo de voz es algo más complejo. Para un proyecto basico, sobra con esto. Si tienes alguna duda, pinchame un poco ![]() Se me olvidaba, hay otras formas de hacerlo hablar, sin usar un objeto "Merlin:IAgentCtlCharacter" pero he observado que despues no lo puedes hacer callar (te da un error en ejecución), por eso trabajo con el objeto IAgetCtlCharacterSuMadreTambien ![]() Saludos. Última edición por Lepe fecha: 14-09-2004 a las 17:42:13. |
|
#3
|
|||
|
|||
|
Muchas Gracias a todos los que me han ayudado, especialmente a LEPE y a GERMAN.
He confeccionado un programita sencillo y me ha funcionado correctamente. El ayudante aparece, desaparece, habla, etc. esto me sirve como base para utilizarlo en cosas mas complejas. A continuación les describo: - Realicé las Instalaciones en el orden que Germán explica, busqué los archivos necesarios utilizándo sus enlaces. - Despues en Delphi, Importé el ActiveX Microsoft Agent 2.0 mediante el menú component\Import Active X Control...\y lo seleccioné de la lista y click en install. - El la Paleta de componentes en la pestaña de Active X del delphi aparece un Componente llamado Agent. - Confeccioné el programa guiándome por el que aparece elaborado por Lepe anteriormente y algunas cosas tomadas del artículo de la sección de columnas de este club delphi elaborado por Jorge. A continuación les describo el Programa: En el Formulario Inserté un agent y 5 botones (ShowMessage/Opciones/Mostrar/Hablar/Ocultar/Cerrar) A continuación el código completo: ------------------------------------------------------- unit Main; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Buttons, OleCtrls, AgentObjects_TLB, uAgentMessage, StdCtrls, contnrs; type TfrmMain = class(TForm) btnShowMessage: TSpeedButton; Agent: TAgent; ButtonOpciones: TButton; ButtonMostrar: TButton; ButtonHablar: TButton; ButtonOcultar: TButton; ButtonCerrar: TButton; procedure FormShow(Sender: TObject); procedure btnShowMessageClick(Sender: TObject); procedure ButtonOpcionesClick(Sender: TObject); procedure ButtonMostrarClick(Sender: TObject); procedure ButtonHablarClick(Sender: TObject); procedure ButtonOcultarClick(Sender: TObject); procedure ButtonCerrarClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmMain: TfrmMain; Agente:String; implementation {$R *.DFM} procedure TfrmMain.FormShow(Sender: TObject); begin Agente:='Genie'; Agent.Characters.Load(Agente, Agente+'.acs'); end; procedure TfrmMain.btnShowMessageClick(Sender: TObject); begin ShowAgentMessage(Agent, 'Hola, Esta es una prueba del Microsoft Office Agent, en Delphi', btnShowMessage, True); end; procedure TfrmMain.ButtonOpcionesClick(Sender: TObject); begin Agent.ShowDefaultCharacterProperties(10,10); end; procedure TfrmMain.ButtonMostrarClick(Sender: TObject); begin with agent do If not visible then Characters.Item[Agente].Show(0); end; procedure TfrmMain.ButtonHablarClick(Sender: TObject); begin Agent.Characters.ITem[Agente].Speak ('Hola',''); end; procedure TfrmMain.ButtonOcultarClick(Sender: TObject); begin with agent do if not visible then Characters.Item[Agente].Hide(0); end; procedure TfrmMain.ButtonCerrarClick(Sender: TObject); begin Close; end; end. ----------------------------------------------------------- He estado probándo algunas cosas, pero como dice Lepe, la documentación sobre esto es escasa, por ejemplo sería interesante darle vida y mostrar las distintas secuencias de animaciones, pero ni modo no he podido. solo mostrarlo, moverlo, ocultarlo, hablar, en fin cosas básicas. Estoy seguro que algo aparecerá mas adelante. Gracias de nuevo, especialmente a Lepe y a Germán
__________________
Saludos Seara2005 |
|
#4
|
||||
|
||||
|
Para saber las animaciones, fíjate que en la página que te puse para descargar personajes (http://www.msagentring.org/chars.htm), que hay un enlace "Character Details..." que muestra todas las posibles de cada personaje.
También he encontrado este código para obtener la lista de animaciones de un caracter, aunque no lo he probado: Código:
procedure tForm1.GetAnimationList(IAChar:IAgentCtlCharacterEx;Ts:TStrings);
{ IAChar : the character like Agent.Characters.Character('Genie')
Ts : the TStrings to be filled with the list of his available animations}
const
IID_IEnumVariant: TGUID = (D1:$00020404;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));
var
pEnum:IEnumVARIANT ;
vAnimName:VARIANT ;
dwRetrieved:DWORD ;
hRes: HResult;
begin
hRes:=IAChar.AnimationNames.enum.QueryInterface(IID_IEnumVARIANT, pEnum);
while (TRUE) do begin
hRes:=pEnum.Next(1, vAnimName, @dwRetrieved);
if S_OK<>hRes then break;
// vAnimName is the animation Name
ts.add(vAnimName);
//VariantClear(&vAnimName);
end;
//pEnum.free();
end;
end;
|
|
#5
|
|||
|
|||
|
Gracias de Nuevo a Germán
Ya he buscado las animaciones de los personajes en "Character Details..." y está todo muy claro, por ejemplo para (Genie) están: Acknowledge Alert Announce Blink Confused Congratulate Congratulate_2 Decline DoMagic1 DoMagic2 DontRecognize Explain GestureDown GestureLeft GestureRight GestureUp GetAttention GetAttentionContinued GetAttentionReturn Greet Hide Idle1_1 Idle1_2 Idle1_3 Idle1_4 Idle1_5 Idle1_6 Idle2_1 Idle2_2 Idle2_3 Idle3_1 LookDown LookDownBlink LookDownReturn LookLeft LookLeftBlink LookLeftReturn LookRight LookRightBlink LookRightReturn LookUp LookUpBlink LookUpReturn MoveDown MoveLeft MoveRight MoveUp Pleased Process Read ReadContinued ReadReturn RestPose Sad Search Show StartListening StopListening Suggest Surprised Think Uncertain Wave Write WriteContinued WriteReturn -------------------------------------- Hearing_1 Hearing_2 Hearing_3 Hearing_4 Idle3_2 Processing Reading Searching Thinking Le he agregado a mi programa otro botón con el siguente código asociado: procedure TfrmMain.ButtonAnimacionClick(Sender: TObject); begin Agent.Characters.ITem[Agente].Play('Read'); end; Y ha funcionado estupendamente. Solo me queda probar si cuando se distribuye el instalador, el ayudante se agrega en el ejecutable.
__________________
Saludos Seara2005 |
|
#6
|
||||
|
||||
|
Al final vamos a hacer que baile y todo
![]() He encontrado alguna cosita más sobre el bichito, así, que aquí estoy de nuevo .Merlin, debe estar declarado como IAgentCtlCharacter o tambien usa la opción de Buscar y Reemplazar de Delphi: Busca: Merlin Sustituye por : Agent1.Characters['Merlin'] Se trata de usar "etiquetas" dentro del texto que ha de hablar. No modifica la configuración predefinida, sólo el texto que se esté enviando en el comando Speak. Con estas etiquetas puedes: - Modificar el volumen con el que habla. - Cambiar la forma de hablar: entre susurro, modo normal y monótono. - Cambiar el número de palabras por minuto que ha de hablar. - Mostrar y Ocultar el personaje sin animación. - Poder realizar un Diccionario personalizado, así cuando le envies el texto "Mb" pronuncie "Megabait" - Realizar una Pausa mientras está hablando. Pega este codigo dentro de un botón y verás el resultado. Lo he puesto en varias líneas, para que puedas ejecutarlas independientemente. (He cortado las lineas de texto porque son muy grandes)
A disfrutar con el agonía este jejejejeje. Saludos |
|
#7
|
||||
|
||||
|
Bailar... no se... pero hacerle cantar "cumpleaños feliz" ¡¡¡seguro!!!:
Merlin.Speak('\chr="monotone"\\spd=130\\pit=65\Cuuum\pit=65\plee\pit=83\aaaaaaa\pit=65\ñoooos...\spd =55\\pit=87\feeeee\pit=82\liiiiiiz.') ![]() Salu2.
__________________
Tengo las manos llenas de dedos... Tengo los dedos llenos de teclas... Tengo las teclas desordenadas... Tengo el desorden muy controlado... Tengo el control en mis manos. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|