Julius 4.2
マクロ定義 | 関数
plugin/fvin.c

特徴量入力プラグインのひな形 [詳細]

#include <stdio.h>
#include <string.h>
#include "plugin_defs.h"

ソースコードを見る。

マクロ定義

#define PLUGIN_TITLE   "Feature vector input plugin for Julius"
 Required for a file.
#define INPUT_OPT   "myfvin"

関数

int initialize ()
 読み込み時の初期化(任意)
int get_plugin_info (int opcode, char *buf, int buflen)
 プラグイン情報取得(必須)
void fvin_get_optname (char *buf, int buflen)
 入力選択用のオプション文字列を返す(必須)
int fvin_get_configuration (int opcode)
 特徴量のパラメータを返す(必須)
boolean fvin_standby ()
 デバイスを初期化する(必須)
boolean fvin_open ()
 入力を開く(必須)
int fvin_read (float *vecbuf, int veclen)
 入力からベクトルを読み込む(必須)
boolean fvin_close ()
 入力を閉じる(必須)
boolean fvin_terminate ()
 中断要求用フック(任意)
boolean fvin_pause ()
 停止要求用フック(任意)
boolean fvin_resume ()
 認識再開要求用フック(任意)
char * fvin_input_name ()
 入力ファイル・デバイス名を返す関数(任意)

説明

特徴量入力プラグインのひな形

作者:
Akinobu Lee
日付:
Mon Aug 11 17:05:17 2008
Revision:
1.3

fvin.c で定義されています。


マクロ定義

#define PLUGIN_TITLE   "Feature vector input plugin for Julius"

Required for a file.

Optional for a file

Required:

Optional:

fvin.c51 行で定義されています。

参照元 get_plugin_info().


関数

int initialize ( )

読み込み時の初期化(任意)

起動時,Julius がこのプラグインを読み込む際に最初に呼ばれる. -1 を返すと,このプラグイン全体が読み込まれなくなる. 実行可能性のチェックに使える.

戻り値:
0 on success, -1 on failure.

fvin.c79 行で定義されています。

int get_plugin_info ( int  opcode,
char *  buf,
int  buflen 
)

プラグイン情報取得(必須)

このプラグインに関する情報を返す.与えられた opcode によって動作する.

  • 0 の場合,このプラグインファイルの名称を与えられたバッファに格納する

この関数は,Julius がこのプラグインを読み込んだ直後に呼ばれる.

引数:
opcode[in] 要求動作コード (現在 0 のみ実装)
buf[out] 値を格納するバッファ
buflen[in] buf の最大長
戻り値:
エラー時 -1, 成功時 0 を返す.エラーとして -1 を返した場合, このプラグイン全体は読み込まれない.

fvin.c121 行で定義されています。

void fvin_get_optname ( char *  buf,
int  buflen 
)

入力選択用のオプション文字列を返す(必須)

このプラグインを入力として選択する際に,"-input" オプションで指定す べき文字列を格納して返す.返す文字は,システムにすでにあるものや, 他のプラグインが使用しているものと同じでないこと. (もし同じだった場合システム側が優先される)

この関数は,起動時のオプション解析時に何度か呼ばれる.

引数:
buf[out] 値を格納して返すバッファ
buflen[in] buf の最大長

fvin.c166 行で定義されています。

int fvin_get_configuration ( int  opcode)

特徴量のパラメータを返す(必須)

この入力プラグインがJuliusに渡す特徴量に関するパラメータを返す. 与えられた以下の opcode ごとに,値を返す.

opcode = 0: ベクトルの次元数 opcode = 1: 1フレームあたりの時間幅(単位:ミリ秒) opcode = 2: パラメータの型

opcode = 2 のパラメータの型は,音響モデルの特徴量との型整合性 チェックに使われる.値は,HTK の特徴量ファイルのヘッダ形式で エンコードされた値を返す.型チェックを行わない場合は, 0xffff を返すこと.

引数:
opcode[in] 要求動作コード (現在 0 のみ実装)
戻り値:
opcode ごとに要求された値を返す.

fvin.c213 行で定義されています。

boolean fvin_standby ( )

デバイスを初期化する(必須)

この関数は起動時に一回だけ呼ばれる.ここでは入力ファイルの準備や ソケットの用意といった,入力のための準備を行うのに使う.

FALSE を返した場合,Julius は終了する.

JuliusLib: この関数は j_adin_init() で呼ばれる.

戻り値:
成功時 TRUE,失敗時 FALSE を返す.

fvin.c255 行で定義されています。

boolean fvin_open ( )

入力を開く(必須)

入力を新規に開く.ファイルのオープン,ネットワーククライアントからの 接続などはここで行う.

FALSE を返したとき,Julius は認識ループを抜ける.

JuliusLib: この関数は j_open_stream() 内で呼ばれる.

戻り値:
成功時 TRUE,失敗時 FALSE を返す.

fvin.c290 行で定義されています。

int fvin_read ( float *  vecbuf,
int  veclen 
)

入力からベクトルを読み込む(必須)

この関数は入力からベクトルを1つだけ読み込む.この関数は フレームごとに呼ばれ,読み込まれたベクトルはこのあとすぐに認識処理され, また次のフレームのデータを読むためにこの関数が呼ばれる.

