Spring-ai-alibaba音频
文章目录Spring AI Alibaba 语音模型实战TTS STT版本一、依赖引入二、yml 配置三、代码案例TTS文字 → 音频四、代码案例STT音频 → 文字1. 公网 URL 同步 call()录音文件识别2. 本地上传用 stream()Spring AI Alibaba 语音模型实战TTS STT用 Spring AI Alibaba 接入百炼文字转语音TTS与语音转文字STT。版本Spring Boot3.4.5spring-ai-alibaba-starter-dashscope1.1.2.1修复call()只返回部分音频的问题Java17Spring-ai更新速度快,请以官方为准可参考网址:Spring-ai官网Spring-ai阿里巴巴阿里百炼模型广场开发者指南(API/SDK)一、依赖引入dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdcom.alibaba.cloud.ai/groupIdartifactIdspring-ai-alibaba-starter-dashscope/artifactId!-- 1.1.2.1TTS call() 能拿完整音频 --version1.1.2.1/version/dependencydependencygroupIdcom.alibaba/groupIdartifactIddashscope-sdk-java/artifactIdversion2.22.18/version/dependency二、yml 配置spring:application:name:spring-audio-demoai:dashscope:api-key:${DASHSCOPE_API_KEY}audio:synthesis:options:# 默认音色配置接口里也可按需覆盖 model / voicemodel:cosyvoice-v1voice:longhua说明CosyVoice 的model 与 voice 必须成套。例如代码里用cosyvoice-v3-flash时音色要用longdaiyu_v3这类 v3 音色否则可能 418。三、代码案例TTS文字 → 音频RestControllerRequestMapping(/ai/tts)publicclassTTSAudioController{/** 相对运行目录的 audio/IDE 从父工程启动时可能落在 spring-ai-second/audio */privatestaticfinalPathAUDIO_DIRPaths.get(audio);privatestaticfinalStringDEFAULT_TEXT哟,我来的不巧了,早知她来,我就不来了.;/** 注入 DashScope 语音合成模型Bean 名dashScopeSpeechSynthesisModel */privatefinalTextToSpeechModeltextToSpeechModel;publicTTSAudioController(Qualifier(dashScopeSpeechSynthesisModel)TextToSpeechModeltextToSpeechModel){this.textToSpeechModeltextToSpeechModel;}/** * GET /ai/tts/speak?text你好 * 流程拼 Options → Prompt → call() → 落盘 → 返回 mp3 字节 */GetMapping(value/speak,producesaudio/mpeg)publicbyte[]speak(RequestParam(defaultValueDEFAULT_TEXT)Stringtext){// 1合成参数模型、音色、格式、采样率等DashScopeAudioSpeechOptionsoptionsDashScopeAudioSpeechOptions.builder().model(cosyvoice-v3-flash)// 合成模型.voice(longdaiyu_v3)// 必须与模型版本匹配.responseFormat(DashScopeAudioSpeechApi.ResponseFormat.MP3).sampleRate(22050)// 采样率.volume(50)// 音量 0~100.speed(1.0)// 语速.build();// 2文本 参数 → PromptTextToSpeechPromptpromptnewTextToSpeechPrompt(text,options);// 3同步合成拿到音频字节TextToSpeechResponseresponsetextToSpeechModel.call(prompt);byte[]audioresponse.getResult().getOutput();// 4先存本地再读回学习「生成 → 落盘 → 再读」Stringfilenametts-UUID.randomUUID().mp3;saveToFolder(audio,filename);returnreadFromFolder(filename);}privatevoidsaveToFolder(byte[]data,Stringfilename){try{Files.createDirectories(AUDIO_DIR);Files.write(AUDIO_DIR.resolve(filename),data);}catch(IOExceptione){e.printStackTrace();}}privatebyte[]readFromFolder(Stringfilename){try{returnFiles.readAllBytes(AUDIO_DIR.resolve(filename));}catch(IOExceptione){e.printStackTrace();returnnewbyte[0];}}}浏览器直接访问/ai/tts/speak即可播放返回的 MP3。四、代码案例STT音频 → 文字1. 公网 URL 同步call()录音文件识别RestControllerRequestMapping(/ai/stt)publicclassController{/** * call() 走「录音文件识别」云端自己下载音频所以必须是公网 URL。 * 本地文件 / MultipartFile 对云端不可见要用 stream()见下方 upload。 */privatestaticfinalStringDEMO_AUDIO_URLhttps://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav;privatefinalDashScopeAudioTranscriptionModeltranscriptionModel;publicController(DashScopeAudioTranscriptionModeltranscriptionModel){this.transcriptionModeltranscriptionModel;}/** * GET /ai/stt/basic * 流程Options → UrlResource → Prompt → call() → 文本 */GetMapping(value/basic,producestext/html;charsetUTF-8)publicStringbasic(RequestParam(defaultValueDEMO_AUDIO_URL)Stringurl)throwsMalformedURLException{DashScopeAudioTranscriptionOptionsoptionsDashScopeAudioTranscriptionOptions.builder()// 录音文件识别模型非实时.model(DashScopeModel.AudioModel.PARAFORMER_V2.getValue()).languageHints(List.of(zh,en)).build();// 告诉框架音频在这个网络地址UrlResourceaudioResourcenewUrlResource(url);AudioTranscriptionPromptpromptnewAudioTranscriptionPrompt(audioResource,options);// 同步调用提交任务并等待内部会轮询日志里出现 pending 属正常AudioTranscriptionResponseresponsetranscriptionModel.call(prompt);Stringtextresponse.getResult().getOutput();return识别结果: text;}}2. 本地上传用stream()上传文件时云端拿不到你本机路径应走实时流/** * POST /ai/stt/upload form-data 字段名 file * sampleRate 必须与文件真实采样率一致本项目 TTS 的 mp3 常用 22050 */PostMapping(value/upload,producestext/html;charsetUTF-8)publicStringupload(RequestParam(file)MultipartFilefile,RequestParam(defaultValue22050)IntegersampleRate)throwsIOException{DashScopeAudioTranscriptionOptionsoptionsDashScopeAudioTranscriptionOptions.builder().model(DashScopeModel.AudioModel.PARAFORMER_REALTIME_V2.getValue()).sampleRate(sampleRate).format(DashScopeAudioTranscriptionApi.AudioFormat.MP3)// 按实际后缀选择.languageHints(List.of(zh,en)).build();ResourceaudioResourcenewByteArrayResource(file.getBytes()){OverridepublicStringgetFilename(){returnfile.getOriginalFilename();}};AudioTranscriptionPromptpromptnewAudioTranscriptionPrompt(audioResource,options);// 实时流每帧常是「整句修订版」取最后一帧即可不要把所有帧 join 起来StringtexttranscriptionModel.stream(prompt).map(r-r.getResult()null?:r.getResult().getOutput()).filter(t-t!null!t.isBlank()).last().block();return识别结果: text;}

