전사 API

전사 API (Transcription API)

Spring AI는 TranscriptionModel 인터페이스를 통해 음성-텍스트(Speech-to-Text) 전사를 위한 통일된 API를 제공해요. 이 덕분에 다양한 전사 공급자에서 동작하는 이식 가능한 코드를 작성할 수 있어요.

지원 공급자

공통 인터페이스

모든 전사 공급자는 다음 공유 인터페이스를 구현해요.

TranscriptionModel

TranscriptionModel 인터페이스는 오디오를 텍스트로 변환하는 메서드를 제공해요:

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

AudioTranscriptionPrompt 클래스는 입력 오디오와 옵션을 캡슐화해요:

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

AudioTranscriptionResponse

AudioTranscriptionResponse 클래스는 전사된 텍스트와 메타데이터를 담아요:

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

출처: 공식문서

공급자 무관 코드 작성하기

공유 전사 인터페이스의 핵심 이점은 수정 없이 어떤 전사 공급자와도 동작하는 코드를 작성할 수 있다는 거예요. 실제 공급자(예: OpenAI)는 Spring Boot 구성으로 결정되므로, 애플리케이션 코드를 바꾸지 않고 공급자를 전환할 수 있어요.

기본 서비스 예시

공유 인터페이스로 어떤 전사 공급자와도 동작하는 코드를 작성할 수 있어요:

@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나 다른 어떤 전사 공급자와도 매끄럽게 동작하며, 실제 구현은 Spring Boot 구성이 결정해요.

공급자별 기능

공유 인터페이스가 이식성을 제공하는 동안, 각 공급자는 공급자별 옵션 클래스(예: OpenAiAudioTranscriptionOptions)로 특정 기능도 제공해요. 이 클래스들은 AudioTranscriptionOptions 인터페이스를 구현하면서 공급자 특화 기능을 추가해요.

공급자별 기능에 대한 자세한 내용은 각 공급자 문서 페이지를 참고하세요.

더 알아보기