Il a été créé parce que le mécanisme qui a décidé le prix Pepper lors du hackathon "Voyage d'affaires! Tsukurimi Lab in DMM.make AKIBA with Pepper" organisé par M. Fun Kayak organisé au DMM.make AKIBA le 3 octobre dernier était intéressant. J'ai demandé "Maître Kawada, qui ne sait pas si je faisais Pepper" et il m'a donné un professeur, donc je vais le partager.
** Au fait, je n'ai pas reçu le prix Pepper pour le moment, mais j'ai gagné! Hourra. ** **
J'écris Qiita pour la première fois, donc je serais heureux si vous pouviez me dire s'il y avait quelque chose comme "C'est plus facile de voir si c'est le cas". Cette fois, je n'ai touché à aucune ligne ni animation.
Pepper mesure le volume du son lorsque d'autres interprètes qui entendent la présentation du présentateur applaudissent, et c'est une application qui "sélectionne l'équipe avec les applaudissements les plus forts".
Pour le moment, j'en ai fait une variable globale.
init.py
global members
global scores
members = ["Oreiller", "Ma vie poivrée Izu Smile", "bouchon"]
scores = [0, 0, 0]
C'est comme mesurer le volume d'un son à intervalles réguliers et stocker la valeur la plus forte dans les scores des variables globales.
max_SoundCk.py
def onLoad(self):
self.timer = None
self.limit = 0
self.audio = ALProxy("ALAudioDevice")
def onUnload(self):
self.cancelTimer()
self.audio.disableEnergyComputation()
def cancelTimer(self):
if self.timer:
self.timer.stop()
self.timer = None
def onTimer(self):
v = self.audio.getFrontMicEnergy()
if self.maxV < v:
self.maxV = v
self.limit += int(self.getParameter("Check Interval (s)") * 1000 * 1000)
if self.limit >= int(self.getParameter("Limit Measure (s)") * 1000 * 1000):
self.onInput_onStop()
def startTimer(self):
import qi
self.timer = qi.PeriodicTask()
self.timer.setCallback(self.onTimer)
self.timer.setUsPeriod(int(self.getParameter("Check Interval (s)") * 1000 * 1000))
self.timer.start(True)
def onInput_onStart(self):
global members
global current_member
self.logger.info("Surveillance de l'équipe de démarrage:%s" % members[current_member])
self.audio.enableEnergyComputation()
self.maxV = 0
self.cancelTimer()
self.startTimer()
def onInput_onStop(self):
global scores
global current_member
if self.timer and self.timer.isRunning():
self.logger.info(self.maxV)
self.onStopped()
scores[current_member] = self.maxV
self.onUnload()
Choisissez simplement la plus grande valeur des scores et annoncez-la.
Say_Text.py
def onInput_onStart(self):
global members
global current_member
global scores
self.logger.info(members)
m = 0
mv = 0
l = len(members)
for i in range(0,l) :
if scores[i] > mv:
self.logger.info("%d : %d" % (int(i), int(scores[i])))
m = i
mv = scores[i]
p = members[m]
self.bIsRunning = True
try:
sentence = "\RSPD="+ str( self.getParameter("Speed (%)") ) + "\ "
sentence += "\VCT="+ str( self.getParameter("Voice shaping (%)") ) + "\ "
sentence += str(p)
sentence += "\RST\ "
id = self.tts.post.say(str(sentence))
self.ids.append(id)
self.tts.wait(id, 0)
finally:
try:
self.ids.remove(id)
except:
pass
if( self.ids == [] ):
self.onStopped() # activate output of the box
self.bIsRunning = False
Cette fois, nous avons reçu le code source de Master Kawada ** et avons téléchargé une version peu organisée dans [Robot Library] de Robot Start (https://pepper.robo-lib.com/repositories/summary/41). Alors s'il vous plaît jetez un oeil. https://pepper.robo-lib.com/repositories/summary/41
Recommended Posts