以下に Hello, World プログラムを示します。
「ハローワールド」という音声を認識すると終了するコンソールアプリケーションプログラムです。
- #include <spcf/core.hpp>
- #include <spcf/engine-factory/EngineFactory.hpp>
- #include <spcf/grammar/GrammarCommonImpl.hpp>
- #include <spcf/processor/DefaultProcessor.hpp>
- #include <spcf/view/DefaultView.hpp>
- #include <iostream>
- using namespace spcf;
- using namespace std;
- class HelloWorldGrammar : public GrammarCommonImpl {
- public:
- HelloWorldGrammar() : GrammarCommonImpl("helloWorld") {
- addGrammarTransition("ハローワールド", Grammar::START_STATE_NAME, Grammar::FINISH_STATE_NAME);
- }
- };
- class HelloWorldProcessor : public DefaultProcessor {
- public:
- void start(Context& context) {
- getController().getEngine()->addGrammar(GrammarPtr(new HelloWorldGrammar()));
- }
- void recognized(Context& context, Recognition& recognition) {
- getController().stop();
- }
- };
- class HelloWorldView : public DefaultView {
- public:
- void recognized(Context& context, Recognition& recognition) {
- cout << recognition.getText() << endl;
- }
- };
- int main() {
- Controller controller;
- controller.setEngine(EngineFactory::getEngine(EngineFactory::SAPI_ENGINE));
- controller.setProcessor(ProcessorPtr(new HelloWorldProcessor()));
- controller.setView(ViewPtr(new HelloWorldView()));
- controller.start();
- return 0;
- }
HelloWorldGrammar という文法と、HelloWorldProcessor というプロセッサを定義しています。
ハローワールドという文法を受理するだけの単純な文法です。
GrammarCommonImpl は、文法を構築するために使える共通文法クラスの実装です。
addGrammarTransition は、音声認識による状態遷移グラフを構築する GrammarCommonImpl クラスのメソッドです。
「ハローワールド」という音声入力を受けて、始点から終点へ状態遷移する文法として構築しています。
開始とともに HelloWorldGrammar を文法として設定し、音声認識の結果を受けて音声認識エンジンの動作を終了させます。
Controller に対して、
を行っています。
controller.start で音声認識が開始します。本メソッドは、音声認識エンジンの動作が終了するまで待機状態になります。
そのため HelloWorldProcessor の音声認識エンジンの動作終了を受けると、待機が解除されプログラムが終了するという動きになります。
StdoutView は、標準出力にイベントの受理状況を報告するデバッグ用の汎用ビュー部品です。