17
回編集
差分
新しいページ: '== Asterisk で音声認識 == Asterisk と Julius を連携させて、音声認識を実現する。 <br/>なお、以下の番号で山手線の駅名を認識するデモ...'
== Asterisk で音声認識 ==
Asterisk と Julius を連携させて、音声認識を実現する。
<br/>なお、以下の番号で山手線の駅名を認識するデモを用意してあります。
<pre>055-287-7709</pre>
=== 材料 ===
* 必ず必要なもの
<ul>
* x86 系の Linux 環境
* Asterisk 1.4 系のソース<br/>2009/10/6 の最新版<br/>http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.4.26.2.tar.gz
* Julius ソース<br/>http://sourceforge.jp/projects/julius/downloads/37582/julius-4.1.2.tar.gz/
* Julius ディクテーション実行キット<br/>http://prdownloads.sourceforge.jp/julius/28977/dictation-kit-v3.2.tar.gz
* Asterisk 連携用パッチと Julius プラグインのソース<br/>http://www2.iweave.jp/asterisk-julius/asterisk-julius-20091006.tgz
</ul>
* デモ環境<br/>このデモでは、音声合成に galatea talk + unidic を利用しています。
<ul>
* 山手線の駅名の認識デモ<br/>http://www2.iweave.jp/asterisk-julius/asterisk-julius-20091006-jr.tgz
* OSC 2009 Okinawa で使ったデモ<br/>http://www2.iweave.jp/asterisk-julius/asterisk-julius-20091006-yui.tgz
</ul>
=== 環境の構築 ===
* 期待するディレクトリ構成
<blockquote><pre>
/root
|-- work
| |-- dictation-kit-v3.2
| | `-- model
| | `-- phone_m
| `-- julius-4.1.2
| `-- plugin
|-- jr
`-- yui
</pre></blockquote>
* 事前準備
<ul>
* /root/work ディレクトリの準備
<blockquote><pre>
# mkdir /root/work
</pre></blockquote>
* ソースの取得
<blockquote><pre>
# 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
</pre></blockquote>
</ul>
* Julius ビルド
<ul>
* /root/work に julius-4.1.2.tar.gz を展開する。
<blockquote><pre>
# cd /root/work
# tar zxf julius-4.1.2.tar.gz
</pre></blockquote>
* julius/Makefile.in の LDFLAGS の定義の最後に -rdynamic を追加する。
<blockquote><pre>
# 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
</pre></blockquote>
* ビルド&インストール
<blockquote><pre>
# ./configure
# make
# make install
</pre></blockquote>
* 参考ページ<br/>http://julius.sourceforge.jp/juliusbook/ja/desc_install.html#id2486532
</ul>
* Julius プラグインビルド
<ul>
* /root/work に asterisk-julius-20091006.tgz を展開する。
<blockquote><pre>
# cd /root/work
# tar zxf asterisk-julius-20091006.tgz
</pre></blockquote>
* ソースを Julius のディレクトリにコピーする。
<blockquote><pre>
# cp asterisk-julius/udpadin.c julius-4.1.2/plugin
</pre></blockquote>
* プラグインをビルドする。
<blockquote><pre>
# cd julius-4.1.2/plugin
# gcc -shared -o udpadin.jpi udpadin.c
</pre></blockquote>
</ul>
* 音響モデルの用意
<ul>
* /root/work に dictation-kit-v3.2.tar.gz を展開する。<br/>ビルド作業はありません。
<blockquote><pre>
# cd /root/work
# tar zxf dictation-kit-v3.2.tar.gz
</pre></blockquote>
</ul>
* Asterisk 連携アプリケーションのビルド
<ul>
* /root/work に Asterisk 1.4 系のソースを展開する。
<blockquote><pre>
# cd /root/work
# tar zxf asterisk-1.4.*.tar.gz
</pre></blockquote>
* /root/work に asterisk-julius-20091006.tgz を展開する(展開していない場合)。
<blockquote><pre>
# tar zxf asterisk-julius-20091006.tgz
</pre></blockquote>
* app_talkdetect.c にパッチを当てる。
<blockquote><pre>
# cd asterisk-1.4.*
# patch -p1 < ../asterisk-julius/app_talkdetect-julius.patch
</pre></blockquote>
* Asterisk のビルドオプションを選択、ビルドして、インストールする。
<blockquote><pre>
# ./configure
# make menuconfig
# make
# make install
# make samples
# make config
</pre></blockquote>
* /etc/asterisk/sip.conf 等を編集して、電話機を登録する。
* すでにビルド環境がある場合は、その環境に app_talkdetect.c をコピーして、再ビルド&インストールしてください。
</ul>
=== デモ環境構築 ===
* 山手線の駅名の認識デモ
<ul>
* /root に asterisk-julius-20091006-jr.tgz を展開する。
<blockquote><pre>
# cd /root
# tar zxf work/asterisk-julius-20091006-jr.tgz
</pre></blockquote>
* /root/work に asterisk-julius-20091006.tgz を展開する(展開していない場合)。
<blockquote><pre>
# cd /root/work
# tar zxf asterisk-julius-20091006.tgz
</pre></blockquote>
* 番号計画をコピーする。
<blockquote><pre>
# cp /root/work/asterisk-julius/extensions.ael /etc/asterisk
</pre></blockquote>
* default コンテキストの 200 番でデモが利用できる。
</ul>
* OSC 2009 Okinawa で使ったデモ
<ul>
* /root に asterisk-julius-20091006-yui.tgz を展開する。
<blockquote><pre>
# cd /root
# tar zxf work/asterisk-julius-20091006-yui.tgz
</pre></blockquote>
* /root/work に asterisk-julius-20091006.tgz を展開する(展開していない場合)。
<blockquote><pre>
# cd /root/work
# tar zxf asterisk-julius-20091006.tgz
</pre></blockquote>
* 番号計画をコピーする(コピーしていない場合)。
<blockquote><pre>
# cp /root/work/asterisk-julius/extensions.ael /etc/asterisk
</pre></blockquote>
* default コンテキストの 201 番でデモが利用できる。
</ul>
=== デモの実行 ===
* 山手線の駅名の認識デモ
<ul>
* Asterisk を再起動する。
<blockquote><pre>
# /etc/init.d/asterisk restart
</pre>
あるいは
<pre>
# /etc/rc.d/init.d/asterisk restart
</pre></blockquote>
* Julius を起動する。
<blockquote><pre>
# cd /root
# julius -C jr/jconf-jr
</pre></blockquote>
* 接続している電話機から 200 番をダイアルする。
</ul>
* OSC 2009 Okinawa で使ったデモ<br/>ゆいレールの駅名を認識します。
<ul>
* Asterisk を再起動する。
<blockquote><pre>
# /etc/init.d/asterisk restart
</pre>
あるいは
<pre>
# /etc/rc.d/init.d/asterisk restart
</pre></blockquote>
* Julius を起動する。
<blockquote><pre>
# cd /root
# julius -C yui/jconf-yui
</pre></blockquote>
* 接続している電話機から 201 番をダイアルする。
* ゆいレールの情報はこちらで確認下さい。<br/>右側に駅名が記載されています。<br/>http://www.yui-rail.co.jp/
</ul>
=== 制限 ===
* 音声認識は、同時に1チャネルのみ利用可能です。<br/>複数チャネルで利用した場合は、正しい結果を得ることができません。
* 登録されていない単語に対しても、常に登録した単語として認識してしまいます。
* 騒がしい環境で利用すると、ノイズを音声とみなし、登録した単語として誤認識します。
=== その他のオプション ===
以下につきましては、iWeave 小西(直通電話番号 055-244-7663)までお問い合わせ下さい。
* 電話用音響モデル
* 複数チャネル同時認識対応
* 複数文法対応
* 環境ノイズ対応(環境ノイズを誤認識しないように)
* システム構築、技術支援など
=== 備考 ===
* 音声認識 Julius のページ<br/>http://julius.sourceforge.jp/
* 音声合成 galatea talk のページ<br/>http://www.sp.nitech.ac.jp/~demo/gtalk/demo.php<br/>http://sourceforge.jp/projects/galateatalk/
* 形態素解析辞書 unidic のページ<br/>http://www.tokuteicorpus.jp/dist/
Asterisk と Julius を連携させて、音声認識を実現する。
<br/>なお、以下の番号で山手線の駅名を認識するデモを用意してあります。
<pre>055-287-7709</pre>
=== 材料 ===
* 必ず必要なもの
<ul>
* x86 系の Linux 環境
* Asterisk 1.4 系のソース<br/>2009/10/6 の最新版<br/>http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.4.26.2.tar.gz
* Julius ソース<br/>http://sourceforge.jp/projects/julius/downloads/37582/julius-4.1.2.tar.gz/
* Julius ディクテーション実行キット<br/>http://prdownloads.sourceforge.jp/julius/28977/dictation-kit-v3.2.tar.gz
* Asterisk 連携用パッチと Julius プラグインのソース<br/>http://www2.iweave.jp/asterisk-julius/asterisk-julius-20091006.tgz
</ul>
* デモ環境<br/>このデモでは、音声合成に galatea talk + unidic を利用しています。
<ul>
* 山手線の駅名の認識デモ<br/>http://www2.iweave.jp/asterisk-julius/asterisk-julius-20091006-jr.tgz
* OSC 2009 Okinawa で使ったデモ<br/>http://www2.iweave.jp/asterisk-julius/asterisk-julius-20091006-yui.tgz
</ul>
=== 環境の構築 ===
* 期待するディレクトリ構成
<blockquote><pre>
/root
|-- work
| |-- dictation-kit-v3.2
| | `-- model
| | `-- phone_m
| `-- julius-4.1.2
| `-- plugin
|-- jr
`-- yui
</pre></blockquote>
* 事前準備
<ul>
* /root/work ディレクトリの準備
<blockquote><pre>
# mkdir /root/work
</pre></blockquote>
* ソースの取得
<blockquote><pre>
# 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
</pre></blockquote>
</ul>
* Julius ビルド
<ul>
* /root/work に julius-4.1.2.tar.gz を展開する。
<blockquote><pre>
# cd /root/work
# tar zxf julius-4.1.2.tar.gz
</pre></blockquote>
* julius/Makefile.in の LDFLAGS の定義の最後に -rdynamic を追加する。
<blockquote><pre>
# 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
</pre></blockquote>
* ビルド&インストール
<blockquote><pre>
# ./configure
# make
# make install
</pre></blockquote>
* 参考ページ<br/>http://julius.sourceforge.jp/juliusbook/ja/desc_install.html#id2486532
</ul>
* Julius プラグインビルド
<ul>
* /root/work に asterisk-julius-20091006.tgz を展開する。
<blockquote><pre>
# cd /root/work
# tar zxf asterisk-julius-20091006.tgz
</pre></blockquote>
* ソースを Julius のディレクトリにコピーする。
<blockquote><pre>
# cp asterisk-julius/udpadin.c julius-4.1.2/plugin
</pre></blockquote>
* プラグインをビルドする。
<blockquote><pre>
# cd julius-4.1.2/plugin
# gcc -shared -o udpadin.jpi udpadin.c
</pre></blockquote>
</ul>
* 音響モデルの用意
<ul>
* /root/work に dictation-kit-v3.2.tar.gz を展開する。<br/>ビルド作業はありません。
<blockquote><pre>
# cd /root/work
# tar zxf dictation-kit-v3.2.tar.gz
</pre></blockquote>
</ul>
* Asterisk 連携アプリケーションのビルド
<ul>
* /root/work に Asterisk 1.4 系のソースを展開する。
<blockquote><pre>
# cd /root/work
# tar zxf asterisk-1.4.*.tar.gz
</pre></blockquote>
* /root/work に asterisk-julius-20091006.tgz を展開する(展開していない場合)。
<blockquote><pre>
# tar zxf asterisk-julius-20091006.tgz
</pre></blockquote>
* app_talkdetect.c にパッチを当てる。
<blockquote><pre>
# cd asterisk-1.4.*
# patch -p1 < ../asterisk-julius/app_talkdetect-julius.patch
</pre></blockquote>
* Asterisk のビルドオプションを選択、ビルドして、インストールする。
<blockquote><pre>
# ./configure
# make menuconfig
# make
# make install
# make samples
# make config
</pre></blockquote>
* /etc/asterisk/sip.conf 等を編集して、電話機を登録する。
* すでにビルド環境がある場合は、その環境に app_talkdetect.c をコピーして、再ビルド&インストールしてください。
</ul>
=== デモ環境構築 ===
* 山手線の駅名の認識デモ
<ul>
* /root に asterisk-julius-20091006-jr.tgz を展開する。
<blockquote><pre>
# cd /root
# tar zxf work/asterisk-julius-20091006-jr.tgz
</pre></blockquote>
* /root/work に asterisk-julius-20091006.tgz を展開する(展開していない場合)。
<blockquote><pre>
# cd /root/work
# tar zxf asterisk-julius-20091006.tgz
</pre></blockquote>
* 番号計画をコピーする。
<blockquote><pre>
# cp /root/work/asterisk-julius/extensions.ael /etc/asterisk
</pre></blockquote>
* default コンテキストの 200 番でデモが利用できる。
</ul>
* OSC 2009 Okinawa で使ったデモ
<ul>
* /root に asterisk-julius-20091006-yui.tgz を展開する。
<blockquote><pre>
# cd /root
# tar zxf work/asterisk-julius-20091006-yui.tgz
</pre></blockquote>
* /root/work に asterisk-julius-20091006.tgz を展開する(展開していない場合)。
<blockquote><pre>
# cd /root/work
# tar zxf asterisk-julius-20091006.tgz
</pre></blockquote>
* 番号計画をコピーする(コピーしていない場合)。
<blockquote><pre>
# cp /root/work/asterisk-julius/extensions.ael /etc/asterisk
</pre></blockquote>
* default コンテキストの 201 番でデモが利用できる。
</ul>
=== デモの実行 ===
* 山手線の駅名の認識デモ
<ul>
* Asterisk を再起動する。
<blockquote><pre>
# /etc/init.d/asterisk restart
</pre>
あるいは
<pre>
# /etc/rc.d/init.d/asterisk restart
</pre></blockquote>
* Julius を起動する。
<blockquote><pre>
# cd /root
# julius -C jr/jconf-jr
</pre></blockquote>
* 接続している電話機から 200 番をダイアルする。
</ul>
* OSC 2009 Okinawa で使ったデモ<br/>ゆいレールの駅名を認識します。
<ul>
* Asterisk を再起動する。
<blockquote><pre>
# /etc/init.d/asterisk restart
</pre>
あるいは
<pre>
# /etc/rc.d/init.d/asterisk restart
</pre></blockquote>
* Julius を起動する。
<blockquote><pre>
# cd /root
# julius -C yui/jconf-yui
</pre></blockquote>
* 接続している電話機から 201 番をダイアルする。
* ゆいレールの情報はこちらで確認下さい。<br/>右側に駅名が記載されています。<br/>http://www.yui-rail.co.jp/
</ul>
=== 制限 ===
* 音声認識は、同時に1チャネルのみ利用可能です。<br/>複数チャネルで利用した場合は、正しい結果を得ることができません。
* 登録されていない単語に対しても、常に登録した単語として認識してしまいます。
* 騒がしい環境で利用すると、ノイズを音声とみなし、登録した単語として誤認識します。
=== その他のオプション ===
以下につきましては、iWeave 小西(直通電話番号 055-244-7663)までお問い合わせ下さい。
* 電話用音響モデル
* 複数チャネル同時認識対応
* 複数文法対応
* 環境ノイズ対応(環境ノイズを誤認識しないように)
* システム構築、技術支援など
=== 備考 ===
* 音声認識 Julius のページ<br/>http://julius.sourceforge.jp/
* 音声合成 galatea talk のページ<br/>http://www.sp.nitech.ac.jp/~demo/gtalk/demo.php<br/>http://sourceforge.jp/projects/galateatalk/
* 形態素解析辞書 unidic のページ<br/>http://www.tokuteicorpus.jp/dist/