相关新闻

从 PHP 到 AI + Golang,程序员自救转型手记(四十八):菜单规则管理实现

从 PHP 到 AI + Golang,程序员自救转型手记(四十八):菜单规则管理实现

这是一个系列 Blog,作者将以一个 PHP 全栈工程师的身份,利用 AI 工具(claude code、codex、deepseek、豆包等):从零开始学习 golang 语言,并最终完成 ai-go-admin(github | gitee)开…

2026/8/4 7:30:02 阅读更多 →
SQL Server日期时间函数全解析:从基础概念到高阶应用与性能优化

SQL Server日期时间函数全解析:从基础概念到高阶应用与性能优化

1. 项目概述:为什么你需要一份“最全”的日期时间函数指南干了这么多年数据库开发,我发现一个挺有意思的现象:无论是新手还是老手,但凡涉及到SQL Server里的日期时间处理,总免不了要去翻文档或者搜一下某个函数的具体用…

2026/8/4 7:30:02 阅读更多 →
B站视频下载终极指南:三步解锁大会员4K高清视频

B站视频下载终极指南:三步解锁大会员4K高清视频

B站视频下载终极指南:三步解锁大会员4K高清视频 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 还在为B站上的精彩视频无法…

2026/8/4 7:29:02 阅读更多 →

最新新闻

构网型VSG-PMSM永磁直驱风力发电系统解析

构网型VSG-PMSM永磁直驱风力发电系统解析

1. 构网型VSG-PMSM永磁直驱风力发电系统概述 永磁直驱风力发电系统作为当前风电领域的主流技术路线之一,其核心优势在于省去了传统双馈机组中的齿轮箱结构,通过PMSM(永磁同步电机)直接与风机叶轮连接。这种结构大幅减少了机械传动…

2026/8/4 8:18:25 阅读更多 →
Python基础语法全解析:从入门到精通

Python基础语法全解析:从入门到精通

1. Python语言基础语法元素解析 作为一名使用Python十余年的开发者,我经常被问到同一个问题:"怎样才能真正掌握Python的基础语法?"今天我们就来彻底拆解Python最核心的语法元素,这些是每个Python程序员必须内化的基本功…

2026/8/4 8:18:25 阅读更多 →
AI如何重构软件开发全流程:从需求到运维的智能化实践

AI如何重构软件开发全流程:从需求到运维的智能化实践

1. 项目概述:AI如何重构开发全流程2026年的软件开发领域,AI技术已经从辅助工具演变为核心生产力。我最近完成的一个企业级SaaS项目,全程采用AI重构开发流程,从需求分析到上线运维仅用传统工时1/3的时间。这种全流程AI赋能不是简单…

2026/8/4 8:18:25 阅读更多 →
大模型跨语言处理机制与中英文差异技术解析

大模型跨语言处理机制与中英文差异技术解析

大模型跨语言处理机制与中英文差异技术解析 文档摘要:本文系统梳理了 Transformer 大语言模型(LLM)在处理多语言输入时的内部表征机制,解答了“模型内部是否先翻译成英文”的疑惑,并对比了中英文在 Tokenizer 编码效率…

2026/8/4 8:18:25 阅读更多 →
基于 YOLOv8 的人脸表情识别系统(全套源码+数据集)

基于 YOLOv8 的人脸表情识别系统(全套源码+数据集)

项目简介 本项目以 YOLOv8 目标检测框架为核心,构建了一套完整的人脸表情识别系统,涵盖数据集处理、模型训练与调优、可视化分析以及交互式推理系统的全流程开发。系统能够在图片、视频及摄像头实时画面中同步完成人脸定位与表情分类,支持 7…

2026/8/4 8:18:25 阅读更多 →
游戏逆向工程实战:从寻路CALL到内存基址的完整分析流程

游戏逆向工程实战:从寻路CALL到内存基址的完整分析流程

1. 项目概述:从“找路”到“找基址”的逆向思维在游戏安全、外挂分析、内存修改器开发乃至一些自动化脚本的底层交互中,我们常常会听到“找CALL”、“找基址”这些术语。乍一听,这像是某种神秘的“黑话”,但实际上,它们…

2026/8/4 8:17:25 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/3 4:58:13 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/3 1:53:31 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/3 13:07:03 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/3 5:19:38 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/3 8:27:36 阅读更多 →