ちょっと Asterisk の設定を変更したので備忘録代わりに…
会社の『代表電話の設定を変更して、営業時間外のアナウンスを自動再生する』という、難易度はさほど高くない Tips です。

作業は大きく2つで、まずは再生用アナウンスデータの準備と、Asterisk の設定変更となります。

 音声データの準備

色々調べて実際に試行錯誤してみました。音質については好みがあるので、あくまで私個人の感想で書いてみます。
Asterisk のデフォルトでインストールされている Voice 系データ(英語)は GSM フォーマットになっていますので、それに準じても良いのですが、音質的には好みじゃないので、残りは MP3, ulaw, wav となります。MP3 はAsteriskの再コンパイルが必要っぽいので、除外するとして、残りの ulaw と wav で比べてみましたが、個人的には wav 音源の方が良い感じだったので、今回は wav で音声データを作ることにします。

ネットで検索してみると、有料・無料を問わず、入手可能の音声データのフォーマットで wav は割と一般的な感じです(Windows 標準の音声データフォーマットだから!?)。サンプリングレートが 44.1kHz、符号化が 16ビット、後はモノラルかステレオで、これがデファクトっぽい感じです。

しかし、残念ながらこのままでは Asterisk の PlayBack コマンドで再生できません。

Asterisk で使う場合には、サンプリングレートを 8,000Hz(8kHz)モノラルにする必要があります。符号化については 16bit 固定で、8bit では再生されませんでした。

 変換方法

sox というアプリをダウンロードします。
※sox は、man ページを見ると…
SoX – Sound eXchange, the Swiss Army knife of audio manipulation
だそうです。

apt-get install sox
sox voice.wav -r 8000 -c 1 voice_8k.wav

これで voice.wav が、サンプリングレート8,000Hzでモノラルの voice_8k.wav に変換されます。
※必ず .wav という拡張子を付けること! ただし、PlayBack コマンドでは拡張子の指定はしません。

音量は、gain -n で調整できます。
音源によっては -10 くらい指定する必要があるかもしれません。

sox voice.wav -r 8000 -c 1 voice_8k.wav gain -n -10
 追記 2019/09/02

Asterisk というか IP 電話標準のコーデックである μlaw を使っているのであれば、上記のようにサンプリングレートは 8KHz で問題ありませんが、G.722 のような、いわゆる HD ボイスと呼ばれる広帯域コーデックを使っている場合、アナウンスに使う音声ファイルの品質も上げたくなります。ここでは通常の .wav ファイルで使われているサンプリングレートを 44KHz から 8KHz ではなく 32KHz へ変換し、Asterisk の playback コマンドで流す為の Tips です。

sox voice.wav -r 32000 -c 1 voice_32k.wav
cp voice_32k.wav voice_32k.sln32

この .sln32 という拡張子がポイントです。voice_32k.sln32 を /var/lib/asterisk/voice へアップロードして、8KHz の時と同じように、extensions.conf のファイル指定では、拡張子無しで playback コマンドに設定すると、高音質の音声ファイルを再生してくれます。

 Asterisk の設定変更

/etc/asterisk/extensions.conf の設定変更例です。

アナウンスを流す条件は、

1.12月29~31日と1月1~6日
2.平日(月~金)の営業時間(10:00~18:30)外
3.土、日曜日

…と、しました。

『本日の営業は終了しました…』というアナウンスが voice_8k.wav に入っているとして、今回は /var/lib/asterisk/voice というフォルダーを新しく作り、そこに音声データを置いています。

また、この例では『発信番号非通知』の着信については、単に切断していますが、これは何かメッセージを流してから切る方が良いかもしれません。

設定がおわったら、asterisk の CUI を起動して、dialplan reload と入力すると有効になります。

 アナウンスに使う音声データ

Audiostock https://audiostock.jp/
声の達人(こえたつ)https://www.koetatsu.com/
ナレーターさん.com https://narrator3.com/dlshop/
■この辺で探すといろいろ見つかると思います。

