news 2026/4/18 6:25:07

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/4/17 7:03:25

精准匹配,高效交付——建广数科人力外包服务的核心竞争力

在数字化浪潮下&#xff0c;企业对于高素质、专业化IT人才的需求日益迫切。如何快速、精准、稳定地获取高质量人才&#xff0c;成为推进数字化转型的关键。建广数科凭借深厚的人力资源积淀与创新服务模式&#xff0c;构建了以客户为中心、全流程保障的外包服务体系。多维资源网…

作者头像 李华
网站建设 2026/4/18 6:24:36

Dify在舆情监控系统中的关键技术实现

Dify在舆情监控系统中的关键技术实现 在社交媒体信息爆炸的时代&#xff0c;一条负面评论可能在几小时内演变为全网危机。企业对舆情的响应速度和处理质量&#xff0c;直接关系到品牌声誉与客户信任。传统的监控系统依赖关键词匹配和人工研判&#xff0c;不仅效率低下&#xff…

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

45、几何非线性控制中的非完整运动规划方法

几何非线性控制中的非完整运动规划方法 在几何非线性控制领域,非完整运动规划是一个重要的研究方向。本文将详细介绍使用正弦波控制模型系统以及更一般的非完整系统运动规划的方法。 1. 模型控制系统的正弦波控制 在这部分,我们主要研究如何使用正弦波来控制某些“模型”控…

作者头像 李华
网站建设 2026/4/8 21:36:24

[Unreal shader]后处理全屏输出深度纹理

UE中&#xff0c;全屏输出深度缓冲&#xff08;Depth Buffer&#xff09;&#xff0c;最常用且最标准的方法是使用后处理材质 (Post Process Material)。这和Unity的ScriptableRenderPass逻辑类似&#xff0c;在UE中完全可以通过材质编辑器可视化实现。方法一&#xff1a;使用后…

作者头像 李华
网站建设 2026/4/18 4:04:27

提升稳定性:虚拟串口驱动异常处理策略

虚拟串口驱动的“不死之心”&#xff1a;如何让通信在崩溃边缘自我修复你有没有遇到过这样的场景&#xff1f;工业现场的一台PLC通过虚拟串口与上位机通信&#xff0c;突然传感器断线几秒&#xff0c;再插回去时&#xff0c;软件却再也收不到数据——必须重启整个系统。或者&am…

作者头像 李华
网站建设 2026/4/16 21:42:51

Dify平台是否支持微调模型?答案在这里

Dify平台是否支持微调模型&#xff1f;答案在这里 在企业纷纷拥抱AI的今天&#xff0c;一个现实问题摆在面前&#xff1a;如何让大语言模型真正理解我们的业务&#xff1f;通用模型虽然强大&#xff0c;但面对专业术语、内部流程或特定语气回复时&#xff0c;常常“答非所问”。…

作者头像 李华