「Julius を使った音声認識」の版間の差分
提供: VoIP-Info.jp
(新しいページ: '== Asterisk で音声認識 == Asterisk と Julius を連携させて、音声認識を実現する。 <br/>なお、以下の番号で山手線の駅名を認識するデモ...') |
|||
18行目: | 18行目: | ||
* OSC 2009 Okinawa で使ったデモ<br/>http://www2.iweave.jp/asterisk-julius/asterisk-julius-20091006-yui.tgz | * OSC 2009 Okinawa で使ったデモ<br/>http://www2.iweave.jp/asterisk-julius/asterisk-julius-20091006-yui.tgz | ||
</ul> | </ul> | ||
+ | * Asterisk 1.6 系のご要望はありますか? | ||
=== 環境の構築 === | === 環境の構築 === | ||
205行目: | 206行目: | ||
* ゆいレールの情報はこちらで確認下さい。<br/>右側に駅名が記載されています。<br/>http://www.yui-rail.co.jp/ | * ゆいレールの情報はこちらで確認下さい。<br/>右側に駅名が記載されています。<br/>http://www.yui-rail.co.jp/ | ||
</ul> | </ul> | ||
+ | |||
+ | === 利用方法 === | ||
+ | * Julius の設定 | ||
+ | ** plugindir<br/>プラグインが存在するディレクトリを指定する。 | ||
+ | ** input<br/>音源の指定。Asterisk 連携では udpadin を指定する。 | ||
+ | ** udpport<br/>Astersik 連携のポートを指定する(オプション) | ||
+ | ** 設定ファイルの例(該当部分のみ抜粋) | ||
+ | <blockquote><pre> | ||
+ | -plugindir /root/work/julius-4.1.2/plugin | ||
+ | -input udpadin | ||
+ | -udpport 12346 | ||
+ | </pre></blockquote> | ||
+ | * Julius の辞書 | ||
+ | ** 認識した結果(単語)が、そのまま、Asterisk に通知される。 | ||
+ | ** 例えば、数字(英数字)にすると、番号計画の中で利用しやすくなる。 | ||
+ | * 番号計画での利用方法 | ||
+ | ** 認識させる | ||
+ | *** チャネル変数 JULIUS_PORT に julius 連携用の UDP ポートを指定する。(オプション) | ||
+ | *** アプリケーション BackgroundDetect に、プロンプトを指定して、実行する。<br/>プロンプトには、認識させたい時間分の無音部分を音声後に含ませる。 | ||
+ | ** 認識結果を利用する | ||
+ | *** 単語を認識したときは、talk エクステンションに goto する。 | ||
+ | *** 認識した単語は、チャネル変数 JULIUS_RECOG にセットされる。 | ||
=== 制限 === | === 制限 === | ||
211行目: | 234行目: | ||
* 騒がしい環境で利用すると、ノイズを音声とみなし、登録した単語として誤認識します。 | * 騒がしい環境で利用すると、ノイズを音声とみなし、登録した単語として誤認識します。 | ||
− | === | + | === その他 === |
以下につきましては、iWeave 小西(直通電話番号 055-244-7663)までお問い合わせ下さい。 | 以下につきましては、iWeave 小西(直通電話番号 055-244-7663)までお問い合わせ下さい。 | ||
* 電話用音響モデル | * 電話用音響モデル |
2009年10月11日 (日) 09:14時点における版
Asterisk で音声認識
Asterisk と Julius を連携させて、音声認識を実現する。
なお、以下の番号で山手線の駅名を認識するデモを用意してあります。
055-287-7709
材料
- 必ず必要なもの
- x86 系の Linux 環境
- Asterisk 1.4 系のソース
2009/10/6 の最新版
http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.4.26.2.tar.gz - Julius ソース
http://sourceforge.jp/projects/julius/downloads/37582/julius-4.1.2.tar.gz/ - Julius ディクテーション実行キット
http://prdownloads.sourceforge.jp/julius/28977/dictation-kit-v3.2.tar.gz - Asterisk 連携用パッチと Julius プラグインのソース
http://www2.iweave.jp/asterisk-julius/asterisk-julius-20091006.tgz
- デモ環境
このデモでは、音声合成に galatea talk + unidic を利用しています。
- 山手線の駅名の認識デモ
http://www2.iweave.jp/asterisk-julius/asterisk-julius-20091006-jr.tgz - OSC 2009 Okinawa で使ったデモ
http://www2.iweave.jp/asterisk-julius/asterisk-julius-20091006-yui.tgz
- Asterisk 1.6 系のご要望はありますか?
環境の構築
- 期待するディレクトリ構成
/root |-- work | |-- dictation-kit-v3.2 | | `-- model | | `-- phone_m | `-- julius-4.1.2 | `-- plugin |-- jr `-- yui
- 事前準備
- /root/work ディレクトリの準備
- ソースの取得
# mkdir /root/work
# cd /root/work # wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.4.26.2.tar.gz # w3m http://sourceforge.jp/projects/julius/downloads/37582/julius-4.1.2.tar.gz/ # w3m http://prdownloads.sourceforge.jp/julius/28977/dictation-kit-v3.2.tar.gz # wget http://www2.iweave.jp/asterisk-julius/asterisk-julius-20091006.tgz # wget http://www2.iweave.jp/asterisk-julius/asterisk-julius-20091006-jr.tgz # wget http://www2.iweave.jp/asterisk-julius/asterisk-julius-20091006-yui.tgz
- Julius ビルド
- /root/work に julius-4.1.2.tar.gz を展開する。
- julius/Makefile.in の LDFLAGS の定義の最後に -rdynamic を追加する。
- ビルド&インストール
# cd /root/work # tar zxf julius-4.1.2.tar.gz
# cd julius-4.1.2 # sed 's/^\(LDFLAGS=.*\)/\1 -rdynamic/' julius/Makefile.in > julius/Makefile.in.temp # mv julius/Makefile.in.temp julius/Makefile.in
# ./configure # make # make install
- Julius プラグインビルド
- /root/work に asterisk-julius-20091006.tgz を展開する。
- ソースを Julius のディレクトリにコピーする。
- プラグインをビルドする。
# cd /root/work # tar zxf asterisk-julius-20091006.tgz
# cp asterisk-julius/udpadin.c julius-4.1.2/plugin
# cd julius-4.1.2/plugin # gcc -shared -o udpadin.jpi udpadin.c
- 音響モデルの用意
- /root/work に dictation-kit-v3.2.tar.gz を展開する。
ビルド作業はありません。
# cd /root/work # tar zxf dictation-kit-v3.2.tar.gz
- Asterisk 連携アプリケーションのビルド
- /root/work に Asterisk 1.4 系のソースを展開する。
- /root/work に asterisk-julius-20091006.tgz を展開する(展開していない場合)。
- app_talkdetect.c にパッチを当てる。
- Asterisk のビルドオプションを選択、ビルドして、インストールする。
- /etc/asterisk/sip.conf 等を編集して、電話機を登録する。
- すでにビルド環境がある場合は、その環境に app_talkdetect.c をコピーして、再ビルド&インストールしてください。
# cd /root/work # tar zxf asterisk-1.4.*.tar.gz
# tar zxf asterisk-julius-20091006.tgz
# cd asterisk-1.4.* # patch -p1 < ../asterisk-julius/app_talkdetect-julius.patch
# ./configure # make menuconfig # make # make install # make samples # make config
デモ環境構築
- 山手線の駅名の認識デモ
- /root に asterisk-julius-20091006-jr.tgz を展開する。
- /root/work に asterisk-julius-20091006.tgz を展開する(展開していない場合)。
- 番号計画をコピーする。
- default コンテキストの 200 番でデモが利用できる。
# cd /root # tar zxf work/asterisk-julius-20091006-jr.tgz
# cd /root/work # tar zxf asterisk-julius-20091006.tgz
# cp /root/work/asterisk-julius/extensions.ael /etc/asterisk
- OSC 2009 Okinawa で使ったデモ
- /root に asterisk-julius-20091006-yui.tgz を展開する。
- /root/work に asterisk-julius-20091006.tgz を展開する(展開していない場合)。
- 番号計画をコピーする(コピーしていない場合)。
- default コンテキストの 201 番でデモが利用できる。
# cd /root # tar zxf work/asterisk-julius-20091006-yui.tgz
# cd /root/work # tar zxf asterisk-julius-20091006.tgz
# cp /root/work/asterisk-julius/extensions.ael /etc/asterisk
デモの実行
- 山手線の駅名の認識デモ
- Asterisk を再起動する。
- Julius を起動する。
- 接続している電話機から 200 番をダイアルする。
# /etc/init.d/asterisk restartあるいは
# /etc/rc.d/init.d/asterisk restart
# cd /root # julius -C jr/jconf-jr
- OSC 2009 Okinawa で使ったデモ
ゆいレールの駅名を認識します。
- Asterisk を再起動する。
- Julius を起動する。
- 接続している電話機から 201 番をダイアルする。
- ゆいレールの情報はこちらで確認下さい。
右側に駅名が記載されています。
http://www.yui-rail.co.jp/
# /etc/init.d/asterisk restartあるいは
# /etc/rc.d/init.d/asterisk restart
# cd /root # julius -C yui/jconf-yui
利用方法
- Julius の設定
- plugindir
プラグインが存在するディレクトリを指定する。 - input
音源の指定。Asterisk 連携では udpadin を指定する。 - udpport
Astersik 連携のポートを指定する(オプション) - 設定ファイルの例(該当部分のみ抜粋)
- plugindir
-plugindir /root/work/julius-4.1.2/plugin -input udpadin -udpport 12346
- Julius の辞書
- 認識した結果(単語)が、そのまま、Asterisk に通知される。
- 例えば、数字(英数字)にすると、番号計画の中で利用しやすくなる。
- 番号計画での利用方法
- 認識させる
- チャネル変数 JULIUS_PORT に julius 連携用の UDP ポートを指定する。(オプション)
- アプリケーション BackgroundDetect に、プロンプトを指定して、実行する。
プロンプトには、認識させたい時間分の無音部分を音声後に含ませる。
- 認識結果を利用する
- 単語を認識したときは、talk エクステンションに goto する。
- 認識した単語は、チャネル変数 JULIUS_RECOG にセットされる。
- 認識させる
制限
- 音声認識は、同時に1チャネルのみ利用可能です。
複数チャネルで利用した場合は、正しい結果を得ることができません。 - 登録されていない単語に対しても、常に登録した単語として認識してしまいます。
- 騒がしい環境で利用すると、ノイズを音声とみなし、登録した単語として誤認識します。
その他
以下につきましては、iWeave 小西(直通電話番号 055-244-7663)までお問い合わせ下さい。
- 電話用音響モデル
- 複数チャネル同時認識対応
- 複数文法対応
- 環境ノイズ対応(環境ノイズを誤認識しないように)
- システム構築、技術支援など
備考
- 音声認識 Julius のページ
http://julius.sourceforge.jp/ - 音声合成 galatea talk のページ
http://www.sp.nitech.ac.jp/~demo/gtalk/demo.php
http://sourceforge.jp/projects/galateatalk/ - 形態素解析辞書 unidic のページ
http://www.tokuteicorpus.jp/dist/