news 2026/5/5 2:22:53

53_Spring AI 干货笔记之 转录 API

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
53_Spring AI 干货笔记之 转录 API

一、转录 API

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

二、支持的提供商

  • OpenAI 的 Whisper API

  • Azure OpenAI Whisper API

三、通用接口

所有转录提供商都实现了以下共享接口:

3.1 TranscriptionModel

TranscriptionModel 接口提供了将音频转换为文本的方法:

publicinterfaceTranscriptionModelextendsModel<AudioTranscriptionPrompt,AudioTranscriptionResponse>{/** * 转录给定提示中的音频。 */AudioTranscriptionResponsecall(AudioTranscriptionPrompttranscriptionPrompt);/** * 转录音频资源的便捷方法。 */defaultStringtranscribe(Resourceresource){AudioTranscriptionPromptprompt=newAudioTranscriptionPrompt(resource);returnthis.call(prompt).getResult().getOutput();}/** * 使用选项转录音频资源的便捷方法。 */defaultStringtranscribe(Resourceresource,AudioTranscriptionOptionsoptions){AudioTranscriptionPromptprompt=newAudioTranscriptionPrompt(resource,options);returnthis.call(prompt).getResult().getOutput();}}

3.2 AudioTranscriptionPrompt

AudioTranscriptionPrompt 类封装了输入音频和选项:

ResourceaudioFile=newFileSystemResource("/path/to/audio.mp3");AudioTranscriptionPromptprompt=newAudioTranscriptionPrompt(audioFile,options);

3.3 AudioTranscriptionResponse

AudioTranscriptionResponse 类包含转录文本和元数据:

AudioTranscriptionResponseresponse=model.call(prompt);StringtranscribedText=response.getResult().getOutput();AudioTranscriptionResponseMetadatametadata=response.getMetadata();

四、编写与提供商无关的代码

共享转录接口的主要好处之一是能够编写无需修改即可与任何转录提供商一起工作的代码。实际的提供商(OpenAI、Azure OpenAI 等)由您的 Spring Boot 配置决定,允许您在不更改应用程序代码的情况下切换提供商。

4.1 基础服务示例

共享接口允许您编写与任何转录提供商一起工作的代码:

@ServicepublicclassTranscriptionService{privatefinalTranscriptionModeltranscriptionModel;publicTranscriptionService(TranscriptionModeltranscriptionModel){this.transcriptionModel=transcriptionModel;}publicStringtranscribeAudio(ResourceaudioFile){returntranscriptionModel.transcribe(audioFile);}publicStringtranscribeWithOptions(ResourceaudioFile,AudioTranscriptionOptionsoptions){AudioTranscriptionPromptprompt=newAudioTranscriptionPrompt(audioFile,options);AudioTranscriptionResponseresponse=transcriptionModel.call(prompt);returnresponse.getResult().getOutput();}}

此服务可与 OpenAI、Azure OpenAI 或任何其他转录提供商无缝协作,实际实现由您的 Spring Boot 配置决定。

五、提供商特定功能

虽然共享接口提供了可移植性,但每个提供商也通过提供商特定的选项类(例如 OpenAiAudioTranscriptionOptions、AzureOpenAiAudioTranscriptionOptions)提供特定功能。这些类在实现 AudioTranscriptionOptions 接口的同时,添加了提供商特定的能力。

有关提供商特定功能的详细信息,请参阅各个提供商的文档页面。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 18:05:24

35、微分几何与非线性系统线性化:理论、方法与应用

微分几何与非线性系统线性化:理论、方法与应用 1. 魏 - 诺曼公式与问题转换 魏 - 诺曼公式将李群上的微分方程问题转化为 $\mathbb{R}^n$ 中的问题。它把从初始配置 $g_i$ 到最终配置 $g_f$ 的控制问题,转换为从 $\mathbb{R}^n$ 中的向量 $y(0)$ 到 $y(1)$ 的控制问题。这一…

作者头像 李华
网站建设 2026/5/1 10:25:02

50、控制中的外微分系统详解

控制中的外微分系统详解 1. 外代数中的相关计算与定理 在进行外代数相关内容探讨时,首先对表达式 (v \rfloor \alpha^4 \in I_E) 进行计算。 - 计算过程 : - (v \rfloor \alpha^4 = (v \rfloor (\theta^1 \wedge \theta^2)) \wedge \beta^5 + (-1)^2(\theta^1 \wedge \…

作者头像 李华
网站建设 2026/5/3 12:17:23

泛函分析与偏微分方程(四):弱拓扑的三个基本性质

无穷维赋范线性空间中弱拓扑的三个基本性质 以下三个命题是泛函分析中的经典结果,深刻揭示了无穷维空间中弱拓扑与范数拓扑的本质差异。 命题一:单位开球在弱拓扑下不是开集 命题:设 XXX 是一个无穷维赋范线性空间,B={ x∈X:∥x∥<1}B = \{x \in X : \|x\| < 1\}B…

作者头像 李华
网站建设 2026/5/1 17:00:24

USB3.0接口定义引脚说明与PCB层叠结构对信号完整性影响分析

USB3.0高速设计实战&#xff1a;从引脚定义到PCB叠层的信号完整性攻防战你有没有遇到过这样的情况&#xff1f;USB3.0接口焊好了&#xff0c;设备也能识别&#xff0c;但一跑高速传输就丢包、误码&#xff0c;甚至直接降级到USB2.0模式。示波器一看眼图——闭得比没睡醒还紧。别…

作者头像 李华
网站建设 2026/4/30 20:26:29

Dify平台支持的语音识别与合成集成方案

Dify平台支持的语音识别与合成集成方案 在智能客服、语音助手等AI应用日益普及的今天&#xff0c;企业面临的不再是“要不要做语音交互”&#xff0c;而是“如何快速、稳定地构建可落地的语音系统”。传统开发模式下&#xff0c;集成ASR&#xff08;语音识别&#xff09;和TTS…

作者头像 李华
网站建设 2026/5/1 9:50:45

LED亮度调节实战:使用PWM实现平滑调光的完整示例

从零实现呼吸灯&#xff1a;用PWM玩转LED无级调光你有没有注意过手机充电时那盏温柔闪烁的指示灯&#xff1f;或者智能家居面板上缓缓明灭的氛围灯&#xff1f;它们不像普通LED那样“啪”地一下亮起或熄灭&#xff0c;而是像呼吸一样柔和渐变——这种效果背后的核心技术&#x…

作者头像 李华