初心者でも分かる!Whisper APIの使い方ガイド

Whisper APIの使い方を初心者にもわかりやすく説明しました!
はじめに
OpenAIのWhisper APIとChatGPT APIを使ってみたので、その概要を紹介しようと思います。
whisper について
Whisperとは音声データをテキストデータに変換するライブラリであり、github上でそのモデルが公開されています。
しかし、CPUを使って音声データからテキストデータの変換すると時間がかかってしまいます。例えば、性能が最も高いLargeモデルでmp3のファイルを使用する場合、音声データの長さの約2倍の実行時間がかかってしまいます。そこで、今回はGPUを用意することなく、$0.006/minという安価で実行できるということでAPIを使用しました。
準備
各種モジュールのインポートと使用する音声ファイルの処理を行います。Whisper APIはOpenAIのAPIキーが必要になるので”Your API key”を置き換えてください。
Whisper APIに入力できる音声データのファイルサイズの上限が25MBなので、長い音声データでは分割が必要となります。ここでは20分のセグメントに分けて実行しています。
import openai
from pydub import AudioSegment
openai.api_key = "Your API key"
sound_file = AudioSegment.from_file(input_folder_path)
sound_length = duration = sound_file.duration_seconds
print(f"length: {sound_length}\n")
time_segment_length = 20 * 60 * 1000
current_time_index = 0
while current_time_index * time_segment_length < sound_length * 1000:
data_segment = sound_file[current_time_index*time_segment_length:(current_time_index+1)*time_segment_length]
tmp_file_path = os.path.join(adjusted_audio_folder_path, filename.replace(extension, f"_{current_time_index}.mp3"))
data_segment.export(tmp_file_path, format="mp3")
print(f"{current_time_index}th data was exported.\n")
current_time_index += 1
Whisper APIによる音声からテキストへの変換
APIでwhisperを使う場合、下記のようにopenai.Audio.transcribe関数を実行するだけです。このため実装は極めて簡単ですが、それと同時に、自分で調整できるパラメータはあまり多くありません。
with open(current_file, "rb") as f:
transcript = openai.Audio.transcribe(
file=f,
model="whisper-1",
language="ja",
response_format="verbose_json",
prompt = "この音声では3人の人が話をしています。その録画の音声データです。"
)
この関数の中には以下のような引数があります。
1. file (必須): テキストに変換する音声のファイル
2.model (必須): 現在(2023/10)はwhisper-1のみ
3.language: 入力音声の言語。ISO-639-1形式で指定
4.response_format: どのような形で出力を行うか。verbose_jsonで時間等全データを出力
5.temperature: 0から1の値で小さいほど決定論的
6.prompt: 最初の1セグメントの部分に与える出力のヒント
質問に対して正確な答えを返すという前提のもとでは5は変えず、性能向上に大きく寄与するのは6になります。ここではpromptという引数で与えている文章で句読点の使い方を前提知識として入れるという操作を行っています。
今回のように句読点の使い方を与えるだけであれば、句読点の使い方がわかるような文章であればなんでも構いません。実際の結果が下記のようになります。
句読点が明確な形で出てくることがわかります。この他にも使用する固有名詞等をpromptの中で与えることによって、whisperがその固有名詞を認識させるといった使い方もできるので色々試してみてください。