入力が終端まで達したとき,ADIN_EOF を返す.このとき,Julius は現在 の認識処理を終了させ,入力を閉じる.

ADIN_ERROR はこの関数内で深刻なエラーが生じた場合に返す.これが返さ れた場合,Julius はその場で異常終了する.

ADIN_SEGMENT を返すことで,Julius に現在の認識を現時点で区切ること を要求することができる.現在の認識処理はこの時点でいったん区切られ, そこまでの認識結果が確定・出力されたあと,次の認識処理が始まりこの 関数が呼ばれる.ADIN_SEGMENT は ADIN_EOF と動作が似ているが, ADIN_EOF が adin_close(), adin_open() を呼んで入力を終了させ るのに対して,ADIN_SEGMENT はこれらを呼ばずに入力を続行する.

引数:
vecbuf[out] 得られたベクトルを格納するバッファ
veclen[in] ベクトル長
戻り値:
成功時 0 あるいは end of stream 時に ADIN_EOF, Julius に区 切り要求を出すときには ADIN_SEGMENT, エラー時はADIN_ERROR を返す.

fvin.c347 行で定義されています。

boolean fvin_close ( )

入力を閉じる(必須)

現在の入力を閉じる.この関数は,入力が終端(EOF)に達したとき(すな わち fvin_read() が ADIN_EOF を返したとき)に呼ばれる.通常,ここでは ファイルを閉じる,ネットワーク接続を切断するなどの処理を行う.

正常終了としてTRUEを返したとき,Julius は adin_open() に戻って 他のストリームを開こうとする. FALSE を返したときは,Julius は 認識ループを抜ける.

JuliusLib: この関数は j_recognize_stream() の最後で呼ばれる.

戻り値:
成功時 TRUE,失敗時 FALSE を返す.

fvin.c391 行で定義されています。

boolean fvin_terminate ( )

中断要求用フック(任意)

この関数を定義すると,Julius は中断要求を受け取った際にこの関数を呼び出す. これを使って,Julius の中断・再開と同期した入力同期処理を実装することが できる.(例:入力送信元に対して送信中断要求を出すなど)

中断要求は,Julius がアプリケーションやクライアントより受け取る 認識中断の要求である.具体的には,Julius がモジュールモードで動作して いる時に TERMINATE コマンドをクライアントから受け取ったときや, JuliusLibを組み込んだアプリケーションが j_request_terminate() を 呼んだときに発生する.

中断要求を受け取ると,Julius は現在の認識処理を中断する. 認識途中であった場合,その入力を破棄して即時中断する. 処理の再開は,RESUME コマンドか j_request_resume() の呼び出しで行われる.

この関数は中断要求を Julius が受け取った時点で呼ばれる. 実際に処理が中断した後で呼ばれるのではないことに注意されたい.

戻り値:
成功時 TRUE, エラー時 FALSE を返す.

fvin.c444 行で定義されています。

boolean fvin_pause ( )

停止要求用フック(任意)

この関数を定義すると,Julius は停止要求を受け取った際にこの関数を呼び出す. これを使って,Julius の中断・再開と同期した入力同期処理を実装することが できる.(例:入力送信元に対して送信中断要求を出すなど)

停止要求は,Julius がアプリケーションやクライアントより受け取る, 認識の一時停止の要求である.具体的には,Julius がモジュールモードで動作して いる時に PAUSE コマンドをクライアントから受け取ったときや, JuliusLibを組み込んだアプリケーションが j_request_pause() を 呼んだときに発生する.

停止要求を受け取ると,Julius は現在の認識処理を中断する. 認識途中であった場合,その認識が終わるまで待ってから中断する. 処理の再開は,RESUME コマンドか j_request_resume() の呼び出しで行われる.

中断要求 (fvin_terminate) との違いは,認識途中に要求を受けたときの動作が 異なる.中断要求では強制中断するが,停止要求ではその認識が終わるまで 待ってから停止する.

この関数は停止要求を Julius が受け取った時点で呼ばれる. 実際に処理が停止した後で呼ばれるのではないことに注意されたい.

戻り値:
成功時 TRUE, エラー時 FALSE を返す.

fvin.c500 行で定義されています。

boolean fvin_resume ( )

認識再開要求用フック(任意)

この関数を定義すると,Julius は停止状態からの認識再開要求の際に この関数を呼び出す.

認識再開要求は,Julius がモジュールモードで動作して RESUME コマンドを クライアントから受け取ったときや,JuliusLibを組み込んだアプリケーション が j_request_resume() を呼んだときに発生する.この再開要求が発生 すると,Julius は停止していた認識を再開する.

注意:この関数は,実際に停止したときに呼ばれるのではなく,Julius が 要求を受け取った時点で,そのたびに呼ばれる.複数回呼ばれることや, すでに動作中である場合にさらにこのコマンドを受け取ったときにも呼ば れることがあることに注意されたい.

戻り値:
成功時 TRUE, エラー時 FALSE を返す.

fvin.c547 行で定義されています。

char* fvin_input_name ( )

入力ファイル・デバイス名を返す関数(任意)

戻り値:
入力ファイルあるいはデバイス名の文字列へのポインタ

fvin.c569 行で定義されています。