此版本仍在开发中,尚未被视为稳定版。如需最新的快照版本,请使用 Spring AI 1.1.3spring-doc.cadn.net.cn

转录 API

Spring AI 通过 TranscriptionModel 接口为语音转文本转录提供了统一的 API。这使您能够编写可在不同转录提供商之间移植的代码。spring-doc.cadn.net.cn

公共接口

所有转录提供者都实现以下共享接口:spring-doc.cadn.net.cn

转录模型

TranscriptionModel 接口提供了将音频转换为文本的方法:spring-doc.cadn.net.cn

public interface TranscriptionModel extends Model<AudioTranscriptionPrompt, AudioTranscriptionResponse> {

    /**
     * Transcribes the audio from the given prompt.
     */
    AudioTranscriptionResponse call(AudioTranscriptionPrompt transcriptionPrompt);

    /**
     * A convenience method for transcribing an audio resource.
     */
    default String transcribe(Resource resource) {
        AudioTranscriptionPrompt prompt = new AudioTranscriptionPrompt(resource);
        return this.call(prompt).getResult().getOutput();
    }

    /**
     * A convenience method for transcribing an audio resource with options.
     */
    default String transcribe(Resource resource, AudioTranscriptionOptions options) {
        AudioTranscriptionPrompt prompt = new AudioTranscriptionPrompt(resource, options);
        return this.call(prompt).getResult().getOutput();
    }
}

音频转录提示

AudioTranscriptionPrompt 类封装了输入音频和选项:spring-doc.cadn.net.cn

Resource audioFile = new FileSystemResource("/path/to/audio.mp3");
AudioTranscriptionPrompt prompt = new AudioTranscriptionPrompt(
    audioFile,
    options
);

音频转录响应

AudioTranscriptionResponse 类包含转录的文本和元数据:spring-doc.cadn.net.cn

AudioTranscriptionResponse response = model.call(prompt);
String transcribedText = response.getResult().getOutput();
AudioTranscriptionResponseMetadata metadata = response.getMetadata();

编写与提供者无关的代码

共享转录接口的关键优势之一是能够编写无需修改即可与任何转录提供商协同工作的代码。实际的提供商(如 OpenAI、Azure OpenAI 等)由您的 Spring Boot 配置决定,使您能够在不更改应用程序代码的情况下切换提供商。spring-doc.cadn.net.cn

基础服务示例

共享接口允许您编写适用于任何转录提供商的代码:spring-doc.cadn.net.cn

@Service
public class TranscriptionService {

    private final TranscriptionModel transcriptionModel;

    public TranscriptionService(TranscriptionModel transcriptionModel) {
        this.transcriptionModel = transcriptionModel;
    }

    public String transcribeAudio(Resource audioFile) {
        return transcriptionModel.transcribe(audioFile);
    }

    public String transcribeWithOptions(Resource audioFile, AudioTranscriptionOptions options) {
        AudioTranscriptionPrompt prompt = new AudioTranscriptionPrompt(audioFile, options);
        AudioTranscriptionResponse response = transcriptionModel.call(prompt);
        return response.getResult().getOutput();
    }
}

此服务可与 OpenAI、Azure OpenAI 或任何其他转录提供商无缝协作,具体实现由您的 Spring Boot 配置决定。spring-doc.cadn.net.cn

特定于提供程序的功能

虽然共享接口提供了可移植性,但每个提供者还通过提供者特定的选项类(例如 OpenAiAudioTranscriptionOptionsAzureOpenAiAudioTranscriptionOptions)提供特定功能。这些类实现了 AudioTranscriptionOptions 接口,同时添加了提供者特定的能力。spring-doc.cadn.net.cn

有关特定提供程序功能的详细信息,请参阅各个提供程序的文档页面。spring-doc.cadn.net.cn