OpenAI Transcriptions
Spring AI 支持 OpenAI 的转录模型。
前置条件
要访问 ChatGPT 模型,您需要在 OpenAI 创建一个 API Key。请先在 OpenAI 注册页面 创建账号,并在 API Keys 页面 生成令牌。Spring AI 项目定义了一个配置属性 spring.ai.openai.api-key,您应将其设置为从 openai.com 获取的 API Key。通过导出环境变量是一种设置该配置属性的方法:
自动配置
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.openai 前缀用于配置与 OpenAI 的连接。
| 属性 | 描述 | 默认值 |
|---|---|---|
| spring.ai.openai.base-url | 用于连接的 URL | api.openai.com |
| spring.ai.openai.api-key | API Key | - |
| spring.ai.openai.organization-id | 可选,指定用于 API 请求的组织 | - |
| spring.ai.openai.project-id | 可选,指定用于 API 请求的项目 | - |
配置属性
spring.ai.model.audio.transcription 配置。- 启用:
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 | api.openai.com |
| spring.ai.openai.audio.transcription.api-key | API Key | - |
| spring.ai.openai.audio.transcription.organization-id | 可选,指定用于 API 请求的组织 | - |
| spring.ai.openai.audio.transcription.project-id | 可选,指定用于 API 请求的项目 | - |
| spring.ai.openai.audio.transcription.options.model | 转录模型 ID,可选模型:gpt-4o-transcribe(GPT-4o 语音转文本)、gpt-4o-mini-transcribe(GPT-4o mini 语音转文本)、whisper-1(通用语音识别模型,默认) | 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 时间戳不会增加额外延迟,但生成 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.audio.transcription.options 为前缀的属性都可以在运行时覆盖。运行时选项
OpenAiAudioTranscriptionOptions 类提供了进行音频转录时可使用的配置选项。在应用启动时,会使用 spring.ai.openai.audio.transcription 中指定的选项,但你可以在运行时覆盖这些选项。
例如:
// 设置转录输出格式为 VTT
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'
}
接下来,创建一个 OpenAiAudioTranscriptionModel 示例:
// 创建 OpenAI 音频 API 客户端
var openAiAudioApi = new OpenAiAudioApi(System.getenv("OPENAI_API_KEY"));
// 创建 OpenAI 音频转录模型
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 = openAiAudioTranscriptionModel.call(this.transcriptionRequest);
此示例展示了如何初始化 OpenAI 音频转录模型、设置自定义转录选项,并对音频文件进行文本转录。
示例代码
OpenAiTranscriptionModelIT.java 测试提供了一些使用该库的通用示例。