OpenAI 転写

Spring AI は OpenAI の転写モデル (英語) をサポートします。

前提条件

ChatGPT モデルにアクセスするには、OpenAI で API キーを作成する必要があります。OpenAI サインアップページ (英語) でアカウントを作成し、API キーページ (英語) でトークンを生成します。Spring AI プロジェクトでは、spring.ai.openai.api-key という名前の構成プロパティが定義されており、これを openai.com から取得した API Key の値に設定する必要があります。環境変数をエクスポートすることは、その構成プロパティを設定する 1 つの方法です。

自動構成

Spring AI は、OpenAI トランスクリプションクライアント用の Spring Boot 自動構成を提供します。これを有効にするには、プロジェクトの Maven pom.xml ファイルに次の依存関係を追加します。

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>

または、Gradle build.gradle ビルドファイルに保存します。

dependencies {
    implementation 'org.springframework.ai:spring-ai-openai-spring-boot-starter'
}
Spring AI BOM をビルドファイルに追加するには、"依存関係管理" セクションを参照してください。

転写プロパティ

接続プロパティ

接頭辞 spring.ai.openai は、OpenAI への接続を可能にするプロパティ接頭辞として使用されます。

プロパティ

説明

デフォルト

spring.ai.openai.base-url

接続先の URL

api.openai.com (英語)

spring.ai.openai.api-key

API キー

-

spring.ai.openai.organization-id

オプションで、API リクエストに使用する組織を指定できます。

-

spring.ai.openai.project-id

必要に応じて、API リクエストに使用するプロジェクトを指定できます。

-

複数の組織に属しているユーザー(または従来のユーザー API キーを使用してプロジェクトにアクセスしているユーザー)の場合は、オプションで、API リクエストに使用する組織とプロジェクトを指定できます。これらの API リクエストからの使用量は、指定された組織とプロジェクトの使用量としてカウントされます。

プロパティの構成

プレフィックス spring.ai.openai.audio.transcription は、OpenAI 転写モデルの再試行メカニズムを構成できるプロパティプレフィックスとして使用されます。

プロパティ 説明 デフォルト

spring.ai.openai.audio.transcription.base-url

接続先の URL

api.openai.com (英語)

spring.ai.openai.audio.transcription.api-key

API キー

-

spring.ai.openai.audio.transcription.organization-id

オプションで、API リクエストに使用する組織を指定できます。

-

spring.ai.openai.audio.transcription.project-id

必要に応じて、API リクエストに使用するプロジェクトを指定できます。

-

spring.ai.openai.audio.transcription.options.model

使用するモデルの ID。現在、ウィスパー 1 (オープンソースの Whisper V2 モデルを搭載) のみが利用可能です。

ささやき -1

spring.ai.openai.audio.transcription.options.response-format

トランスクリプト出力の形式。json、text、srt、verbose_json、vtt のいずれかのオプションで指定します。

json

spring.ai.openai.audio.transcription.options.prompt

モデルのスタイルをガイドしたり、前のオーディオセグメントを継続したりするためのオプションのテキスト。プロンプトはオーディオの言語と一致する必要があります。

spring.ai.openai.audio.transcription.options.language

入力オーディオの言語。入力言語を ISO-639-1 形式で指定すると、精度と遅延が向上します。

spring.ai.openai.audio.transcription.options.temperature

サンプリング温度は 0 から 1 までです。0.8 のような高い値を設定すると出力はよりランダムになり、0.2 のような低い値を設定すると出力はより集中的かつ決定論的になります。0 に設定すると、モデルは対数確率を使用して、特定のしきい値に達するまで温度を自動的に上げます。

0

spring.ai.openai.audio.transcription.options.timestamp_granularities

この転写に入力するタイムスタンプの粒度。タイムスタンプの粒度を使用するには、response_format を verbose_json に設定する必要があります。単語またはセグメントのいずれかまたは両方のオプションがサポートされています。注: セグメントタイムスタンプには追加の遅延はありませんが、単語タイムスタンプを生成すると追加の遅延が発生します。

セグメント

共通の spring.ai.openai.base-urlspring.ai.openai.api-keyspring.ai.openai.organization-idspring.ai.openai.project-id プロパティをオーバーライドできます。spring.ai.openai.audio.transcription.base-urlspring.ai.openai.audio.transcription.api-keyspring.ai.openai.audio.transcription.organization-idspring.ai.openai.audio.transcription.project-id プロパティが設定されている場合は、共通のプロパティよりも優先されます。これは、異なるモデルや異なるモデルエンドポイントに異なる OpenAI アカウントを使用する場合に便利です。
spring.ai.openai.transcription.options で始まるすべてのプロパティは、実行時にオーバーライドできます。

ランタイムオプション

OpenAiAudioTranscriptionOptions クラスは、転写を行うときに使用するオプションを提供します。起動時には、spring.ai.openai.audio.transcription で指定されたオプションが使用されますが、実行時にこれらを上書きできます。

例:

OpenAiAudioApi.TranscriptResponseFormat responseFormat = OpenAiAudioApi.TranscriptResponseFormat.VTT;

OpenAiAudioTranscriptionOptions transcriptionOptions = OpenAiAudioTranscriptionOptions.builder()
    .withLanguage("en")
    .withPrompt("Ask not this, but ask that")
    .withTemperature(0f)
    .withResponseFormat(responseFormat)
    .build();
AudioTranscriptionPrompt transcriptionRequest = new AudioTranscriptionPrompt(audioFile, transcriptionOptions);
AudioTranscriptionResponse response = openAiTranscriptionModel.call(transcriptionRequest);

手動構成

spring-ai-openai 依存関係をプロジェクトの Maven pom.xml ファイルに追加します。

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-openai</artifactId>
</dependency>

または、Gradle build.gradle ビルドファイルに保存します。

dependencies {
    implementation 'org.springframework.ai:spring-ai-openai'
}
Spring AI BOM をビルドファイルに追加するには、"依存関係管理" セクションを参照してください。

次に OpenAiAudioTranscriptionModel を作成します

var openAiAudioApi = new OpenAiAudioApi(System.getenv("OPENAI_API_KEY"));

var openAiAudioTranscriptionModel = new OpenAiAudioTranscriptionModel(openAiAudioApi);

var transcriptionOptions = OpenAiAudioTranscriptionOptions.builder()
    .withResponseFormat(TranscriptResponseFormat.TEXT)
    .withTemperature(0f)
    .build();

var audioFile = new FileSystemResource("/path/to/your/resource/speech/jfk.flac");

AudioTranscriptionPrompt transcriptionRequest = new AudioTranscriptionPrompt(audioFile, transcriptionOptions);
AudioTranscriptionResponse response = openAiTranscriptionModel.call(transcriptionRequest);

サンプルコード