📣
OpenAIのWhisper APIを使って英語音声を文字起こしする
OpenAIの "Whisper"という Speech to text の最新モデルがAPI経由で利用可能になったというニュースを聞いたので、早速試してみました。
APIドキュメント
Whisperモデルの紹介
2023.3時点ではまだβ版のようです。
OpenAIでアカウントを作ってAPIキーを取得
説明は省略します。
コードを書く
コマンドラインで音声ファイルを受け取って、openaiのAPIを叩き、文字起こし結果を標準出力に吐くプログラムを書きます。
whisper.sh
#!/bin/bash
FILE=$1
curl https://api.openai.com/v1/audio/transcriptions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: multipart/form-data" \
-F language="en" \
-F response_format="text" \
-F model="whisper-1" \
-F file="@$FILE"
response_formatオプションを指定しない場合はjsonで出力されます。このjsonは {"text": "に文字起こし結果"}
な構造になっていてあまり嬉しみがないので、ここではresponse_format="text"
オプションを渡してtext形式出力を指定しています。
他にもいろいろなオプションがあるので試してみるとよいと思います。
音声素材を探す
適当な音声素材はないかと New York Timesのポッドキャスト"The Daily"から最新エピソードをダウンロードしてみました。
長い音声ファイルを分割して使う
ダウンロードした音声ファイルを食わせてみたら、ファイルサイズ上限(25 MB)に引っ掛かってエラーになったので、ffmpegを使って分割してみます。
長い音声ファイルを3分ごとに分割
$ ffmpeg -i ./the-daily.mp3 -f segment -segment_time 180 -c copy the-daily-%03d.mp3
実行してみる
取得したAPIキーを環境変数OPENAI_API_KEY
にセットします。
文字起こし結果は改行なしでツメツメになっていて見づらいので、'.' で改行します。
$ export OPENAI_API_KEY="sk-xxxx"
$ ./whisper.sh the-daily-000.mp3 | gsed -e 's/\. /\.\n/g'
結果
ぱっと見た感じほぼ100%の精度が出ているのではないでしょうか。すごい!
他社のSpeech to textを試したことがないので比較はできないですが、十分実用的だと感じました。
あらゆるポッドキャスト(に限らず音声素材)の文字起こしが自動生成できると考えると、夢が広がりますね。
Discussion