Speech Controller Framework (0.1.2) | 2011-05-22 21:46 |
以下に 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;
- }
以上のプログラムでは、
を定義しています。
それぞれのクラスの動作を一つ一つ説明します。
ハローワールドという文法を受理するだけの単純な文法です。
GrammarCommonImpl は、文法を構築するために使える共通文法クラスの実装です。
addGrammarTransition は、音声認識による状態遷移グラフを構築する GrammarCommonImpl クラスのメソッドです。
「ハローワールド」という音声入力を受けて、始点から終点へ状態遷移する文法として構築しています。
開始とともに HelloWorldGrammar を文法として設定し、音声認識の結果を受けて音声認識エンジンの動作を終了させます。
音声認識の結果を表示します。
recognition.getText() は、音声認識した結果のテキストです。
文法で設定したテキストを取得します。
文法で設定しているテキストは、ハローワールドだけなので、ハローワールドを出力します。
Controller に対して、
を行っています。
controller.start で音声認識が開始します。本メソッドは、音声認識エンジンの動作が終了するまで待機状態になります。
そのため HelloWorldProcessor の音声認識エンジンの動作終了を受けると、待機が解除されプログラムが終了するという動きになります。
また、HelloWorldView が音声認識の結果として「ハローワールド」を出力します。
[PageInfo]
LastUpdate: 2011-05-22 21:59:25, ModifiedBy: yutaka_at_home
[Permissions]
view:all, edit:login users, delete/config:members