最近の更新 (Recent Changes)

2012-02-27
2011-05-23
2011-05-22

Neueste Datei-Release

Speech Controller Framework (0.1.2)2011-05-22 21:46

Hello, World プログラム

以下に Hello, World プログラムを示します。

「ハローワールド」という音声を認識すると「ハローワールド」と表示して終了するコンソールアプリケーションプログラムです。

  1. #include <spcf/core.hpp>
  2. #include <spcf/engine-factory/EngineFactory.hpp>
  3. #include <spcf/grammar/GrammarCommonImpl.hpp>
  4. #include <spcf/processor/DefaultProcessor.hpp>
  5. #include <spcf/view/DefaultView.hpp>
  6. #include <iostream>
  7. using namespace spcf;
  8. using namespace std;
  9. class HelloWorldGrammar : public GrammarCommonImpl {
  10. public:
  11. HelloWorldGrammar() : GrammarCommonImpl("helloWorld") {
  12. addGrammarTransition("ハローワールド", Grammar::START_STATE_NAME, Grammar::FINISH_STATE_NAME);
  13. }
  14. };
  15. class HelloWorldProcessor : public DefaultProcessor {
  16. public:
  17. void start(Context& context) {
  18. getController().getEngine()->addGrammar(GrammarPtr(new HelloWorldGrammar()));
  19. }
  20. void recognized(Context& context, Recognition& recognition) {
  21. getController().stop();
  22. }
  23. };
  24. class HelloWorldView : public DefaultView {
  25. public:
  26. void recognized(Context& context, Recognition& recognition) {
  27. cout << recognition.getText() << endl;
  28. }
  29. };
  30. int main() {
  31. Controller controller;
  32. controller.setEngine(EngineFactory::getEngine(EngineFactory::SAPI_ENGINE));
  33. controller.setProcessor(ProcessorPtr(new HelloWorldProcessor()));
  34. controller.setView(ViewPtr(new HelloWorldView()));
  35. controller.start();
  36. return 0;
  37. }

以上のプログラムでは、

  • HelloWorldGrammar という文法
  • HelloWorldProcessor というプロセッサ
  • HelloWorldView というビュー

を定義しています。

それぞれのクラスの動作を一つ一つ説明します。


HelloWorldGrammar

ハローワールドという文法を受理するだけの単純な文法です。

GrammarCommonImpl は、文法を構築するために使える共通文法クラスの実装です。

addGrammarTransition は、音声認識による状態遷移グラフを構築する GrammarCommonImpl クラスのメソッドです。

「ハローワールド」という音声入力を受けて、始点から終点へ状態遷移する文法として構築しています。


HelloWorldProcessor

開始とともに HelloWorldGrammar を文法として設定し、音声認識の結果を受けて音声認識エンジンの動作を終了させます。


HelloWorldView

音声認識の結果を表示します。

recognition.getText() は、音声認識した結果のテキストです。

文法で設定したテキストを取得します。

文法で設定しているテキストは、ハローワールドだけなので、ハローワールドを出力します。


main

Controller に対して、

  • 音声認識エンジンに Microsoft Speech API を使ったのエンジンの指定
  • HelloWorldProcessor の指定
  • StdoutView の指定

を行っています。

controller.start で音声認識が開始します。本メソッドは、音声認識エンジンの動作が終了するまで待機状態になります。

そのため HelloWorldProcessor の音声認識エンジンの動作終了を受けると、待機が解除されプログラムが終了するという動きになります。

また、HelloWorldView が音声認識の結果として「ハローワールド」を出力します。