自分用のメモ
PowerPointにナレーションを記録してスライドショーを作成し、最後に動画を書き出し。
録音後に音声部分をキレイにする方法です。
(PowerShellとかで書いた方がいいかもしれないですが
急ごしらえなので、Windows11でWSL上のUbuntuでの環境です)
考え方
- PowerPointのpptxファイルは zip形式で圧縮されている
- 圧縮ファイルの中にある ppt/media 内に media1.m4a ~ media**.m4a と音声が記録されている
- この音声ファイルを抽出して、ffmpegでノイズを消すフィルタをかけて処理する
- 圧縮ファイル内に処理済みの音声を書き戻す
これでキレイになるはず。
#スクリプト
#!/bin/bash
if [ $# -ne 1 ]; then
echo "使用方法: $0 <pptxファイル>"
exit 1
fi
# 変数の設定
PPTX_FILE="$1"
BASE_NAME="${PPTX_FILE%.*}" # 拡張子を除いたファイル名
ZIP_FILE="${BASE_NAME}.zip"
FILTERED_PPTX="${BASE_NAME}_filtered.pptx"
# pptxファイルをZIP形式にコピー
cp "$PPTX_FILE" "$ZIP_FILE"
# 必要なフォルダを作成
mkdir -p "m4a"
mkdir -p "ppt/media"
# ZIPファイルからmedia1.m4a~media99.m4aを抽出
unzip -j "$ZIP_FILE" "ppt/media/media[0-9].m4a" "ppt/media/media[1-9][0-9].m4a" -d "m4a"
# FFmpegでフィルタを適用
for file in m4a/media*.m4a; do
base_name=$(basename "$file")
ffmpeg -i "$file" -af "highpass=f=200,lowpass=f=3000,afftdn,anlmdn=s=0.00001:p=0.002:r=0.006:o=1:m=11" "ppt/media/$base_name"
done
# ZIPファイルのmediaフォルダを更新
zip -r "$ZIP_FILE" "ppt/media" -x "*.zip"
# ZIPファイルをpptxにリネーム
mv "$ZIP_FILE" "$FILTERED_PPTX"
# 一時フォルダを削除
rm -rf "m4a"
rm -rf "ppt"
echo "処理が完了しました。
適当なファイルに保存して
> bash てきとう.sh パワーポイントのファイル名
とすれば出来るはず。
unzip,ffmpeg,zipコマンドはあらかじめ必要なので
sudo apt install unzip ffmpeg zip
としておく。
感想
職業上、授業動画をたくさん作成していますが、どうしても環境音やマシンのファンの音とか、夜に録音すると春は田んぼのカエルがゲロゲロ言っている音がのったりするので、…
一つ一つ音声を書き出して Adobe Auditionで個別にエフェクトをかけて、PowerPointに貼り付けて…
としていましたが、かなり面倒だったので、それってffmpegで出来ないかな?と思って試してみました。
「あー」とか「えー」とかをカットしたり、マウスやキーボードのクリック音を消したりも出来たらなと思っています。
誰かの何かにお役に立てれば幸いです