「Julius を使った音声認識」の版間の差分
提供: VoIP-Info.jp
(Asterisk 1.6.1 に対応したので、更新) |
|||
(2人の利用者による、間の2版が非表示) | |||
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版 | ||
+ | :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
- 上記のデモ環境の音声ファイルと交換して使用できます。