* Speech Detector Component
OpenCV gpāAUSBJ痼ځA@A𒊏oA̐肨сAb̗L𐄒肷 RT Component łB

* s@
- USBJڑĂB
- component\rtc.conf ɍ킹āAҏWĂB
- component\SpeechDetectorComp.exe sĉB


* |[gdl
- SpeechDetector: T[rX|[gŊ̃p[coƂ onAnalyze()Ab̊JnƏIɂꂼ speechBegin()speechEnd()Ăяo܂B

* SDL XNvg
- OɁAUSBJڑ SpeechDetector NĂ܂B
- ȉ̃XNvgŃl[T[oւ̐ڑAsdlEngine̋NAnh̊mہAnhpă|[gԂ̐ڑs܂B

  env = rtc.env("localhost", 5005);
  sdlEngine = rtc.local_component("SDLEngine", "SDLEngine");
  env.get_handles();
  env.connect(env.handles{"SpeechDetectorConsumer0.rtc"}.ports{".SpeechDetector"}, env.handles{"SDLEngine0.rtc"}.ports{"SDLEngine0.SpeechDetector"});

- ȉ̃XNvg onAnalyze(), speechBegin(), speechEnd() ɑ΂郊Xi[o^܂B

  sdlEngine.local_ports{"speechDetector"}.addListener(new jp.ac.kyutech.SRP.Scripting.ProviderListener() {
    onAnalyze(currentFrame, mouthX, mouthY, mouthWidth, mouthHeight, of, sad, result) {
      if (mouthX > 0) {
        print("found a person");
      }
    }
    speechBegin() {
      print("speechBegin");
    }
    speechEnd() {
      print("speechEnd");
    }
  });

- ȉ̃XNvgŃnhpĊ܂B

  env.handles{"SpeechDetectorConsumer0.rtc"}.activate();
  env.handles{"SDLEngine0.rtc"}.activate();

- ̃p[co onAnalyze(), speechBegin(), speechEnd()Ă΂ print() ŕ\܂B

- ȉ̃XNvĝ悤ɔCӂ̃\bhɑΉėp̃Xi[o^邱Ƃł܂B

  // generic handler
  sdlEngine.local_ports{"speechDetector"}.addListener(new jp.ac.kyutech.SRP.Scripting.ProviderListener() {
    invoke(name, args) {
      print("Method: " + name + " invoked: " + java.util.Arrays.asList(args));
    }
  });

  // a sample output like as follows
  // Method: speechBegin invoked: []
  // Method: onAnalyze invoked: [579, -1, -1, -1, -1, 0.0, 0.0, 0.7824076]
  // Method: speechEnd invoked: []



