主题
转录 API
Spring AI 通过 TranscriptionModel 接口为语音转文本转录提供统一 API。这让你能编写跨不同转录服务商工作的可移植代码。
受支持的服务商
通用接口
所有转录服务商都实现以下共享接口:
TranscriptionModel
TranscriptionModel 接口提供了把音频转换为文本的方法:
java
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 类封装输入音频和选项:
java
Resource audioFile = new FileSystemResource("/path/to/audio.mp3");
AudioTranscriptionPrompt prompt = new AudioTranscriptionPrompt(
audioFile,
options
);AudioTranscriptionResponse
AudioTranscriptionResponse 类包含转录后的文本和元数据:
java
AudioTranscriptionResponse response = model.call(prompt);
String transcribedText = response.getResult().getOutput();
AudioTranscriptionResponseMetadata metadata = response.getMetadata();编写服务商无关的代码
共享转录接口的一大关键好处,是让你能编写无需修改即可与任何转录服务商协作的代码。实际的服务商(例如 OpenAI)由你的 Spring Boot 配置决定,从而让你无需更改应用代码就能切换服务商。
基本服务示例
共享接口让你能编写与任何转录服务商协作的代码:
java
@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 接口,同时添加服务商特定的能力。
关于服务商特定特性的详细信息,请参阅各服务商的文档页。