お勧めは、声優さんでヴァーチャルアイドルの雛乃木まやさんです。商用・非商用問わず無料で使えます。
※2019年に放映された『賢者の孫』では、王子の妹であるメイ=フォン=アールスハイド役で出演されました。
ダウンロードはこちらから… https://hinanogimaya.com/3017/

雛乃木まやさんには、あるお客様向けに特注でアナウンスをお願いしました。作成していただいた音声データを納品した所、依頼元のお客様には大変喜ばれました。もし、会社名の入った特注のアナウンスをご検討の方は、是非、雛乃木まやさんへ相談してみて下さい。きっと素晴らしい音声ファイルを作成してもらえると思います。

 追記 2019/06/08

ちょっと調べたところ、非通知着信に対してのアナウンスは、日本語・英語それぞれ存在していました。/var/lib/asterisk/sounds/ja の中身を確認して、privacy-unident というファイルがあれば、それが使えます。
もし、見つからないようであれば、ここからダウンロードできます。
http://downloads.asterisk.org/pub/telephony/sounds/releases/asterisk-core-sounds-ja-wav-1.6.1.tar.gz

あとは例文と同じように、

exten => 0001,n,PlayBack(/var/lib/asterisk/sounds/ja/privacy-unident)

を使うと、『非通知なのでかけ直して~』という日本語が流れます。

 ちょっとだけ留守番電話

本来、留守番電話は録音はもちろんの事、再生や削除も電話機から出来るようになっていますが、今回は外線着信に対して電話が取れないときに、決まったメッセージを流し、その後、受け取ったメッセージを録音して、それを指定のメールアドレスへ送信するという、とても簡単というか簡略された留守番電話の設定です。

設定を変更するファイルは2つです。

さほど説明はいらないと思いますが…
音声ファイルのフォーマットは wav49 が良いです。ただ、ファイルサイズは程々で良いのですが、音質はお世辞にも良いとは言えません。音質にこだわるなら wav を指定するのはありです。ただし、ファイルサイズが wav49 の数倍になりますので、お気を付け下さい。
※ wav にすると16秒録音で260KBになりました。

デフォルトの設定だと、送られてくる電子メールの中身が英語になります。

Dear lonnie:

Just wanted to let you know you were just left a 0:16 long message (number 1) in mailbox 500 from 0345208224, on Thursday, June 13, 2019 at 10:04:52 AM so you might want to check it when you get a chance. Thanks!

–Asterisk

文面を日本語化したい場合には、[general] の charset を UTF-8 にして、emailbody とか emaildateformat とかの設定をごにょごにょすると幸せになれます。

今回の例では、外線着信後の留守録は500番固定で設定し、電子メールを送信後は録音ファイルをサーバから消去します。
ですので、Asterisk が動いているサーバには録音ファイルは残りません。
※録音ファイルは /var/spool/asterisk/voicemail/default/500/INBOX に保存されるのですが、この設定例だと残らないのでいつも空っぽです。

次に extensions.conf の設定例です。

ここでは、/var/lib/asterisk/voice/intro.wav に、『ご用の方は発信音の後に…』というお決まりのメッセージを wav ファイルで置いておきます。

ポイントは、

exten => 00001,n,Voicemail(500,s)

この ,s を付けると、デフォルトの留守録メッセージ(Asteriskに標準で組み込まれている)を再生しません。つまり発信音と言われるぷーーという音だけ出して、録音状態になります。

また、上記の設定例では内線201を20秒呼び出しても応答がない(NOANSWER)か、話し中(BUSY)か、そもそも201に設定されている IP電話と通信できない(CHANUNAVAIL)の時に、[rusu] にジャンプして、留守録が起動するようになっています。

留守録が起動後、外線が切られると、voicemail.conf の [default] に設定したメールアドレスへ、録音ファイルを添付したメールが自動送信されます。

■営業時間外のアナウンス・どうしても電話取れないときの留守番電話・そして発信番合否通知の外線に対してのアナウンス… このくらい出来ていれば最低限お仕事で使えると思います。カスタムメッセージを作ってもらって Asterisk に設定すると楽しいですよ~ 是非、お試し下さい。