今、機械学習やディープラーニングなど、いわゆるAIと呼ばれている分野が注目されており、AIを使ったサービスもたくさん作られています。
その中で音声認識というものがあり、これは読んで字のごとく、人が喋った音声を認識して文字にする、というものです。
Google、IBM、MicrosoftなどがAPIを公開しているのでだれでも音声認識を使うことができます。

ということで実際にやってみました。
どうせなら動画内の音声をテキスト化してみようと思い、今回はIBM WatsonのSpeech to text APIを使って挑戦してみました。

ざっくり以下のような流れで作りました。

1.適当な音声入りmp4を用意
2.mp4から音声データのみ抽出
3.2で抽出した音声をAPIが認識可能なフォーマットに変換
4.3で変換した音声をAPIに投げる
5.APIのレスポンス表示

2の変換について、動画の音声コーデックといえばmp3やAACがほとんとですが、残念ながらAPIが対応していません。。。
なので、自前で変換してあげる必要があります。
変換にはFFMpegを使いましたが、最初なかなか上手くいきませんでした。。。
API側でかなり厳密にコーデックやチャンネル数、サンプリングレートをチェックされるので、しっかりと合わせないと怒られてしまいます。

そして、いざ結果を見てみると、思っていたより精度は高めな感じです。
日本語にも対応していて、ちゃんと漢字にも変換してくれます。
(多少エキセントリックな箇所や認識できていない箇所もありましたが)
IBMのAPIは音声認識したときの再生位置も返してくれるので、字幕とかチャプターインデックスの生成とかを自動で行ったり、動画内検索のためのインデックスを作るなど、いろんなことに応用できそうです。

YSD