こんにちは!
ギークフィードのエンジニアのSutouです。
主にAsterisk、freepbxなどサーバサイドをやることが多いです。
今回はAsteriskのDialplanを使って、通話録音するまでを書きたいと思います。
Asteriskで通話はできている状態からスタートしたいと思います。
目次
環境情報
今回の環境ですが、
- CentOS Linux release 7.6.1810 (Core)
- asterisk 13.23.0
にておこないました。
asteriskでの録音
まずasteriskでの録音はMixMonitor()を使用します。
概要は以下のサイトを参考にしてください。
デフォルトの保存先は/var/spool/asterisk/monitor/になっているかと思います。
基本的な使い方
MixMonitor(filename.extension[,options[,command]])
普通に録音する
dialplanはこのような感じ
1 2 3 |
same => n,Set(FILE=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}) same => n,Set(MONITOR_DIR="/var/spool/asterisk/monitor/") same => n,MixMonitor(${FILE}.wav) |
一行目でファイル名を設定し、二行目で保存ディレクトリを設定、三行目で録音するというようになります。
オプション無しだと受話、送話ともにミックスされた状態の録音ができます。
ステレオ録音するというオプションはどうやら無いようです。
送話、受話を別々なファイルに保存する
送話、受話をそれぞれ録音するオプションがありますのでこれを使ってみましょう。
1 2 3 |
same => n,Set(FILE=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}) same => n,Set(MONITOR_DIR="/var/spool/asterisk/monitor/") same => n,MixMonitor(${FILE}.wav,a t(${FILE}-out.wav) r(${FILE}-in.wav)) |
三行目でa 、t、 rのオプションを追加しました。
オプションの説明は以下の通りです。
a: 上書きしないでファイルを追加する。
t(file): 送信音声をファイルに録音する
r(file): 受信音声をファイルに録音する
mixされたファイルと、送話だけの音声、受話だけの音声が録音されたファイルの3つが作成されます。
二つのファイルから一つのステレオファイルを作成する。
soxというコマンドで送話音声と受話音声ファイルからステレオ音声を作成することができます。
centos7だとyum install sox でインストールができるかと思います。
手動で行うとこのような形で出来ます。
1 |
sox -M 20190101-180001-in.wav 20190101-180001-out.wav stereo.wav |
dialplanのMixMonitorでステレオ録音する
MixMonitorの第3引数でcommandが実行できるようなので、ここでsoxコマンドを実行しましょう。
1 2 3 |
same => n,Set(FILE=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}) same => n,Set(MONITOR_DIR="/var/spool/asterisk/monitor/") same => n,MixMonitor(${FILE}.wav,a t(${FILE}-out.wav) r(${FILE}-in.wav),sox -M ${MONITOR_DIR}${FILE}-out.wav ${MONITOR_DIR}${FILE}-in.wav ${MONITOR_DIR}${FILE}-stereo.wav) |
これでステレオでの通話録音の作成ができました。
※はまったポイント
MixMonitorでのsoxコマンド実行でステレオのファイルが作成されないというところでハマってしまいました。
ファイルのフルパスを指定することで無事にできるようになりました。
asterisk13での通話録音をステレオ化するのまとめ
送信音声、受信音声をそれぞれの録音ファイルから、
soxコマンドでステレオファイルを作成しました。
soxコマンドで行いましたが、ffmpegなど使うといろいろ応用が利くかなと思います。
soxがいろいろ音声ファイルを編集したりと便利そうなコマンドなので、
使い方を覚えていきたいなと思いました。
- Simple AWS DeepRacer Reward Function Using Waypoints - 2023-12-19
- Restrict S3 Bucket Access from Specified Resource - 2023-12-16
- Expand Amazon EBS Volume on EC2 Instance without Downtime - 2023-09-28
- Monitor OpenSearch Status On EC2 with CloudWatch Alarm - 2023-07-02
- Tokyo’s Coworking Space Hidden Gem: AWS Startup Loft Tokyo - 2023-05-24