Facebot: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
Eurico made a mouth animation, which could react to the text appearing in the chatroom. | Eurico made a mouth animation, which could react to the text appearing in the chatroom. | ||
Fembot | Fembot |
Latest revision as of 10:59, 25 April 2017
Eurico made a mouth animation, which could react to the text appearing in the chatroom. Fembot
import sys, os
while True:
i = sys.stdin.readline() if i == "": break i = i.rstrip() parts = i.split (" ", 2) msg = parts[2] #print msg os.system('espeak "{0}" -w padded.wav'.format(msg)) os.system('sox padded.wav -b 8 -e unsigned-integer -c 1 -r 4000 -t raw rawfile')
#print "complete"
framerate = 10 ; slice=4000/framerate dat = open("rawfile").read() frames = []
for i in range(0,len(dat),slice): samples = map(lambda x:ord(x)-128, dat[i:i+slice]) frames.append(max(samples))
pics = ["mouth-closed.png", "mouthopen-1.png", "mouthopen-2.png"] max_mouthOpen = len(pics)-1
step = int(max(frames)/(max_mouthOpen*2)) for i in range(len(frames)): mouth=min(int(frames[i]/step),max_mouthOpen) if i: if mouth>frames[i-1]+1: mouth=frames[i-1]+1 elif mouth < frames[i-1]-1: mouth=frames[i-1]-1 else: mouth=0 frames[i] = mouth os.system("ln -s %s frame%09d.png" % (pics[mouth],i))
os.system(("mencoder 'mf://frame0*.png' " + "-audiofile padded.wav -mf type=png " + "-mf fps=%d -oac mp3lame -ovc lavc " + "-o animation.mp4 && rm frame0*.png") % framerate)
#clean up files os.system("rm padded.wav rawfile") #open player and play animation os.system("omxplayer animation.mp4") os.system("fim mouth-closed.png")
print "end script"