「Julius を使った音声認識」の版間の差分
ナビゲーションに移動
検索に移動
Asterisk 1.6.1 に対応したので、更新 |
|||
3行目: | 3行目: | ||
<br/>なお、以下の番号で山手線の駅名を認識するデモを用意してあります。 | <br/>なお、以下の番号で山手線の駅名を認識するデモを用意してあります。 | ||
<pre>055-287-7709</pre> | <pre>055-287-7709</pre> | ||
=== 更新履歴 === | |||
* Asterisk 1.6.1 系対応。(2009/11/6) | |||
=== 材料 === | === 材料 === | ||
8行目: | 11行目: | ||
<ul> | <ul> | ||
* x86 系の Linux 環境 | * x86 系の Linux 環境 | ||
* Asterisk 1.4 系のソース | * Asterisk 1.4 / 1.6.1 系のソース | ||
* Julius ソース | : 2009/11/6 の最新版: | ||
* Julius ディクテーション実行キット | : http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.4.26.3.tar.gz | ||
* Asterisk 連携用パッチと Julius プラグインのソース | : http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.6.1.9.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-20091106.tgz | |||
</ul> | </ul> | ||
* デモ環境 | * デモ環境 | ||
:このデモでは、音声合成に galatea talk + unidic を利用しています。 | |||
<ul> | <ul> | ||
* 山手線の駅名の認識デモ | * 山手線の駅名の認識デモ | ||
* OSC 2009 Okinawa で使ったデモ | : 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 | |||
</ul> | </ul> | ||
=== 環境の構築 === | === 環境の構築 === | ||
43行目: | 54行目: | ||
<blockquote><pre> | <blockquote><pre> | ||
# cd /root/work | # cd /root/work | ||
# wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.4.26. | # wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.4.26.3.tar.gz | ||
# w3m http://sourceforge.jp/projects/julius/downloads/37582/julius-4.1.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 | # w3m http://prdownloads.sourceforge.jp/julius/28977/dictation-kit-v3.2.tar.gz | ||
# wget http://www2.iweave.jp/asterisk-julius/asterisk-julius- | # wget http://www2.iweave.jp/asterisk-julius/asterisk-julius-20091106.tgz | ||
# wget http://www2.iweave.jp/asterisk-julius/asterisk-julius-20091006-jr.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 | # wget http://www2.iweave.jp/asterisk-julius/asterisk-julius-20091006-yui.tgz | ||
71行目: | 82行目: | ||
# make install | # make install | ||
</pre></blockquote> | </pre></blockquote> | ||
* 参考ページ | * 参考ページ | ||
: http://julius.sourceforge.jp/juliusbook/ja/desc_install.html#id2486532 | |||
</ul> | </ul> | ||
* Julius プラグインビルド | * Julius プラグインビルド | ||
<ul> | <ul> | ||
* /root/work に asterisk-julius- | * /root/work に asterisk-julius-20091106.tgz を展開する。 | ||
<blockquote><pre> | <blockquote><pre> | ||
# cd /root/work | # cd /root/work | ||
# tar zxf asterisk-julius- | # tar zxf asterisk-julius-20091106.tgz | ||
</pre></blockquote> | </pre></blockquote> | ||
* ソースを Julius のディレクトリにコピーする。 | * ソースを Julius のディレクトリにコピーする。 | ||
94行目: | 106行目: | ||
* 音響モデルの用意 | * 音響モデルの用意 | ||
<ul> | <ul> | ||
* /root/work に dictation-kit-v3.2.tar.gz を展開する。 | * /root/work に dictation-kit-v3.2.tar.gz を展開する。 | ||
:ビルド作業はありません。 | |||
<blockquote><pre> | <blockquote><pre> | ||
# cd /root/work | # cd /root/work | ||
101行目: | 114行目: | ||
</ul> | </ul> | ||
* Asterisk | * Asterisk 連携アプリケーションのビルド(Asterisk 1.4 系の場合) | ||
<ul> | <ul> | ||
* /root/work に Asterisk 1.4 系のソースを展開する。 | * /root/work に Asterisk 1.4 系のソースを展開する。 | ||
108行目: | 121行目: | ||
# tar zxf asterisk-1.4.*.tar.gz | # tar zxf asterisk-1.4.*.tar.gz | ||
</pre></blockquote> | </pre></blockquote> | ||
* /root/work に asterisk-julius- | * /root/work に asterisk-julius-20091106.tgz を展開する(展開していない場合)。 | ||
<blockquote><pre> | <blockquote><pre> | ||
# tar zxf asterisk-julius- | # tar zxf asterisk-julius-20091106.tgz | ||
</pre></blockquote> | </pre></blockquote> | ||
* app_talkdetect.c にパッチを当てる。 | * app_talkdetect.c にパッチを当てる。 | ||
128行目: | 141行目: | ||
* /etc/asterisk/sip.conf 等を編集して、電話機を登録する。 | * /etc/asterisk/sip.conf 等を編集して、電話機を登録する。 | ||
* すでにビルド環境がある場合は、その環境に app_talkdetect.c をコピーして、再ビルド&インストールしてください。 | * すでにビルド環境がある場合は、その環境に app_talkdetect.c をコピーして、再ビルド&インストールしてください。 | ||
</ul> | |||
* Asterisk 連携アプリケーションのビルド(Asterisk 1.6.1 系の場合) | |||
<ul> | |||
* Asterisk 1.4 系の手順に準じる。 | |||
* ただし、パッチファイルとして app_talkdetect-julius.patch-1.6 を利用する。 | |||
</ul> | </ul> | ||
138行目: | 157行目: | ||
# tar zxf work/asterisk-julius-20091006-jr.tgz | # tar zxf work/asterisk-julius-20091006-jr.tgz | ||
</pre></blockquote> | </pre></blockquote> | ||
* /root/work に asterisk-julius- | * /root/work に asterisk-julius-20091106.tgz を展開する(展開していない場合)。 | ||
<blockquote><pre> | <blockquote><pre> | ||
# cd /root/work | # cd /root/work | ||
# tar zxf asterisk-julius- | # tar zxf asterisk-julius-20091106.tgz | ||
</pre></blockquote> | </pre></blockquote> | ||
* | * 番号計画をコピーする(Asterisk 1.4 系の場合)。 | ||
<blockquote><pre> | <blockquote><pre> | ||
# cp /root/work/asterisk-julius/extensions.ael /etc/asterisk | # cp /root/work/asterisk-julius/extensions.ael /etc/asterisk | ||
</pre></blockquote> | |||
* 番号計画をコピーする(Asterisk 1.6.1 系の場合)。 | |||
<blockquote><pre> | |||
# cp /root/work/asterisk-julius/extensions.ael-1.6 /etc/asterisk/extensions.ael | |||
</pre></blockquote> | </pre></blockquote> | ||
* default コンテキストの 200 番でデモが利用できる。 | * default コンテキストの 200 番でデモが利用できる。 | ||
157行目: | 180行目: | ||
# tar zxf work/asterisk-julius-20091006-yui.tgz | # tar zxf work/asterisk-julius-20091006-yui.tgz | ||
</pre></blockquote> | </pre></blockquote> | ||
* /root/work に asterisk-julius- | * /root/work に asterisk-julius-20091106.tgz を展開する(展開していない場合)。 | ||
<blockquote><pre> | <blockquote><pre> | ||
# cd /root/work | # cd /root/work | ||
# tar zxf asterisk-julius- | # tar zxf asterisk-julius-20091106.tgz | ||
</pre></blockquote> | </pre></blockquote> | ||
* | * 番号計画をコピーする(コピーしていない場合、Asterisk 1.4 系の場合)。 | ||
<blockquote><pre> | <blockquote><pre> | ||
# cp /root/work/asterisk-julius/extensions.ael /etc/asterisk | # cp /root/work/asterisk-julius/extensions.ael /etc/asterisk | ||
</pre></blockquote> | |||
<blockquote><pre> | |||
* 番号計画をコピーする(コピーしていない場合、Asterisk 1.6.1 系の場合)。 | |||
# cp /root/work/asterisk-julius/extensions.ael-1.6 /etc/asterisk/extensions.ael | |||
</pre></blockquote> | </pre></blockquote> | ||
* default コンテキストの 201 番でデモが利用できる。 | * default コンテキストの 201 番でデモが利用できる。 | ||
188行目: | 215行目: | ||
</ul> | </ul> | ||
* OSC 2009 Okinawa で使ったデモ | * OSC 2009 Okinawa で使ったデモ | ||
: ゆいレールの駅名を認識します。 | |||
<ul> | <ul> | ||
* Asterisk を再起動する。 | * Asterisk を再起動する。 | ||
204行目: | 232行目: | ||
</pre></blockquote> | </pre></blockquote> | ||
* 接続している電話機から 201 番をダイアルする。 | * 接続している電話機から 201 番をダイアルする。 | ||
* ゆいレールの情報はこちらで確認下さい。 | * ゆいレールの情報はこちらで確認下さい。 | ||
: 右側に駅名が記載されています。 | |||
: http://www.yui-rail.co.jp/ | |||
</ul> | </ul> | ||
=== 利用方法 === | === 利用方法 === | ||
* Julius の設定 | * Julius の設定 | ||
<ul> | |||
* plugindir | |||
:プラグインが存在するディレクトリを指定する。 | |||
* input | |||
: 音源の指定。Asterisk 連携では udpadin を指定する。 | |||
* udpport | |||
: Astersik 連携のポートを指定する(オプション) | |||
* 設定ファイルの例(該当部分のみ抜粋) | |||
<blockquote><pre> | <blockquote><pre> | ||
-plugindir /root/work/julius-4.1.2/plugin | -plugindir /root/work/julius-4.1.2/plugin | ||
218行目: | 252行目: | ||
-udpport 12346 | -udpport 12346 | ||
</pre></blockquote> | </pre></blockquote> | ||
</ul> | |||
* Julius の辞書 | * Julius の辞書 | ||
<ul> | |||
* 認識した結果(単語)が、そのまま、Asterisk に通知される。 | |||
* 例えば、数字(英数字)にすると、番号計画の中で利用しやすくなる。 | |||
</ul> | |||
* 番号計画での利用方法 | * 番号計画での利用方法 | ||
<ul> | |||
* 認識させる | |||
<ul> | |||
* チャネル変数 JULIUS_PORT に julius 連携用の UDP ポートを指定する。(オプション) | |||
* アプリケーション BackgroundDetect に、プロンプトを指定して、実行する。 | |||
: プロンプトには、認識させたい時間分の無音部分を音声後に含ませる。 | |||
</ul> | |||
* 認識結果を利用する | |||
<ul> | |||
* 単語を認識したときは、talk エクステンションに goto する。 | |||
* 認識した単語は、チャネル変数 JULIUS_RECOG にセットされる。 | |||
</ul> | |||
</ul> | |||
=== 制限 === | === 制限 === | ||
* 音声認識は、同時に1チャネルのみ利用可能です。 | * 音声認識は、同時に1チャネルのみ利用可能です。 | ||
: 複数チャネルで利用した場合は、正しい結果を得ることができません。 | |||
* 登録されていない単語に対しても、常に登録した単語として認識してしまいます。 | * 登録されていない単語に対しても、常に登録した単語として認識してしまいます。 | ||
* 騒がしい環境で利用すると、ノイズを音声とみなし、登録した単語として誤認識します。 | * 騒がしい環境で利用すると、ノイズを音声とみなし、登録した単語として誤認識します。 | ||
243行目: | 288行目: | ||
=== 備考 === | === 備考 === | ||
* 音声認識 Julius のページ | * 音声認識 Julius のページ | ||
* 音声合成 galatea talk のページ | : http://julius.sourceforge.jp/ | ||
* 形態素解析辞書 unidic のページ | * 音声合成 galatea talk のページ | ||
: http://www.sp.nitech.ac.jp/~demo/gtalk/demo.php | |||
: http://sourceforge.jp/projects/galateatalk/ | |||
* 形態素解析辞書 unidic のページ | |||
: http://www.tokuteicorpus.jp/dist/ | |||
=== 補足ファイル === | === 補足ファイル === | ||
* 山手線音声ファイル AqesTalk版 | * 山手線音声ファイル AqesTalk版 | ||
:http://ftp.voip-info.jp/asterisk/sounds/misc/jr-aqt.zip | :http://ftp.voip-info.jp/asterisk/sounds/misc/jr-aqt.zip | ||
:上記のデモ環境の音声ファイルと交換して使用できます。 | :上記のデモ環境の音声ファイルと交換して使用できます。 |
2009年11月6日 (金) 15:30時点における最新版
Asterisk で音声認識
Asterisk と Julius を連携させて、音声認識を実現する。
なお、以下の番号で山手線の駅名を認識するデモを用意してあります。
055-287-7709
更新履歴
- Asterisk 1.6.1 系対応。(2009/11/6)
材料
- 必ず必要なもの
- x86 系の Linux 環境
- Asterisk 1.4 / 1.6.1 系のソース
- 2009/11/6 の最新版:
- http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.4.26.3.tar.gz
- http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.6.1.9.tar.gz
- Julius ソース
- Julius ディクテーション実行キット
- Asterisk 連携用パッチと Julius プラグインのソース
- デモ環境
- このデモでは、音声合成に galatea talk + unidic を利用しています。
- 山手線の駅名の認識デモ
- OSC 2009 Okinawa で使ったデモ
環境の構築
- 期待するディレクトリ構成
/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.3.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-20091106.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-20091106.tgz を展開する。
- ソースを Julius のディレクトリにコピーする。
- プラグインをビルドする。
# cd /root/work # tar zxf asterisk-julius-20091106.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 連携アプリケーションのビルド(Asterisk 1.4 系の場合)
- /root/work に Asterisk 1.4 系のソースを展開する。
- /root/work に asterisk-julius-20091106.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-20091106.tgz
# cd asterisk-1.4.* # patch -p1 < ../asterisk-julius/app_talkdetect-julius.patch
# ./configure # make menuconfig # make # make install # make samples # make config
- Asterisk 連携アプリケーションのビルド(Asterisk 1.6.1 系の場合)
- Asterisk 1.4 系の手順に準じる。
- ただし、パッチファイルとして app_talkdetect-julius.patch-1.6 を利用する。
デモ環境構築
- 山手線の駅名の認識デモ
- /root に asterisk-julius-20091006-jr.tgz を展開する。
- /root/work に asterisk-julius-20091106.tgz を展開する(展開していない場合)。
- 番号計画をコピーする(Asterisk 1.4 系の場合)。
- 番号計画をコピーする(Asterisk 1.6.1 系の場合)。
- default コンテキストの 200 番でデモが利用できる。
# cd /root # tar zxf work/asterisk-julius-20091006-jr.tgz
# cd /root/work # tar zxf asterisk-julius-20091106.tgz
# cp /root/work/asterisk-julius/extensions.ael /etc/asterisk
# cp /root/work/asterisk-julius/extensions.ael-1.6 /etc/asterisk/extensions.ael
- OSC 2009 Okinawa で使ったデモ
- /root に asterisk-julius-20091006-yui.tgz を展開する。
- /root/work に asterisk-julius-20091106.tgz を展開する(展開していない場合)。
- 番号計画をコピーする(コピーしていない場合、Asterisk 1.4 系の場合)。
- default コンテキストの 201 番でデモが利用できる。
# cd /root # tar zxf work/asterisk-julius-20091006-yui.tgz
# cd /root/work # tar zxf asterisk-julius-20091106.tgz
# cp /root/work/asterisk-julius/extensions.ael /etc/asterisk
* 番号計画をコピーする(コピーしていない場合、Asterisk 1.6.1 系の場合)。 # cp /root/work/asterisk-julius/extensions.ael-1.6 /etc/asterisk/extensions.ael
デモの実行
- 山手線の駅名の認識デモ
- 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 /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 のページ
- 音声合成 galatea talk のページ
- 形態素解析辞書 unidic のページ
補足ファイル
- 山手線音声ファイル AqesTalk版
- http://ftp.voip-info.jp/asterisk/sounds/misc/jr-aqt.zip
- 上記のデモ環境の音声ファイルと交換して使用できます。