Whisperの文字起こしで表記ゆれをなくす簡単な方法

公開日:2023/7/12更新日:2023/7/13

音声をテキストに変換するWhisperは、音声データをAPIにそのまま投げるだけで精度の高い文字起こしをしてくれるのですが、プロンプトを一緒に投げると、表記ゆれも簡単に解消してくれます。

例えば、人名や知名、社名や商品名などは、人間でさえ音声を聞いただけではどのように表記すればいいかわかりませんが、それはWhisperも同じです。

公式なやり方はWhisperのプロンプティングページにあり、「これは〇〇と〇〇についての音声です」の形式が紹介されていますが、実はキーワードとして単語だけ渡すだけで十分です。

具体的なコードは以下の通りです。

// フォームデータを作成
const transcriptionFormData = new FormData();
transcriptionFormData.set("file", resource); // 音声データをセット
transcriptionFormData.set("model", "whisper-1"); // モデルをwhisper-1にする
transcriptionFormData.set("language", "ja"); // 言語を日本語にする

// キーワードを用意
const keywords = "キーワード1, キーワード2, キーワード3";

// キーワードをセット
transcriptionFormData.set("prompt", `キーワード: "${keywords}"`);

// 文字起こしを実行
const res = await fetch("https://api.openai.com/v1/audio/transcriptions", {
  headers: {
    Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
  },
  method: "POST",
  body: transcriptionFormData,
});

// 文字起こしの結果を取得
const result = (await res.json()).text;

特に形式などはないので、Whisperが認識できるように文字列を渡せばいいのですが、この形式にすることでメタタグとしても使えるなど、再利用性があっておすすめです。