はじめに

近年、AIによる音声認識技術は目覚ましい進化を遂げています。中でもOpenAIが開発したWhisperは、非常に高い精度で音声をテキストに変換できることで注目を集めています。この強力な機能をAPI経由で手軽に利用できるのが「Whisper API」です。

会議の議事録作成、インタビューの文字起こし、コールセンターの通話分析など、これまで多大な時間と労力を要していた作業を自動化し、業務効率を劇的に改善できる可能性があります。本記事では、Whisper APIを実際の業務に組み込むための具体的な実装方法を、初中級者の開発者向けにわかりやすく解説します。

Whisper APIの利用準備と基本操作

Whisper APIを利用するには、まずOpenAIのプラットフォームでAPIキーを取得する必要があります。アカウント登録後、API keysのページから新しいキーを発行してください。次に、PythonでAPIを操作するための公式ライブラリをインストールします。

pip install openai

準備が整ったら、早速音声ファイルを文字起こししてみましょう。Whisper APIはmp3, wav, m4aなど多様な形式に対応していますが、ファイルサイズが25MB以下である必要があります。以下は、ローカルにあるaudio.mp3を文字起こしする基本的なコードです。

from openai import OpenAI

client = OpenAI(
    # APIキーは環境変数などから安全に読み込むことを推奨
    api_key="YOUR_OPENAI_API_KEY"
)

audio_file = open("audio.mp3", "rb")
transcription = client.audio.transcriptions.create(
  model="whisper-1", 
  file=audio_file
)

print(transcription.text)

このシンプルなコードだけで、驚くほど高精度なテキストデータが得られます。まずは手元の短い音声ファイルでその性能を体感してみてください。

実践テクニック:長尺音声ファイルへの対応

Whisper APIの大きな制約の一つが、25MBのファイルサイズ上限です。長時間の会議やインタビューの録音は、このサイズを優に超えてしまいます。この課題を解決する最も一般的なアプローチは、音声ファイルを小さなチャンク(断片)に分割し、それぞれをAPIに送信する方法です。

Pythonでは、音声処理ライブラリpydubを使うとこの処理を簡単に行えます。まずはライブラリをインストールしましょう(別途FFmpegのインストールが必要な場合があります)。

pip install pydub

以下のコードは、音声ファイルを10分(600,000ミリ秒)ごとのチャンクに分割し、それぞれをWhisper APIで処理する例です。これにより、実質的に任意の長さの音声を扱えるようになります。

from pydub import AudioSegment

audio = AudioSegment.from_mp3("long_audio.mp3")
chunk_length_ms = 10 * 60 * 1000  # 10分
chunks = [audio[i:i + chunk_length_ms] for i in range(0, len(audio), chunk_length_ms)]

full_text = ""
for i, chunk in enumerate(chunks):
    chunk_filename = f"chunk{i}.mp3"
    chunk.export(chunk_filename, format="mp3")
    
    with open(chunk_filename, "rb") as audio_file:
        transcription = client.audio.transcriptions.create(
            model="whisper-1",
            file=audio_file
        )
        full_text += transcription.text + " "

print(full_text)

分割したチャンクのテキストを結合することで、長尺音声全体の文字起こし結果を得ることができます。業務利用において必須のテクニックと言えるでしょう。

文字起こし精度を向上させるオプション活用術

Whisper APIはそのままでも高精度ですが、いくつかのオプションを指定することで、さらに精度を高め、用途に応じた出力を得ることができます。特に重要なオプションを3つ紹介します。

  • language: 音声の言語をISO-639-1形式(例: ja, en)で明示的に指定します。これにより、APIが言語を誤認識するのを防ぎ、特に多言語が混在する可能性がある場合に有効です。
  • prompt: 専門用語、固有名詞、略語など、モデルが認識しにくい可能性のある単語をヒントとして与えることができます。例えば、社内用語や製品名をプロンプトに含めることで、それらの単語の認識率が大幅に向上します。
  • response_format: 出力形式を指定します。デフォルトはjsonですが、単純なテキストが欲しい場合はtext、字幕ファイルとして利用したい場合はsrtやvttが便利です。特にverbose_jsonを指定すると、単語ごとのタイムスタンプや確率など、詳細な情報が得られ、議事録と音声の突き合わせなどに役立ちます。

これらのオプションを活用したリクエストの例を以下に示します。

transcription = client.audio.transcriptions.create(
    model="whisper-1",
    file=audio_file,
    language="ja",
    prompt="株式会社AI-Biz, テックカンファレンス, プロダクトX",
    response_format="verbose_json"
)

これらのオプションを適切に使いこなすことが、Whisper APIを業務レベルで活用する鍵となります。

業務利用における注意点とコスト管理

Whisper APIを本格的に業務利用する際には、技術的な側面だけでなく、コストとセキュリティについても考慮する必要があります。APIの利用料金は、音声の長さに応じて課金されます(2023年時点では$0.006/分)。例えば、1時間の会議音声を文字起こしすると約$0.36かかります。利用頻度や音声の長さを予測し、コストが予算内に収まるか事前に試算することが重要です。

また、長尺ファイルの処理は時間がかかるため、ユーザーを待たせないように非同期処理を導入するのが一般的です。ファイルがアップロードされたらバックグラウンドジョブを起動し、処理が完了したらユーザーに通知する、といったアーキテクチャを検討しましょう。

セキュリティとプライバシーも極めて重要です。API経由で送信されたデータは、OpenAIのポリシーによりモデルの学習には使用されませんが、機密情報や個人情報を含む音声を扱う場合は、自社のセキュリティポリシーと照らし合わせ、リスクを十分に評価する必要があります。契約内容やOpenAIの最新のデータ利用ポリシーを必ず確認してください。

まとめ

本記事では、Whisper APIを使って高精度な音声文字起こし機能を業務に組み込むための実践的なガイドを提供しました。基本的な使い方から、長尺ファイルに対応するための音声分割、そしてpromptやlanguageオプションを活用した精度向上のテクニックまで、具体的なコードを交えて解説しました。

Whisper APIは、議事録作成の自動化やデータ分析など、様々な業務の効率化に貢献するポテンシャルを秘めています。この記事で紹介したテクニックをベースに、コスト管理やセキュリティにも配慮しながら、ぜひ自社のビジネスにAI音声認識の力を取り入れてみてください。