見出し画像

OpenAI API の Whisper API の使い方

「OpenAI」の 記事「Speech to text」が面白かったので、軽くまとめました。

1. Whisper API

「OpenAI API」の「Whisper API」 (Speech to Text API) は、最先端のオープンソース「whisper-large-v2」をベースに、文字起こしと翻訳の2つのエンドポイントを提供します。

・音声を文字起こし
・音声を英語に翻訳して文字起こし

ファイルサイズは最大25MBで、以下のファイル形式をサポートしています。

mp3, mp4, mpeg, mpga, m4a, wav, webm

2. 使用料金

使用料金は、以下で確認できます。

3. 音声を文字起こし

Google Colabでの実行手順は、次のとおりです。

(1) パッケージのインストール。

# パッケージのインストール
!pip install openai

(2) 環境変数の準備。
以下のコードの <OpenAI_APIのトークン> にはOpenAI APIのトークンを指定します。(有料)

import os
os.environ["OPENAI_API_KEY"] = "<OpenAI_APIのトークン>"

(3) 左端のフォルダアイコンでファイル一覧を表示し、オーディオファイル (audio.wav) をアップロード。

(4) 音声を文字起こし。
音声を文字起こしするには、openai.Audio.transcribe() で入力ファイルを指定します。

import openai
audio_file= open("audio.wav", "rb")
transcript = openai.Audio.transcribe("whisper-1", audio_file)
print(transcript["text"])
プレイヤーキャラクターは宮殿を占拠した邪悪なクリーチャーに遭遇する。

レスポンスのデフォルトは「JSON」です。

{
  "text": "\u30d7\u30ec\u30a4\u30e4\u30fc\u30ad\u30e3\u30e9\u30af\u30bf\u30fc\u306f\u5bae\u6bbf\u3092\u5360\u62e0\u3057\u305f\u90aa\u60aa\u306a\u30af\u30ea\u30fc\u30c1\u30e3\u30fc\u306b\u906d\u9047\u3059\u308b\u3002"
}

パラメータは、次のとおりです。

・file : string (必須) - 文字起こしする音声ファイル
・model : string (必須) - モデルID (現在は"whisper-1"のみ)
・prompt : string - モデルのスタイルをガイドするプロンプト
response_format : string - 出力ファイル形式
(json, text, srt, verbose_json, vtt / デフォルト:json)
・temperature : number - 0〜1のサンプリング温度。0.8のような高い値は出力をよりランダムにし、0.2のような低い値はより決定論的になる (デフォルト:0)
・language : string - 入力音声の言語。ISO-639-1形式で指定することで、精度と待ち時間が改善。

4. 音声を英語に翻訳して文字起こし

音声を英語に翻訳して文字起こしするにはopenai.Audio.translate() で入力ファイルを指定します。

import openai
audio_file= open("audio.mp3", "rb")
transcript = openai.Audio.translate("whisper-1", audio_file)
Player characters will encounter evil creatures that have taken over the palace.

5. より長いオーディオファイルの翻訳

「Whisper API」でサポートするファイルサイズは最大25MBです。よりも長いオーディオファイルを翻訳する場合は、25MB以下のチャンクに分割するか、圧縮オーディオフォーマットを使用する必要があります。

最高のパフォーマンスを得るには、一部のコンテキストが失われる可能性があるため、音声を文の途中で分割しないようにしてください。これを処理する1つの方法は、「PyDub」になります。

from pydub import AudioSegment

song = AudioSegment.from_mp3("good_morning.mp3")
ten_minutes = 10 * 60 * 1000
first_10_minutes = song[:ten_minutes]
first_10_minutes.export("good_morning_10.mp3", format="mp3")

6. プロンプトによる文字起こしの品質向上

「Whisper API」の文字起こしの品質を向上させるためにプロンプトを使用することもできます。

(1) プロンプトは、モデルが音声で誤認識しがちな特定の単語や頭字語を修正するのに非常に役立ちます。次のプロンプトは、「GDP 3」「DALI」と書き起こされていた単語を「DALL·E」「GPT-3」に改善します。

The transcript is about OpenAI which makes technology like DALL·E, GPT-3, and ChatGPT with the hope of one day building an AGI system that benefits all of humanity

(2) セグメントに分割されたファイルのコンテキストを保持するために、前のセグメントのトランスクリプトを使用してモデルにプロンプトを出すことができます。 これにより、モデルが以前の音声からの関連情報を使用するため、トランスクリプトがより正確になります。モデルは、プロンプトの最後の 224 トークンのみを考慮し、それより前のものは無視します。

(3) モデルがトランスクリプトの句読点をスキップする場合があります。これは、句読点を含む単純なプロンプトを使用することで回避できます。

Hello, welcome to my lecture.

(4) モデルは、一般的なフィラー (つなぎ言葉) を音声から除外する場合もあります。フィラーをトランスクリプトに残しておきたい場合は、それらを含むプロンプトを使用できます。

Umm, let me think like, hmm... Okay, here's what I'm, like, thinking."

(5) 一部の言語は、簡体字中国語や繁体字中国語など、さまざまな方法で記述できます。モデルは、トランスクリプトに必要な文体を既定で常に使用するとは限りません。これは、好みの文体でプロンプトを使用することで改善できます。



この記事が気に入ったらサポートをしてみませんか?