仕事の備忘録

IT系技術とか、カスタマーサービスとか

ffmpeg 動画加工をコマンドラインで行うよ

昨年から音声をどれだけ省力で文字にできるかを調べている。サポートなどで電話を受けることがあるのですが、実際にレポート作ったりするとき文字にするのが面倒だなと思ったのがきっかけ。

今回利用予定は「Bing Speech API」

https://azure.microsoft.com/ja-jp/services/cognitive-services/speech/

これを利用して音声を文字起こしを、と考えたものの手元に音声ファイルはない。でも自分の声は聴きたくない。ということで、動画の音声部分を文字に変換することにする。

手順を考えるとサービスに投げる前に元ネタの音声ファイルを作らないといけない。ということで今回は準備編。動画から音声ファイル作成を行うことにする。

まずAmazonや窓の杜でソフトウェアを探していたが、有料の動画編集ソフトしか見つからない。今回変更したいだけなので、数千円のを買うのもどうかと悩んで、ソースコードとか変換ライブラリとかないものかと検索していたところオープンソースの「ffmpeg」を発見。

github.com

マルチメディアファイルを操作できるオープンソース。Toolsにあるコマンドラインで変換できるexeを使って変換が簡単にできるらいしい。

早速なのでWindows版をダウンロードして利用することにした。自分の使いたい環境のものをダウンロード。 https://ffmpeg.zeranoe.com/builds/

ffmpegの使い方 

使い方の一覧はこちらが一番見やすかった。

ffmpegの使い方:tech.ckme.co.jp

あとこちらの記事は利用方法の具体的なイメージが付きやすい。字幕とか。

qiita.com

2つのサイトみただけでわかる、こんなことがコマンドラインから操作できるのか!と感動する機能のラインナップ。

使い方は簡単。ダウンロードしたzipを展開すると、bin直下にexeが3つある。このffmpeg.exeをコマンドラインから利用する(コマンドプロンプトを管理者で実行)

私の場合動画から音声変換なので

ffmpeg -i K_111.mp4 K_111.wav

でWAVファイルに変換となる。

このよしなにこなしてくれる感じ。ffmpeg有能!

改めて「Bing Speech API」の仕様を確認するとShortとLongの2パターンがあり、Shortで最大15秒。Longで最大120秒まで処理可能。

2分より長い音声を処理したい場合、音声ファイルの分割が必要となる。どうせ答えあわせで動画をみるので、まずは動画を120秒に分割→音声に変換の手順とする。

ffmpeg -i K_111.mp4 -ss 30 -t 120 output.mp4 

これで先頭から30秒目より120秒を切り取ってoutput.mp4ファイルを作成する。簡単。コマンドラインでループさせればどれだけ長くても大丈夫。数時間前にソフトをAmazonで物色していた自分はもう忘れた。

これで下準備ができたので、改めて「Bing Speech API」を使う。