匿名

差分

Macro AquesTalk

1,616 バイト追加, 2018年10月22日 (月) 11:21
使い方
app_aquestalkを廃止し、Macroに置換。<BR>もはや世の中のCPU性能も十分高いので、わざわざapp_にする必要もないかと思うのでマクロ実装にします。<BR><BR>Raspberry Piを使用している場合には [[AquesTalkPi]] を使ってください。<BR>
<BR>
注意!:AquesTalkの評価版には制限があります。利用の際にはライセンスを購入してください。
cp -r aq_dic /var/lib/asterisk/
==シェルスクリプトを作成しておく==
漢字から音声を発生できるようにスクリプトを作っておく。漢字から音声を発声できるようにスクリプトを作っておく。<BR>
だいたいこんな感じで /var/lib/asterisk/scripts/aquestalk.sh でつくる。
#!/bin/sh
echo $1 | $BINPATH/Kanji2KoeCmd $DICPATH | $BINPATH/HelloTalk | $SOX
fi
好みの問題もあるので何ですが、ちと早口すぎると思う場合はSOXを以下のように。
SOX="sox - -r 8000 -t wav - speed 0.9"
ピッチも下がるけど、この位がちょうどいいかも。
 
==Asterisk Macroの作成==
次のようなMacroを定義しておく。
exten => s,1,System(rm -f ${ARG1}.wav)
exten => s,n,Return()
MacroからGosubに移行する場合には以下のように
;AquesTalkによる音声合成用マクロ
[macro-AquesTalk]
exten => s,1,NoOp(AquesTalkPi)
exten => s,n,Set(ID=${CHANNEL})
exten => s,n,Set(FN=${CUT(ID,/,2)})
exten => s,n,Set(FN=/tmp/${FN})
exten => s,n,Set(CHANNEL(hangup_handler_push)=atp-rm-hdlr,s,1(${FN}));
exten => s,n,System(/var/lib/asterisk/scripts/aquestalk.sh ${ARG1} > ${FN}.wav)
exten => s,n(loop),Playback(${FN})
exten => s,n,GotoIf($["${PLAYBACKSTATUS}"="FAILED"]?endm)
exten => s,n,System(rm -f ${FN}.wav)
exten => s,n(endm),Set(CHANNEL(hangup_handler_pop)=);
exten => s,n,Retunr ← MacroExitではなくreturnに書き換えること
;AquesTalk ファイル削除用ハンドラ
[atp-rm-hdlr]
exten => s,1,System(rm -f ${ARG1}.wav)
exten => s,n,Return()
 
==使い方==
extenで次のように書くだけ。
exten => 8765,1,Macro(AquesTalk,明日の天気は晴れ)
exten => 8765,n,Hangup
Gosubの場合には以下のように書いてください。
exten => 8765,1,Gosub(macro-AquesTalk,s,1(明日の天気は晴れ))
exten => 8765,n,Hangup