見出し画像

生成AIで長時間の音声録音を、更に精度高く文字起こしする (WhisperとGoogleColab)

OpenAIのAPI(Whisper)、Google Colab、Pythonを活用して、長時間の動画や音源データの自動文字起こしをする試みについての続きです。(前回の記事)

実際の業務でも充分活用できるのがわかったので、Whisperによる文字起こしの精度や、パフォーマンスを改善するために、少しだけカスタマイズしてみました。

Whisperのパラメーターにヒントを与える。

Whisperの文字起こし結果を見ていると、技術的な専門用語やビジネス的なキーワードの書き起こし精度が低かったので、改善できないかと調べました。

AI SHIFT社の技術ブログで「【AI Shift Advent Calendar 2022】Whisperによる音声認識のTips」という記事があり、その記事中に「文脈情報の付与による認識結果の改善」という項目があるのを見つけました。

Whisperの音声認識関数をコールする際、オプションパラメーターを指定できるようです。「initial_prompt」に、日本語や英語で認識のヒントを与えることで、精度があがるとのことでした。

その際、一度initial_promptによるヒントを与えずに、Whisperでの書き起こしを生成してみて、頻出単語から、AIが理解しやすくなるようなキーワードを設定したところ、格段に精度が上がりました。自分は下記のように設定しました。(任意の位置で改行しています)

#音声認識 result = 
model.transcribe(
audio, verbose=True, language=lang, 
initial_prompt='Unity ゲーム エンジニア 開発')

この例では、ゲームエンジニアがトークしている映像や音声に対して、上記のinitial_promptでバッチリと3DCGやゲーム開発の技術用語を交えて書き起こしてくれました。

AI SHIFTのブログによると、initial_promptで「話者変更」にも対応できるとのことでした。少し試してみましたが、話者変更については検知できなかったので、もう少し調べてみたいなと思いました。

Whisperで句読点が書き起こされない場合

書き起こし対象の音源の音質にもよるのですが、Whisperの書き起こし結果で「、。」などの句読点が書きれないことがあります。特に改行直前などが「私もそう思います」などで改行されているパターンです。
これもinitial_promptにヒントを与えてあげると、句読点込みで書き起こしてくれました。具体的には

C# Unity ゲーム エンジニア 開発 です。 ます。 でした。

などです。

これも一度、initial_promptなしで書き起こした文章に対して、文法的に正しくないので、正しくなるようなヒントを補足をしてあげると、精度があがるような気がしました。

例えば、会話の中に「ありがとうございます」という単語が多いけど、句読点がついていない場合は

「ありがとうございます。」

とinitial_promptにヒントを与えるなどです。全部の訂正箇所を指定する必要はないので、目立ったところを2,3つ指定するだけでも、全体的に精度が向上しました。

WhisperとNotionAIの相性で更に精度が向上

上記のようにinitial_promptで書き起こし精度を向上させた上で、文章を生成させ、そのざっと書き起こしをした文章を、NotionAIで整形をすると、まるでログミーのような書き起こし結果になります。

具体的には「句読点や文法や単語の補足」「インタビュー時における会話を、日本語的に正しい文法に変える」「話し言葉をフォーマルに変換」などです。

ここらへんは、Whisperで書き起こした結果を一時ファイルに保存し、一行一行Pythonでループしながら、OpenAIからChatGPTの関数をコールして整形をかけたほうが、ChatGPTに対して細かく整形指示が出せるので、更に精度が高くなると思います。このあたりは、今後の改善案としたいなと思いました。

Whisperの一番便利なところ

Whisperの一番便利なところは「あのー」「えっとー」「そうですねー」などの口癖や考え中の言葉をカットして書き起こしてくれるところだと思います。

ZOOMやYoutubeでも書き起こしがありますが、上記のような口癖の他、意味のない単語や単語の繰り返しなども忠実に描き起こされていて、文章量が増えています。

Whisperの書き起こしは、そういった「文章的に意味がない言葉」をほぼカットしてくれるので、文章の整形コストや編集コストが大幅に減るのが、使っていて便利です。

MP3のアップロード先をGoogleDriveに変えた。

また、地味にMP3をGoogle Colabの一時フォルダにアップするのに時間がかかっていたので、GoogleDriveからアクセスするように変えました。Pythonは、ファイル操作をプログラマに意識せずに作られているようで、ストリームオープンとかクローズなどが見えないようになっているようです。JavaやC#を書いている習慣からすると、あまりの簡潔さに驚愕しました。

より正確な書き起こしに必要なこと

WhisperのAPIは現在もアップデートが進んでおり、その精度は今後さらに向上すると思われます。とは言え、そもそも音声の録音状況や音質を改善することによって、精度を大幅に向上させることができます。

  • iPhoneなどのスマホで録音せず、無指向性マイクロフォンやピンマイクで録音

  • 反響音が大きい会議室ではなく、小さめの会議室で録音する

  • ノイズが入らないように空調を弱める

  • 滑舌良くはっきり喋ってもらう

  • 社内用語や略語を使わず、一般的な単語で話してもらう

などがそれにあたります。結局、人間が耳で聞いても聴き取れない音源は、Whisperにかけても認識されずらいのだと思います。

自分は更に、インタビュー前後の不必要な箇所は、AdobeのAuditionを使用してカットし、DAW(LogixPro)でボイス系のイコライザをかけて、声の波形を増幅させています。さらに、iZOTOPE社のプラグインを使用して空調ノイズやリップノイズを除去しています。また、リミッターをかけて、声が音割れしないようにし、全体的な声のゲインを上げて、マスタリングして書き出しています。

これらの処理を行うことで、Whisperの書き起こし精度が大幅に向上します。普通に聞いていて聞きづらい単語でも、マスタリングすることで耳で聞いても聞き取りやすくなり、Whisperの書き起こしも必然的に精度が向上します。

ふりかえり

前にも述べたように、生成AIツールは単体では生産性を飛躍的に向上させることはできません。そのため、望ましいニーズに合わせるために、AIツールに限らず、様々なツールを組み合わせて、結果に近づけるのが現時点でのより良い方法なのかなと思いました。

改善点がいろいろ見つかったので、更に改良していけたらと思います。

この記事が参加している募集

ライターの仕事

AIとやってみた

この記事が気に入ったらサポートをしてみませんか?