OpenAI 轉錄
Spring AI 支援 OpenAI 的轉錄模型。
先決條件
您需要使用 OpenAI 建立 API 金鑰才能存取 ChatGPT 模型。在 OpenAI 註冊頁面 建立帳戶,並在 API 金鑰頁面 上產生權杖。Spring AI 專案定義了一個名為 spring.ai.openai.api-key
的組態屬性,您應該將其設定為從 openai.com 取得的 API 金鑰
值。匯出環境變數是設定該組態屬性的一種方式
自動組態
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 |
|
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 |
|
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。目前僅提供 whisper-1(由我們的開放原始碼 Whisper V2 模型提供支援)。 |
whisper-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 才能使用時間戳記粒度。支援以下任一或兩個選項:word 或 segment。注意:區段時間戳記沒有額外的延遲,但產生單字時間戳記會產生額外的延遲。 |
segment |
您可以覆寫常見的 spring.ai.openai.base-url 、spring.ai.openai.api-key 、spring.ai.openai.organization-id 和 spring.ai.openai.project-id 屬性。如果設定了 spring.ai.openai.audio.transcription.base-url 、spring.ai.openai.audio.transcription.api-key 、spring.ai.openai.audio.transcription.organization-id 和 spring.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(this.responseFormat)
.build();
AudioTranscriptionPrompt transcriptionRequest = new AudioTranscriptionPrompt(audioFile, this.transcriptionOptions);
AudioTranscriptionResponse response = openAiTranscriptionModel.call(this.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(this.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(this.audioFile, this.transcriptionOptions);
AudioTranscriptionResponse response = openAiTranscriptionModel.call(this.transcriptionRequest);
程式碼範例
-
OpenAiTranscriptionModelIT.java 測試提供了一些關於如何使用程式庫的一般範例。