WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   lip-synching + Progress Bar (https://forum.worldviz.com/showthread.php?t=1353)

djdesmangles 02-18-2008 05:38 AM

lip-synching + Progress Bar
 
Hello Wizards !!

The "viz.ACTION_END_EVENT" is working fine. Now I would like to optimize one of my functions.

1) My Avatar is lip-synched with a .wav file.
2) I got a progress bar displaying to the user the position in the .wav file while the Avatar is speaking.

So, to do that, I've loaded the .wav for the Avatar with the vizact.speak('intro.wav'). But, for the Progress Bar, I must loaded the file again as a VizAudio object to access the getTime() and the getDuration() functions. It's working, but is there a better way to do that ?

viz.FOREVER,
D.

djdesmangles 02-19-2008 01:30 PM

You're there ??
 
Hello ?

I guess that you've forgot about me...

D.

farshizzo 02-19-2008 02:26 PM

Don't worry, we haven't forgot about you. Yesterday was a holiday.

Here is sample code that will update a progress bar while a speech action is running. It works by starting a timer when the speech begins. The timer uses the action instance to determine the current time of the speech.
Code:

import viz
viz.go()

#Create avatar
avatar = viz.add('female.cfg',pos=(0,0,1),euler=(180,0,0))

#Create speech action
speak = vizact.speak('speech.wav',sync=True)

#Create progress bar
progress = viz.addProgressBar('',pos=(0.5,0.1,0))

#Function that will update progress of speech while it is running
def updateSpeechProgress(progress,instance):
        progress.set( instance.elapsed / instance.length )

#Start update timer when speech action begins
def onActionBegin(e):
        if e.object is avatar and e.action is speak:
                avatar.speechProgress = vizact.ontimer(0,updateSpeechProgress,progress,e.instance)
viz.callback(viz.ACTION_BEGIN_EVENT,onActionBegin)

#Stop update timer when speech action ends
def onActionEnd(e):
        if e.object is avatar and e.action is speak:
                vizact.removeEvent(avatar.speechProgress)
viz.callback(viz.ACTION_END_EVENT,onActionEnd)

#Start speech when spacebar pressed
vizact.onkeydown(' ',avatar.runAction,speak)


djdesmangles 02-21-2008 12:37 PM

Coooool !!!
 
Yeah Man !!! :cool:

I'll try it !!! Thanks !!

viz.FOREVER !!
D.


All times are GMT -7. The time now is 04:22 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC