[PYTHON] Pepper entscheidet über den Gewinner, indem er die Größe des Applaus des Publikums misst

Wie haben Sie diesen Artikel geschrieben?

Es wurde geschaffen, weil der Mechanismus, der den Pepper-Preis beim Hackathon "Geschäftsreise! Tsukurimi Lab in DMM.make AKIBA with Pepper" entschied, der am 3. Oktober dieses Jahres von Mr. Fun Kayak bei DMM.make AKIBA veranstaltet wurde, interessant war. Ich fragte "Meister Kawada, der nicht weiß, ob ich Pepper mache" und er gab mir einen Professor, damit ich ihn teilen kann.

** Übrigens habe ich den Pfefferpreis zu diesem Zeitpunkt nicht bekommen, aber ich habe gewonnen! Hurra. ** ** **

Annahme

Ich schreibe zum ersten Mal Qiita, daher würde ich mich freuen, wenn Sie mir sagen könnten, ob es so etwas wie "Es ist einfacher zu sehen, ob Sie dies tun" gibt. Dieses Mal habe ich keine Linien und Animationen berührt.

Fazit

Pepper misst die Lautstärke des Klangs, wenn andere Darsteller, die die Präsentation des Moderators hören, applaudieren, und es ist eine Anwendung, die "das Team mit dem lautesten Applaus auswählt".

API verwendet

ALAudioDevice

Methode verwendet

getFrontMicEnergy()

Vorbereitung

  1. Name des Zielteams
  2. Punktzahl für jedes Team

Vorerst habe ich es zu einer globalen Variablen gemacht.

init.py


    global members
    global scores

    members = ["Kissen", "Mein Pfefferleben Izu Smile", "Stopper"]
    scores = [0, 0, 0]

Wie es funktioniert

Es ist so, als würde man die Lautstärke eines Klangs in regelmäßigen Abständen messen und den lautesten Wert in den globalen Variablenwerten speichern.

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("Überwachung des Startteams:%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()

Ergebnisansage

Wählen Sie einfach den größten Wert in der Punktzahl aus und geben Sie ihn bekannt.

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

Stichprobe

Dieses Mal haben wir den Quellcode von Master Kawada ** erhalten und eine kleine organisierte Version in Robot Starts Robot Library hochgeladen. Also bitte mal reinschauen. https://pepper.robo-lib.com/repositories/summary/41

Recommended Posts

Pepper entscheidet über den Gewinner, indem er die Größe des Applaus des Publikums misst
Erhöhen Sie die Benutzeroberfläche von MyPaint
Über die Größe der Punkte in Matplotlib
Lassen Sie uns den Gewinner des Bingo bestimmen
Richten Sie die Größe der Farbleiste an der Matplotlib aus
Pandas des Anfängers, vom Anfänger, für den Anfänger [Python]
Tipps: Vergleich der Größe von drei Werten