【OpenAI/Whisper】日本語音声の文字起こしをする際に専門用語に弱い点を克服する方法。

はじめに

Whisperにlarge-v3という新しいモデルが追加されていたので試してみましたが専門用語に弱い点は改善されていませんでした。

その解決方法を紹介します。

音声はこちらから男性ナレーション、医療WEBドラマ医師役の音声をダウンロードさせて頂きました。

環境構築に関しては以前「Whisper」について書いた記事を見て下さい。
touch-sp.hatenablog.com

large-v2とlarge-v3の比較

まずはlarge-v2とlarge-v3の比較をしてみました。

large-v2

Pythonスクリプト「run.py」

import whisper
import sys

audio_file = sys.argv[1]

model = whisper.load_model("large-v2")
result =  model.transcribe(audio_file)
print(result["text"])

実行

python run.py talk.mp3

結果
血管収縮には血管閉合菌細胞内のカルシウム濃度が関与しており血管閉合菌細胞内へのカルシウム流入をブロックすれば血管収縮を抑制できますしかし近年カルシウム流入とは独立した経路としてロックが見出され血管収縮に深く関与していることが明らかになりました
「血管平滑筋細胞」という医学的専門用語が「血管閉合菌細胞」になっています。

large-v3

Pythonスクリプト「run.py」

import whisper
import sys

audio_file = sys.argv[1]

model = whisper.load_model("large-v3")
result =  model.transcribe(audio_file)
print(result["text"])

実行

python run.py talk.mp3

結果
血管収縮には血管閉合菌細胞内のカルシウム濃度が関与しており血管閉合菌細胞内へのカルシウム流入をブロックすれば血管収縮を抑制できますしかし近年カルシウム流入とは独立した経路としてロックが見出され血管収縮に深く関与していることが明らかになりました
large-v3になっても専門用語に弱い点は克服できていないようです。

ここから本題

専門用語をあらかじめ提示してあげれば良いようです。
Pythonスクリプト「run.py」

import whisper
import sys

audio_file = sys.argv[1]

model = whisper.load_model("large-v3")
result =  model.transcribe(
    audio_file,
    initial_prompt="血管平滑筋"
)
print(result["text"])

実行

python run.py talk.mp3

結果
血管収縮には血管平滑筋細胞内のカルシウム濃度が関与しており、血管平滑筋細胞内へのカルシウム流入をブロックすれば血管収縮を抑制できます。しかし近年、カルシウム流入とは独立した経路としてロックが見出され、血管収縮に深く関与していることが明らかになりました。
「血管平滑筋細胞」が正確に文字起こしされています。さらになぜか句読点もつけてくれるようになりました。

かなり実用的に使えると思います。


このエントリーをはてなブックマークに追加