App aquestalk2

AquesTalk音声合成エンジン・インタフェース 2
2009/02/05 app_aquestalk2は今後、app_aquestalkとして実装されます。今後はapp_aquestalkという名称は、app_aquestalk2相当のものを指すことになります。
AquesTalk 2.2ライブラリ対応版
ローマ字表記が使えるため、日本語の使えない環境でも日本語を発声させることができます。

目次

設定ファイル

aquestalk.conf

[general]
licencekey=ライセンスキーを指定する
speed=80      <- speedのデフォルト値を指定
atten=2       <- attenのデフォルト値を指定
charaset=euc  <- デフォルトの文字コードセット

exten内で記述する文字コードセットが指定可能です。設定は euc sjis utf8 roma のいずれかです。各文字コードにおける発音の表記方法についてはAquesTalkのドキュメントを参照してください。
なおアプリケーション・モジュールにおけるUTF-16サポートについては現在のところ実装していません。

書式

AquesTalk2(文字列,音量,速度,割り込みキー,文字コード,オプション)

文字列:発声させる文字列を音声記号列にしたがって記述。指定した文字コードで記述する。
   文字列はダブルクォート(")で括った方が安全です。括らないと場合によってはAsteriskが落ちることがあります。
音量:音量調整用パラメータ。ここで指定した値分の1の音量となる(1が最大音量、2で1/2、4で1/4)。
速度:発声速度を1~200で指定する。
割り込みキー:発声を途中で中断する場合のDTMFキーを指定する。
文字コード:発声に使用させる文字列の文字コードを指定する。euc sjis utf8 romaのいずれか。
オプション:現在のところ未実装。

注:文字列指定の際には文字のクォートに注意。
注:文字コードが省略された場合にはaquestalk.conの値が使用される。.conf内で指定しされていない場合はeuc。
注:実際に与える文字列と、そのコード指定が一致しているかどうかはチェックされないので注意。
注:1.0との互換性維持のため現在はこのアプリケーション名はAquesTalk2ですので注意してください。

変数

AQTSTATUS

SUCCESSまたはFAILED

使用例

引数に読み上げさせたい文字列を指定した文字コードで記述します。文字コードのデフォルトはeucですが、aquestalk.confで指定されている場合には、そのコードがデフォルトとして使われます。引数で指定した場合にはデフォルト値に関係なく、指定したコードであるとみなされます。

exten => 5000,1,Answer
exten => 5000,n,Wait(1)
exten => 5000,n,AquesTalk2("あな\'たの、でんわば\'んごーわ、<NUM VAL=${CALLERID(num)}>\,\,デ_ス",,110,#*)
exten => 5000,n,AquesTalk2("\'こんにちわ、ごきげ\'んい\'かがですか?",,110)
exten => 5000,n,AquesTalk2("konobangouwa",,,,roma)
exten => 5000,n,NoOp(${AQTSTATUS})
exten => 5000,n,Wait(1)
exten => 5000,n,Playback(beep)
exten => 5000,n,Hangup

チャネル変数を引き渡すこともできます。

exten => 300,1,Answer
exten => 300,n,Wait(1)
exten => 300,n,AquesTalk2(あな\'たの、でんわ\'ば\'んごうわ\,||100)
exten => 300,n,Set(AQTARG="<NUM VAL=${CALLERID(num)}>デ_ス。")
exten => 300,n,AquesTalk2(${AQTARG}||100)

いずれの場合も'や,のクォートに注意してください。

インストール方法(Asterisk 1.4)

注意:Asterisk-addons 1.4.5でも動作しますが、Asterisk 1.4.5の場合にはコンパイルオプションが変更されているため、Addonsのモジュールも1.4.5に移行する必要があります。app_aquestalkもコンパイルしなおして下さい。
Asterisk-addons 1.4.xを入手・展開します。以下は1.4.5の例です。
http://downloads.digium.com/pub/asterisk/asterisk-addons-1.4.5.tar.gz

# tar zxvf asterisk-addons-1.4.5.tar.gz
# cd asterisk-addons-1.4.5

./configureを実行しておきます。

# ./configure

AquesTalkを入手し、インストールしておきます。また、AquesTalkに含まれるAquesTalk.hをasterisk-addons-1.4.xディレクトリにコピーしておきます。

App_AquesTalkを入手します。

  • 旧版
ftp://ftp.voip-info.jp/asterisk/apps/1.4/app_aquestalk2.tar.gz

Asterisk-addonのディレクトリで展開し、Makefileにパッチを当てます。

# tar zxvf app_aquestalk2.tar.gz
# patch -p0 < patch.Makefile

注:最近のaddonsではMakefileの構造が大幅に変わっているためパッチが当りません。以下のようなAquesTalk専用のMakefileを作って下さい。

SOLINK=-shared -Xlinker -x
CC=gcc

all: app_aquestalk.so app_aquestalk2.so

app_aquestalk.so: app_aquestalk.o
        $(CC) $(SOLINK) -o $@ $< -L/usr/lib -lAquesTalk1 -lstdc++

app_aquestalk2.so: app_aquestalk2.o
        $(CC) $(SOLINK) -o $@ $< -L/usr/lib -lAquesTalk2 -lstdc++

ライブラリをシンボリックリンクしておきますが添付のシェルを使うと簡単です。

# ./aq_liblink.sh

これでMakeすればapp_aquestalk2.soができるのでコピーします。

# cp app_aquestalk2.so /usr/lib/asterisk/modules/.

CLIからロードすれば使用可能になります。ロードする前に aquestalk.conf ファイルを作成しておいてください。

CLI*> module load app_aquestalk2.so

64bit版

AquesTalk 64bit版を使用することで64bit Linux上でapp_aquestalk2が使用できます。以下の内容でMakefileを作成しMakeしてください。

SOLINK=-m64 -shared -Xlinker -x
CC=gcc

all: app_aquestalk2.so

app_aquestalk2.o: app_aquestalk2.c
        $(CC) -c -fPIC $<

app_aquestalk2.so: app_aquestalk2.o
        $(CC) $(SOLINK) -o $@ $< -L/usr/lib64 -lAquesTalk -lstdc++

注:AquesTalk 2系ライブラリをlibAquesTal2としている場合には -lAquesTalk2 を指定してください。

110さんによるバグフィックス版

ftp://ftp.voip-info.jp/asterisk/apps/1.4/app_aquestalk2.01.tar.gz
addonsのmenuselect用パッチが付属しています。

リリース・メモ

2007/12/16 初期バージョン。app_aquestalkにあった不具合も一部修正して反映。
2008/12/30 110さんによるバグフィックス。make menuselect可能。