전사 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 인터페이스를 구현하면서 공급자 특화 기능을 추가해요.
공급자별 기능에 대한 자세한 내용은 각 공급자 문서 페이지를 참고하세요.
더 알아보기
- 오디오·이미지·텍스트를 함께 처리 → Multimodality API
- 멀티모달 메시지 구성 → Chat Client API
- 오디오 전사·음성 생성 전반 → Audio API