OpenAI Transcriptions

OpenAI Transcriptions

Spring AI 支持 OpenAI’s Transcription model

Prerequisites

您需要使用 OpenAI 创建 API 密钥来访问 ChatGPT 模型。在 OpenAI signup page上创建一个帐户并在 API Keys page上生成令牌。Spring AI 项目定义了一个配置属性,名为 spring.ai.openai.api-key,您应将其设置为从 openai.com 获得的 `API Key`的值。导出环境变量是设置该配置属性的一种方法:

Auto-configuration

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'
}
  1. 参见 Dependency Management 部分,将 Spring AI BOM 添加到你的构建文件中。

Transcription Properties

前缀 spring.ai.openai.audio.transcription 用作属性前缀,允许您配置 OpenAI Image 客户端的重试机制。

Property Description Default

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

要使用的模型的编号。目前仅提供 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 时间戳没有额外的延迟,但生成单词时间戳会产生额外的延迟。

segment

Runtime 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 = openAiTranscriptionClient.call(transcriptionRequest);

Manual Configuration

添加 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'
}
  1. 参见 Dependency Management 部分,将 Spring AI BOM 添加到你的构建文件中。

接下来,创建一个 OpenAiAudioTranscriptionClient

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

var openAiAudioTranscriptionClient = new OpenAiAudioTranscriptionClient(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 = openAiTranscriptionClient.call(transcriptionRequest);

Example Code