OpenAI 轉錄
Spring AI 支援 OpenAI 的轉錄模型。
先決條件
您需要建立 OpenAI API 金鑰來訪問 ChatGPT 模型。在 OpenAI 註冊頁面 建立一個賬戶,並在 API 金鑰頁面 生成令牌。Spring AI 專案定義了一個名為 spring.ai.openai.api-key
的配置屬性,您應將其設定為從 openai.com 獲取的 API 金鑰的值。匯出環境變數是設定該配置屬性的一種方法。
自動配置
Spring AI 自動配置、Starter 模組的 artifact 名稱發生了重大變化。請參閱 升級說明 獲取更多資訊。 |
Spring AI 為 OpenAI 轉錄客戶端提供了 Spring Boot 自動配置。要啟用它,請將以下依賴項新增到您專案的 Maven pom.xml
檔案中
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-openai</artifactId>
</dependency>
或新增到您的 Gradle build.gradle
構建檔案中。
dependencies {
implementation 'org.springframework.ai:spring-ai-starter-model-openai'
}
請參閱依賴管理部分,將 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.model.audio.transcription=openai(預設已啟用) 要停用,請設定 spring.ai.model.audio.transcription=none(或任何與 openai 不匹配的值) 此更改是為了允許配置多個模型。 |
字首 spring.ai.openai.audio.transcription
用作屬性字首,用於配置 OpenAI 轉錄模型的重試機制。
屬性 | 描述 | 預設值 |
---|---|---|
spring.ai.model.audio.transcription |
啟用 OpenAI 音訊轉錄模型 |
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, or vtt。 |
json |
spring.ai.openai.audio.transcription.options.prompt |
可選文字,用於指導模型的風格或繼續之前的音訊片段。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 時間戳沒有額外的延遲,但生成 word 時間戳會產生額外的延遲。 |
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()
.language("en")
.prompt("Ask not this, but ask that")
.temperature(0f)
.responseFormat(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()
.responseFormat(TranscriptResponseFormat.TEXT)
.temperature(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 測試提供了一些如何使用該庫的通用示例。