Gemini 1.5 Proが音声ファイルにも対応したということで、Whisper大好きマンとして、どれほどのものなのかを簡単に調査したいと思います。
利用の仕方
Vertex AIから利用ができました。Google AI Studioからも利用できるようです。詳細はこちら。
また今回検証する音声は以下のエネルギーに関する部分を利用します。
さっそく文字起こしを試してみる
プロンプトによって出力結果に大きく影響がする感じがあります。まずは捻りのない感じでストレートなプロンプトで文字起こしをしてみます。
内容が要約された感じですね。一般的な要約とは異なり、一定の区間ごとに意味を要約してくれています。
ただ私のイメージしていた文字起こしは、発言内容をそのまま文字に起こすアウトプットでした。プロンプトを少し変えて期待するアウトプットに近づけてみます!
発言内容をそのまま文字起こしさせる
発言内容はそのままという旨&出力形式をプロンプトで指定してみました。
そうそう!よくみる文字起こしはこんな感じですね!Whisperと違って、プロンプト指示だけでタイムスタンプも紐付けられるのは良いですね。
安宅さんの「なんちゅうか」みたいな独特の言い回しもちゃんと再現されています笑
ただよくよくみてみると、発言区間の中には二人の話者の発言内容が含まれていたりします。議事録として利用したいときは、誰が発言したのかを把握したいニーズもあると思うので話者分離をしたいところ。
実際にできるのか試してみました!
話者分離をした文字起こし
「発言者を分離すること」という指示を加えています。
指示は雑だったのですが、割とちゃんと言うこと聞いてくれました笑
最初の話者1が佐々木さんで、話者2が安宅さんと言う話者の一貫性も保たれているようです(今回の音声データは3分なので、もっと長くなったら分からないです)
様々な出力形式を試す
文字起こししたコンテンツを、例えば字幕で利用したいとなった場合はsrt形式が良かったりすると思います。またプログラムで処理しやすいようにjson形式ニーズもありますね!それをGemini 1.5 proでも再現できるのかについて試していきます。
srt形式
srt形式で出力できました!ただし実はこの出力を得るまでに何回かリトライをしており、安定性を得るためにはちゃんとしたプロンプトを書く必要がありそうです。
json形式
ここでは発言者、タイムスタンプ、発言内容がひとまとまりとなったjson形式での出力を試みようと思います。以下のようなイメージ。
{
"transcripts": [
{
"speaker": "Speaker 1",
"start_time": "00:00:01.000",
"end_time": "00:00:04.000",
"content": "こんにちは、皆さん。"
},
{
"speaker": "Speaker 2",
"start_time": "00:00:05.000",
"end_time": "00:00:07.000",
"content": "音声認識技術についてお話しします。"
},
{
"speaker": "Speaker 1",
"start_time": "00:00:08.000",
"end_time": "00:00:12.000",
"content": "今日はその基本的な概念と応用例に焦点を当てていきます。"
}
]
}
いい感じにできました!
おわりに
個人的な感想としては、Whisperレベル(あるいはそれ以上?)の文字起こし品質と論文ではありましたが、確かにそうかも!と言う感じでした。
またWhisperとは異なり、プロンプトレベルで様々な文字起こしタスクに柔軟に対応できる点で、結構面白さを感じてます。
一方でWhisperと比較して、以下は気になるところです。
とはいえ、今後の応用可能性はかなりあるんじゃないでしょうか!引き続きいろいろと模索してみたいと思います!