お問い合わせ

ブログ

これまでに経験してきたプロジェクトで気になる技術の情報を紹介していきます。

Asterisk で話者別にチャンネルを分けて mp3 で通話録音する方法

NMC NMC 5 months
Asterisk で話者別にチャンネルを分けて mp3 で通話録音する方法

こんにちは!

皆さんは Asterisk の通話録音ファイルを聞いてて、
「どっちが喋ってるんや!」
「声が混ざってわけわからん!」
となったことはないでしょうか?

そんな場合に有効な、話者の音声を左右に分けて保存する方法を解説します!

ついでに、重くてこまる WAV ファイルを MP3 に変換する方法も解説しています!

§ Install requirements

必要なものをインストールします。

$ sudo yum install sox lame
  • sox は 2つのモノラルなWAVファイルを1つのステレオなWAVファイルにします。
  • lame は WAV を MP3 に変換するのに使用します。

§ Add dialplan

通話録音するように dialplan を修正します。

Dial Application の手前で MixMonitor を開始します。

Set(MON_FILE=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}_${UNIQUEID})
Set(MONITOR_DIR="/var/spool/asterisk/monitor/")
MixMonitor(${MON_FILE}.wav,a t(${MON_FILE}-out.wav) r(${MON_FILE}-in.wav), /var/lib/asterisk/shell/after_mix_monitor.sh ${MONITOR_DIR} ${MON_FILE})

Hangup の後に StopMixMonitor でファイルを閉じます。

StopMixMonitor()

これをしないと壊れた音声ファイルが出来上がるかもしれません。

§ Create shell script

MixMonitor の第三引数で指定した shell script のファイルを用意します。

/var/lib/asterisk/shell/after_mix_monitor.sh

#!/bin/sh

cd $1

# merge left and right
sox -M $1$2-out.wav $1$2-in.wav $1$2-stereo.wav

# convert to mp3
lame $1$2-stereo.wav

# remove wav files
if [ -f $1$2-stereo.mp3 ]
then
  rm $1${2}.wav
  rm $1$2-out.wav
  rm $1$2-in.wav
  rm $1$2-stereo.wav
fi

これで Dialplan が実行されると /var/spool/asterisk/monitor に mp3 ファイルが出来ていくはずです!

Asterisk で話者別にチャンネルを分けて mp3 で通話録音する方法 2021-12-20 14:59:22

コメントはありません。

4956

お気軽に
お問い合わせください。

お問い合わせ