Macro AquesTalkのソースを表示
←
Macro AquesTalk
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます: メール確認された利用者、
管理者
。
このページのソースの閲覧やコピーができます。
app_aquestalkを廃止し、Macroに置換。<BR> もはや世の中のCPU性能も十分高いので、わざわざapp_にする必要もないかと思うのでマクロ実装にします。<BR> <BR> Raspberry Piを使用している場合には [[AquesTalkPi]] を使ってください。<BR> <BR> 注意!:AquesTalkの評価版には制限があります。利用の際にはライセンスを購入してください。 :https://www.a-quest.com/download.html ==必要なもの== *AquesTalk本体(AquesTalk10) :https://www.a-quest.com/products/aquestalk.html *AqKanji2koe :https://www.a-quest.com/products/aqkanji2koe.html それぞれのマニュアルはちゃんと読んでください。<BR> *レート変換にsoxを使うのでsoxもインストールしておいてください。 ==AquesTalkのインストール== 入手したzipを展開し、そのディレクトリで以下を実行。64bit版を例に説明。 cp lib64/libAquesTalk10.so.1.1 /usr/lib64 ln -sf /usr/lib64/libAquesTalk10.so.1.1 /usr/lib64/libAquesTalk10.so.1 ln -sf /usr/lib64/libAquesTalk10.so.1 /usr/lib64/libAquesTalk10.so /sbin/ldconfig -n /usr/lib cp lib64/AquesTalk.h /usr/include/. samplesにあるHelloTalkをコンパイル。 g++ -o HelloTalk HelloTalk.c -lAquesTalk10 Asterisk用に配置しておく。 mkdir /var/lib/asterisk/bin cp HelloTalk /var/lib/asterisk/bin/. ==Kanji2Koeのインストール== 入手したzipを展開し、そのディレクトリで以下を実行。64bit版を例に説明。 cp lib64/libAqKanji2Koe.so.3.0 /usr/lib64 cp lib64/libAqUsrDic.so.3.0 /usr/lib64 ln -sf /usr/lib64/libAqKanji2Koe.so.3.0 /usr/lib64/libAqKanji2Koe.so.3 ln -sf /usr/lib64/libAqKanji2Koe.so.3 /usr/lib64/libAqKanji2Koe.so ln -sf /usr/lib64/libAqUsrDic.so.3.0 /usr/lib64/libAqUsrDic.so.3 ln -sf /usr/lib64/libAqUsrDic.so.3 /usr/lib64/libAqUsrDic.so /sbin/ldconfig -n /usr/lib64 cp lib64/AqKanji2Koe.h /usr/include/. cp lib64/AqUsrDic.h /usr/include/. samplesにあるKanji2KoeComdをコンパイル。 g++ -o Kanji2KoeCmd Kanji2KoeCmd.cpp -lAqKanji2Koe Asterisk用に配置しておく。 cp Kanji2KoeCmd /var/lib/asterisk/bin/. 辞書をAsterisk用に配置しておく。展開したディレクトリにあるaq_dicをディレクトリごとコピーする。 cp -r aq_dic /var/lib/asterisk/ ==シェルスクリプトを作成しておく== 漢字から音声を発声できるようにスクリプトを作っておく。<BR> だいたいこんな感じで /var/lib/asterisk/scripts/aquestalk.sh でつくる。 #!/bin/sh BINPATH=/var/lib/asterisk/bin DICPATH=/var/lib/asterisk/aq_dic SOX="sox - -r 8000 -t wav - " if [ ""$1 != "" ] then echo $1 | $BINPATH/Kanji2KoeCmd $DICPATH | $BINPATH/HelloTalk | $SOX fi 好みの問題もあるので何ですが、ちと早口すぎると思う場合はSOXを以下のように。 SOX="sox - -r 8000 -t wav - speed 0.9" ピッチも下がるけど、この位がちょうどいいかも。 ==Asterisk Macroの作成== 次のようなMacroを定義しておく。 ;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,MacroExit ;AquesTalk ファイル削除用ハンドラ [atp-rm-hdlr] 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
Macro AquesTalk
に戻る。
ナビゲーション メニュー
個人用ツール
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
ヘルプ
広告
サイトコンテンツ
コミュニティ
Asterisk
Asterisk 18
Asterisk 20
Asterisk 22
IP電話機
購入情報
導入事例
回線接続
ベンダー
ひかり電話
セキュリティ
イベント情報
スペシャル
Asterisk pjsip
ABS
黒電話 ハック
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報