【Spring AI】04. 转录 API-OpenAI

文章目录

  • OpenAI 转录功能
    • 先决条件
    • 自动装配(Auto-configuration )
      • 转录选项参数
    • 运行时选项参数
    • 手动配置
    • 示例代码

OpenAI 转录功能

Spring AI 支持 OpenAI 的转录模型。

先决条件


您需要使用 OpenAI 创建一个 API 才能访问 ChatGPT 模型。在 OpenAI 注册页面创建一个账户,并在 API 密钥页面生成令牌。Spring AI 项目定义了一个名为 spring.ai.openai.api-key 的配置属性,您应将 openai.com 获取的API Key 对这个变量进行赋值。生效该配置的一种方法是设置环境变量:

export SPRING_AI_OPENAI_API_KEY=<INSERT KEY HERE>

自动装配(Auto-configuration )


Spring AI 为 OpenAI Chat Client 提供了 Spring Boot 自动装配。若要启用它,请将以下依赖项添加到项目的 Maven pom.xml 文件:

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>

或添加到您的 Gradle build.gradle 构建文件。

dependencies {implementation 'org.springframework.ai:spring-ai-openai-spring-boot-starter'
}

请参阅 03. 开始章节 的 Dependency Management 部分,将 Spring AI BOM 添加到构建文件中

转录选项参数

属性参数前缀spring.ai.openai.audio.transcription

参数描述默认值
spring.ai.openai.audio.transcription.options.model要使用的模型的 ID。目前只有 whisper-1(由我们的开源 Whisper V2 模型提供支持)可用。whisper-1
spring.ai.openai.audio.transcription.options.response-format转录输出的格式,可选项包括:json、text、srt、verbose_json 或 vtt。json
spring.ai.openai.audio.transcription.options.prompt一个可选的文本,用于指导模型的风格或继续上一个音频片段。提示词应与音频语言匹配。
spring.ai.openai.audio.transcription.options.language输入音频的语言。以 ISO-639-1 格式提供输入语言将提高准确性和延迟。
spring.ai.openai.audio.transcription.options.temperature采样温度,介于 0 和 1 之间。较高的值如 0.8 会使输出更随机,而较低的值如 0.2 会使其更加集中和确定性。如果设置为 0,模型将使用对数概率自动增加温度,直到达到一定的阈值。0
spring.ai.openai.audio.transcription.options.timestamp_granularities用于填充此转录的时间戳粒度。response_format 必须设置为 verbose_json 才能使用时间戳粒度。参数值可以是这两个选项中的一个或两个:word 或 segment。注意:对于段时间戳,没有额外的延迟,但生成单词时间戳会产生额外的延迟。segment

运行时选项参数


OpenAiAudioTranscriptionOptions类提供了在进行转录时使用的选项。在启动时,将使用spring.ai.openai.audio.transcription指定的选项,但您可以在运行时覆盖这些选项。
例如:

OpenAiAudioApi.TranscriptResponseFormat responseFormat = OpenAiAudioApi.TranscriptResponseFormat.VTT;OpenAiAudioTranscriptionOptions transcriptionOptions = OpenAiAudioTranscriptionOptions.builder().withLanguage("en").withPrompt("Ask not this, but ask that").withTemperature(0f).withResponseFormat(responseFormat).build();
AudioTranscriptionPrompt transcriptionRequest = new AudioTranscriptionPrompt(audioFile, transcriptionOptions);
AudioTranscriptionResponse response = openAiTranscriptionClient.call(transcriptionRequest);

手动配置

首先将依赖项添加到项目的 Maven pom.xml 文件:

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-openai</artifactId>
</dependency>

或添加到您的 Gradle build.gradle 构建文件。

dependencies {implementation 'org.springframework.ai:spring-ai-openai'
}

请参阅 03. 开始章节 的 Dependency Management 部分,将 Spring AI BOM 添加到构建文件中

接下来,创建一个 OpenAiAudioTranscriptionClient

