ChatGPT Whisper APIで音声を文字起こしする方法

さまざまなSpeech-to-Text

音声をテキストに文字起こしするSpeech-to-Textサービスとしては、下記のようなものがあります。

ここでは、ChatGPTのAPIを使用して、音声の文字起こしを行なってみます。

ChatGPT WhisperAPIを用いたSpeech-to-Text

全体の流れは次のようになります。

  1. ChatGPT APIを使用できるようにする
  2. ChatGPTのAPIを呼ぶPythonプログラムを作成する
  3. 作成したプログラムを実行して、文字起こしする

ChatGPT APIの始め方

ChatGPTの公式サイトにアクセスし、右上の[Sign up]からアカウントを作成します。

アカウント作成後、ログインした画面で、「API」を選択します。

OpenAI API

右上のアカウント部分をクリックし、[Manage account] – [Billing] – [Preferences]を開いて請求書の住所などを登録します。

OpenAI API Preferences

その後、画面上部の「Upgrade」をクリックして、クレジットカードを登録します。

以上で登録作業は完了です。

次にAPIキーを作成します。

まず、[Settings] – [Organization settings]の「Organization name」と「Organization ID」を確認しておきます。

OpenAI API Organization settings

次に、[API keys]を開き、[Create new secret key]をクリックして、APIキーを作成します。
Default organizationは、先ほど確認した「Organization name」になっていることを確認します。

OpenAI API key

ChatGPTのWhisper APIでSpeech-to-Textするプログラムを作成する

OpenAIの公式のガイドが用意されています。これを参照すると簡単にWhisper APIを使うことができます。

まずは、PythonからOpenAIのライブラリを利用するために、ライブラリをインストールします。

% pip install openai

次にPythonプログラムを作成します。ここで、事前に確認した「Organization ID」と、作成したAPIキーを使用します。

import os
import openai

# ============================================================
# API情報
# ============================================================

openai.organization = "ORGANIZATION_ID"
openai.api_key      = "OPENAI_API_KEY"

# ============================================================
# 音声ファイルの文字起こし関数
# ============================================================

def speech_to_text(filepath):

    audio_file= open(filepath, "rb")
    transcript = openai.Audio.transcribe("whisper-1", audio_file) 
    txt = transcript['text'] 
    f = open(filepath + ".txt", "w") 
    f.write(txt) 
    f.close()

# ============================================================
# 関数実行
# ============================================================

# 音声ファイルのパスを指定
filepath = "/path/to/file/audio.mp3"

# 関数実行
speech_to_text(filepath)

ChatGPTのWhisper APIでSpeech-to-Textする

上のPythonコードを実行すると、指定したmp3ファイルの末尾に.txtをつけたテキストが作成されます。

対応する音声ファイルの形式は、mp3mp4mpegmpgam4awavwebmです。

一度に処理できるファイルサイズは25MBまでです。音声ファイルがこれより大きい場合は、事前に分割しておきます。

分割には、PyDub open source Python packageを使用します。

% pip install pydub
from pydub import AudioSegment

song = AudioSegment.from_mp3("good_morning.mp3")

# PyDub handles time in milliseconds
ten_minutes = 10 * 60 * 1000

first_10_minutes = song[:ten_minutes]

first_10_minutes.export("good_morning_10.mp3", format="mp3")

まとめ

この記事では、ChatGPT Whisper APIで音声を文字起こしする方法を解説しました。

実際に試したところ、かなり精度の高い文字起こしが可能で、若干の後処理・修正が必要ですが、十分実用できる性能でした。

会議の文字起こしなどに便利に使えます。ぜひお試しください。