Azure OpenAI 転写

Spring AI は Azure ウィスパーモデル (英語) をサポートします。

前提条件

Azure ポータル (英語) の Azure OpenAI サービスセクションから、Azure OpenAI endpoint および api-key を取得します。Spring AI は、Azure から取得した API Key の値に設定する必要がある spring.ai.azure.openai.api-key という構成プロパティを定義します。また、Azure でモデルをプロビジョニングするときに取得したエンドポイント URL に設定する必要がある spring.ai.azure.openai.endpoint という構成プロパティもあります。環境変数をエクスポートすることは、その構成プロパティを設定する 1 つの方法です。

自動構成

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

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

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

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

転写プロパティ

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

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

spring.ai.azure.openai.audio.transcription.enabled

Azure OpenAI 転写モデルを有効にします。

true

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

使用するモデルの ID。現在は whisper のみが使用可能です。

ささやく

spring.ai.azure.openai.audio.transcription.options.deployment-name

モデルがデプロイされる デプロイ名。

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

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

json

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

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

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

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

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

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

0

spring.ai.azure.openai.audio.transcription.options.timestamp-granularities

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

セグメント

ランタイムオプション

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

例:

AzureOpenAiAudioTranscriptionOptions.TranscriptResponseFormat responseFormat = AzureOpenAiAudioTranscriptionOptions.TranscriptResponseFormat.VTT;

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

手動構成

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

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

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

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

次に AzureOpenAiAudioTranscriptionModel を作成します

var openAIClient = new OpenAIClientBuilder()
    .credential(new AzureKeyCredential(System.getenv("AZURE_OPENAI_API_KEY")))
    .endpoint(System.getenv("AZURE_OPENAI_ENDPOINT"))
    .buildClient();

var azureOpenAiAudioTranscriptionModel = new AzureOpenAiAudioTranscriptionModel(openAIClient, null);

var transcriptionOptions = AzureOpenAiAudioTranscriptionOptions.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 = azureOpenAiAudioTranscriptionModel.call(transcriptionRequest);