##前回のあらすじ
raspberry pi をラジオサーバにしてラジオ番組のCMカットを企む
および伊集院光のラジオ番組CMカット自動化のための調査結果①~朝のラジオ~の記事の追加です。本記事では前回までの内容を前提に話を進めます。
前々記事では、ラジオサーバおよびsambaサーバの構築およびCMカットを行いました。
これによって毎日、CMカットがなされたラジオが聞けるようになりましたが、どうしてもCM扱いされてカットされてしまう箇所が発生してしまう事が前記事で分かりました。
このカットされた部分を聞き返すためには、カット前のmp3ファイルにアクセスし、該当箇所を探さなければならず、非常に不便です。またカット前のmp3ファイルを残す必要があるのも腹立たしいです。
これを解決するために、「CM部分を削除するのではなく、リネームする」ようにしようというのが今回のテーマです。これによってカット前のmp3ファイルを削除することが可能になります。
前回のソースでは「区切り無音時間」と「CMと判定される秒数」が固定化されてしまうため、番組ごとに別途のシェルファイルを用意しなければなりませんでした。これも様々な番組にcronのみで対応するために、引数から受け取るようにしました。
前回のrec_radiko.shは無駄にmkdirをしていましたが、mp3spltでは出力ファイルを指定できるため、これもmp3spltに任せる事にします。
修正内容が大きいため、rec_radiko.shは別途新しいものを用意してください。
##rec_radiko.shの改修点
~(最終行に追加)~
sudo mp3splt -sn -p th=-50,min=$5,shot=10 -d "${outdir}/${PREFIX}_${date}" "${outdir}/${PREFIX}_${date}.mp3"
sudo chmod -R 777 "${outdir}/${PREFIX}_${date}"
for file in `find "${outdir}/${PREFIX}_${date}" -type f`
do
fsize=`wc -c $file | awk '{print $1}'`
if [ $fsize -lt $6 ]; then
mv "$file" "${outdir}/${PREFIX}_${date}/_${file##*/}"
fi
done
sudo chown -R pi "${outdir}/${PREFIX}_${date}"
rm -f "${outdir}/${PREFIX}_${date}.mp3" #元の音声ファイルが必要であればコメントアウトしてください
0 1 * * 2 sleep 15; /home/pi/rec_radiko.sh TBS 120 /home/pi/samba/radio "伊集院光・深夜の馬鹿力" 1.7 3000000
30 8 * * 1-4 sleep 15; /home/pi/rec_radiko.sh TBS 150 /home/pi/samba/radio "伊集院光とらじおと" 0.7 2000000
0 18 * * * /sbin/shutdown -r now
変更点の中の特筆すべきは、rec_radiko.shへの修正が最後尾追加になったことと、第五引数(番組を区切る無音秒の単位)、第六引数(CMと見なすファイルのbyte数)が増えたという点です。
唯一のデメリットとして、前回は「CMと見なす秒数」でCMカットしていたのに対し、今回は「CMと見なすファイルサイズ」でリネームしているという点です。
ファイルサイズでは直感的にCM判定しづらいかなぁ……と思います。
CMと見なすファイルサイズは、それぞれの番組で試行錯誤してみてください。mbでもkbでもなく、byteですのでご注意を。
PythonでMFCC(メル周波数ケプストラム係数)を計算して、パーソナリティとアシスタントだけを判定するように出来たらもっと便利なんですけどね。
誰かやってくれないかなぁ……
参考:声優の声を分析してみた、機械学習でμ’sの声を識別する