var openAiAudioApi = new OpenAiAudioApi(System.getenv("OPENAI_API_KEY"));var openAiAudioTranscriptionClient = new OpenAiAudioTranscriptionClient(openAiAudioApi);var transcriptionOptions = OpenAiAudioTranscriptionOptions.builder().withResponseFormat(TranscriptResponseFormat.TEXT).withTemperature(0f).build();var audioFile = new FileSystemResource("/path/to/your/resource/speech/jfk.flac");AudioTranscriptionPrompt transcriptionRequest = new AudioTranscriptionPrompt(audioFile, transcriptionOptions);
AudioTranscriptionResponse response = openAiTranscriptionClient.call(transcriptionRequest);

示例代码


  • OpenAiTranscriptionClientIT.java 测试提供了一些通用示例,展示如何使用该库。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/4786.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Vue】监听div宽高的变化(动态渲染echarts宽高)

一、问题 echarts 未监听到 echarts 宽高变化而动态变化 <template> <div id"echart" ref"echart" style"width: 100%; height: 300px"></div> </div> </template> <script> export default { data() {…

R语言--图形绘制

一&#xff0c;绘制简单图形 c1<- c(10,20,30,40,50) c2<-c(2,7,15,40,50) plot(c1,c2,typeb) 具体参数请参考R语言中的绘图技巧1&#xff1a;plot()函数参数汇总_r语言plot参数设置-CSDN博客 c1<- c(10,20,30,40,50) c2<-c(2,7,15,40,50) plot(c1,c2,typeb,col#…

这些小众工作软件让你事半功倍

大家好&#xff0c;我是追求高效工作的小红书种草小能手&#xff01;今天要和大家分享几款超实用的工作软件&#xff0c;它们可能不像那些大牌软件那样家喻户晓&#xff0c;但绝对能让你的工作生活焕然一新&#xff01;&#x1f31f; 1️⃣《亿可达》- &#x1f5a5;️自动化办…

中信银行深耕养老金融,构建多支柱养老金体系新格局

在应对人口老龄化这一全球性挑战的过程中&#xff0c;养老金融已成为中国金融领域的重要篇章。2024年4月25日&#xff0c;中信银行行长刘成在财新传媒主办的“2024中国养老产业论坛”上发表主旨演讲&#xff0c;深入阐述了养老金金融、养老服务金融、养老产业金融互促互进的大趋…

第8章 软件工程

一、软件工程概述 &#xff08;一&#xff09;软件危机 1、含义&#xff1a;落后的软件生产方式无法满足迅速增长的计算机软件需求&#xff0c;从而导致软件开发与维护过程中出现一系列严重问题的现象。 2、解决方案&#xff1a;引入软件工程的思想。 &#xff08;二&#x…

【Qt】无法创建或打开CMake项目

无法创建或打开CMake项目 没有CMake选项 原因 卸载重装了qt&#xff0c;安装时勾选了cmake&#xff0c;发现还是一样没有。。。 后面发现是插件里没有勾选上CMake。。。很无语 不是应该默认就有的吗 不懂了 解决 插件勾选重启就好了

加密,解密 crypto-js、 计算哈希值,js-sha3

加密&#xff0c;解密 crypto-js、 计算哈希值&#xff0c;js-sha3 文章目录 加密&#xff0c;解密 crypto-js、 计算哈希值&#xff0c;js-sha3crypto-js安装 crypto-js使用 crypto-js js-sha3安装 js-sha3使用 js-sha3 在项目中一些不能明文传输&#xff0c;就需要把明文进行…

Java List 获取部分组成new list,获取两个list相同/不同的内容

获取List中的一项 List<String> _outingCntry list.stream().map(OSzItem::getGroup). collect(Collectors.toList()); 获取List中的多项 List<vo> list new ArrayList<>(); Map<String, String> map list.stream().collect( Collectors.toMap(v…

Python 操作PDF图片 – 添加、替换、删除PDF中的图片

PDF文件中的图片可以丰富文档内容&#xff0c;提升用户的阅读体验。除了在PDF中添加图片外&#xff0c;有时也需要替换或删除其中的图片&#xff0c;以改进视觉效果或更新信息。文本将提供以下三个示例&#xff0c;介绍如何使用Python 操作PDF文件中的图片&#xff1a; 目录 …

qt学习篇---界面按键关联(信号和槽)

目录 1.qt基础 2.做一个界面 创建project UI界面设计 信号和槽 1.控件改名字 2.什么是信号和槽 3.怎么关联信号和槽 自动关联 手动关联 1.qt基础 qt可移植性强&#xff0c;不久会用到MCU。很有意义学习 2.做一个界面 创建project 不要中文路径 选择QWidget .pro文件…

机器学习之K-medians聚类

K-medians聚类是一种聚类算法,类似于K-means,但是它使用中位数来确定簇的中心,而不是平均值。这种方法在处理数据中存在离群值或异常值时比较有用,因为中位数对离群值不敏感。K-medians的步骤与K-means类似,但在每次迭代中,它使用中位数来更新簇的中心。 K-medians的算法…

基于Lucene的搜索引擎设计与实现:技术总结与展望

论文、答辩资料、源代码见下 引言 在大数据时代背景下&#xff0c;如何快速有效地从海量网络信息中检索出有价值的信息&#xff0c;是当前技术领域面临的一大挑战。本次毕业设计的核心工作是设计并实现一个基于Lucene的搜索引擎&#xff0c;旨在提高信息检索的效率和准确性。…

强力的应用容器引擎---------Docker的资源控制

目录 一、CPU 资源控制 1.1cgroups有四大功能 1.2设置CPU使用率上限 1.2.1查看CPU使用率 1.2.2进行CPU压力测试 1.2.3设置50%的比例分配CPU使用时间上限 1.3设置CPU资源占用比&#xff08;设置多个容器时才有效&#xff09; 1.3.1创建两个容器为hua1 和hua2&#xff0c…

怎么检查ubuntu22.04服务器机器被挖矿了

如果怀疑你的 Ubuntu 22.04 系统被挖矿程序占用&#xff0c;可以通过一系列检查步骤来确认这一疑问。这些步骤可以帮助你发现系统是否存在未授权的挖矿活动&#xff1a; 1. 检查CPU和GPU使用率 挖矿程序通常会导致CPU或GPU的使用率异常升高。使用以下命令检查系统资源的使用情…

秋招后端开发面试题 - Java多线程(下)

目录 Java多线程前言面试题synchronized&#xff1f;作用&#xff1f;synchronized 怎么使用&#xff1f;构造方法可以用 synchronized 修饰吗&#xff1f;synchronized 底层原理了解吗&#xff1f;除了原子性&#xff0c;synchronized 可见性&#xff0c;有序性&#xff0c;可…

限流--4种经典限流算法讲解--单机限流和分布式限流的实现

为什么需要限流 系统的维护使用是需要成本的&#xff0c;用户可能使用科技疯狂刷量&#xff0c;消耗系统资源&#xff0c;出现额外的经济开销问题&#xff1a; 控制成本>限制用户的调用次数用户在短时间内疯狂使用&#xff0c;导致服务器资源被占满&#xff0c;其他用户无…

Q1季度方便速食行业线上市场(京东天猫淘宝)销售数据分析

方便食品行业作为快速消费品市场的重要组成部分&#xff0c;近几年表现出较为强劲的发展势头。当然&#xff0c;每年的食品安全问题也在一定程度上影响着市场的良性健康发展。那么&#xff0c;今年Q1季度方便食品的线上发展如何&#xff1f; 根据鲸参谋数据显示&#xff0c;Q1…

制造企业如何打造客户服务核心竞争力?[AMT企源典型案例]

引言 产品同质化严重&#xff0c;竞争的焦点从产品转向服务&#xff0c;企业的管理模式也要相应转变。那么如何打造围绕服务的核心竞争力&#xff1f;相信以下案例会给大家一些启发。 项目背景&#xff1a; 售后服务在市场竞争中的作用凸显 A公司是一家医疗器械生产制造企业…

【多维动态规划】Leetcode 72. 编辑距离【中等】

编辑距离 给你两个单词 word1 和 word2&#xff0c; 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作&#xff1a; 插入一个字符删除一个字符替换一个字符 示例 1&#xff1a; 输入&#xff1a;word1 “horse”, word2 “ros” 输…

kali 网络环境设置

一、修改网卡配置 1.1 系统桌面上单击右键&#xff0c;在弹出的菜单中选择 Open Terminal Here。 1.2 输入命令 vim /etc/network/interfaces&#xff0c;显示配置网卡参数为。iface lo 一般指 本地环回接口&#xff0c; iface eth0 网卡为系统正在使用的网卡&#xff0c;其中的…