使用百度语音技术实现文字转语音

使用百度语音技术实现文字转语音

SpringBoot+Vue前后端分离项目

调用api接口需要使用AK和SK生成AccessToken,生成getAccessToken的接口有跨域限制,所以统一的由后端处理了

部分参数在控制台->语音技术->在线调试里面能找到

Controller

@RestController
@RequestMapping("/tts")
public class BaiDuTTSController {@PostMapping("/baidu/{infoId}")public ResponseEntity<byte[]> info2Audio(@PathVariable("infoId") String infoId, HttpServletResponse response){// todo 通过infoId查询待转换的文字,字数小于60和大于60时使用的方法不一样,这里还没优化String text = "你好百度";byte[] audioBytes = new byte[0];try {audioBytes = getAudioFromService(text);} catch (Exception e) {e.printStackTrace();}if (audioBytes != null) {return ResponseEntity.ok().contentType(MediaType.valueOf("audio/wav")) // 或者是audio/wav等,根据你的音频格式.body(audioBytes);} else {// 返回错误响应return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);}}// 获取响应字节public  byte[] getAudioFromService( String text)throws Exception{String url = "https://tsn.baidu.com/text2audio";String requestBody = "tex=" + text + "&tok=" + getAccessToken() + "&cuid=这里要替换=5&pit=5&vol=5&per=1&aue=3";HttpResponse response = HttpRequest.post(url).contentType("application/x-www-form-urlencoded").body(requestBody).header("Accept", "*/*").execute();// 处理响应if (response.isOk()) {return response.bodyBytes();}throw new RuntimeException("获取音频错误,请联系管理员");}/*** 从用户的AK,SK生成鉴权签名(Access Token)** @return 鉴权签名(Access Token)* @throws IOException IO异常*/static String getAccessToken() throws IOException {String AK = "你的AK";String SK = "你的SK";String url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=" + AK + "&client_secret=" + SK;String postResult = HttpUtil.post(url, "");if (StrUtil.isBlank(postResult)){throw new RuntimeException("响应体为空");}JSONObject jsonObject = JSONUtil.parseObj(postResult);String accessToken = jsonObject.getStr("access_token");if (StrUtil.isBlank(accessToken)){throw new RuntimeException("accessToken为空");}return accessToken;}}

VUE

// 音频展示   
<el-col :span="8"><audio :src="audioSrc" v-if="audioSrc" controls>您的浏览器不支持音频播放。</audio>
</el-col>
// methods// 语音播报的函数handleSpeak(id) {baiduTTS(id).then(res =>{console.log(res.headers)console.log(res)// 这里注意是res还是res.data,看你后台怎么封装的this.audioSrc   = URL.createObjectURL(new Blob([res],{type:"audio/wav"}));})},
// 发送请求的js
import request from '@/utils/request'export async function baiduTTS(id) {return request({url: '/tts/baidu/' + id,method: 'post',responseType: "blob"})
}

参考

前端使用百度 TTS(语音合成)非常详细 - 掘金 (juejin.cn)

image-20240304164623514

ChatGPT:

image-20240304170256340

问题

this.audioSrc   = URL.createObjectURL(new Blob([res],{type:"audio/wav"}));

这一行代码出错(准确的是URL.createObjectURL)

安装/升级下core-js解决(yarn add core-js)

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【Spring Cloud】掌握Gateway核心技术,实现高效路由与转发

目录 前言示例创建一个服务提供者创建网关 创建common子项目 前言 Spring Cloud Gateway 是一个基于 Spring Boot 的非阻塞 API 网关服务&#xff0c;它提供了动态路由、请求断言、过滤器等功能。 以下是关于 Spring Cloud Gateway 的示例&#xff1a; 示例 创建一个服务提…

C#实现数据采集系统-实现功能介绍

系统介绍 我们这里主要使用C#( .Net 6)来实现一个数据采集系统&#xff0c;从0到1搭建数据采集系统&#xff0c;从系统分析&#xff0c;功能拆解&#xff0c;到一一实现 数据采集 数据采集是企业信息化和数字化转型过程中的关键环节&#xff0c;它涉及到从生产设备、传感器…

近段时间led灯性价比最高有哪几款?五款led灯性价比最高推荐

近段时间led灯性价比最高有哪几款&#xff1f;作为学生&#xff0c;在学校学习的时候会接触到电子产品&#xff0c;在夜晚回到家&#xff0c;还得接着继续读写。长时间的用眼过度&#xff0c;会导致视力下降&#xff0c;严重的话还会出现眼部疾病。所以&#xff0c;需要一个护眼…

内部函数和外部函数(例子为C语言)

​​​​ 怎么来的&#xff1f; 函数本质上是全局的&#xff0c;因为定义一个函数的目的就是这个函数与其他函数之间相互调用&#xff0c;如果不声明的话&#xff0c;一个函数既可以被本文件中的其他函数调用&#xff0c;也可以被其他文件中的函数调用。但是可以指定某些函数…

第十课:telnet(远程登入)

如何远程管理网络设备&#xff1f; 只要保证PC和路由器的ip是互通的&#xff0c;那么PC就可以远程管理路由器&#xff08;用telnet技术管理&#xff09;。 我们搭建一个下面这样的简单的拓扑图进行介绍 首先我们点击云&#xff0c;把云打开&#xff0c;点击增加 我们绑定vmn…

Streaming Video Recorder 6 视频录制 视频格式转换

Streaming Video Recorder 6 是一款功能强大的录屏和视频下载软件。它具有以下特点和功能&#xff1a; 录屏功能&#xff1a;可以录制电脑屏幕上的各种内容&#xff0c;例如操作过程、在线课程、游戏等。 视频嗅探与下载&#xff1a;能够通过粘贴链接地址&#xff0c;自动检测并…

FGF18:骨关节炎治疗靶标

成纤维细胞生长因子18&#xff08;FGF18&#xff09;属于FGF8亚家族成员&#xff0c;在细胞增殖、细胞分化和细胞迁移的调节中起重要作用&#xff0c;是正常骨化和骨骼发育所需&#xff0c;同时刺激肝脏和肠道增殖。 &#xff08;数据来源AlphaFold&#xff09; FGF18由207个氨…

Ubuntu安装virtualbox(win10)

virtualbox下载安装 1、下载virtualbox 下载路径&#xff1a;Linux_Downloads – Oracle VM VirtualBox 根据自己的Ubuntu版本选择对应的安装包下载 2、安装virtualbox 到下载路径&#xff08;一般为~/Download&#xff09;打开终端输入命令 sudo dpkg -i xxx.deb 继续执…

前瞻断言与后瞻断言:JavaScript 正则表达式的秘密武器

JavaScript 中的前瞻断言&#xff08;lookahead&#xff09;和后瞻断言&#xff08;lookbehind&#xff09;相信用过的小伙伴就知道它的威力了&#xff0c;在一些特定的需求场景下&#xff0c;可以做到四两拨千斤的作用&#xff0c;今天让我们来盘点一下在 JavaScript 正则表达…

【spring boot】初学者项目快速练手

一小时带你从0到1实现一个SpringBoot项目开发_哔哩哔哩_bilibili 一、基础知识 1.注解 二、简介 三、项目结构 1.API/Controller层 业务控制层&#xff0c;控制业务层Service&#xff0c;并把数据返回给移动端和前端&#xff0c;直接转发Service的业务处理结果&#xff0c;…

Lora模型训练的参数-学习笔记

任何一个lora都会有三重属性&#xff0c;易调用性、泛化性和还原性&#xff0c;任何一个lora只能完美满足其中的两项&#xff1b; 易调用性&#xff1a;在已调用lora后&#xff0c;还需要多少提示词才能让该lora完全生效&#xff1b; 泛化性&#xff1a;能不能还原lora训练素…

新电脑怎么装系统?一文带你轻松搞定

对于刚刚购置的新电脑&#xff0c;安装操作系统是必不可少的一步。一个高效、稳定的操作系统能让您的新电脑发挥出最佳性能。本文将介绍新电脑怎么装系统的3种方法&#xff0c;每种方法都提供了详细的步骤说明&#xff0c;帮助您顺利完成系统安装。 方法1&#xff1a;通过网络安…

Java中锁的全面详解(深刻理解各种锁)

一.Monitor 1. Java对象头 以32位虚拟机位例 对于普通对象,其对象头的存储结构为 总长为64位,也就是8个字节, 存在两个部分 Kclass Word: 其实也就是表示我们这个对象属于什么类型,也就是哪个类的对象.而对于Mark Word.查看一下它的结构存储 64位虚拟机中 而对于数组对象,我…

基于python旅游景点满意度分析设计与实现

1.1研究背景与意义 1.1.1研究背景 随着旅游业的快速发展&#xff0c;满意度分析成为评估旅游景点质量和提升游客体验的重要手段。海口市作为中国的旅游城市之一&#xff0c;其旅游景点吸引了大量游客。然而&#xff0c;如何科学评估和提升海口市旅游景点的满意度&#xff0c;…

百度网盘Android一二面凉经(2024)

百度网盘Android一二面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《百度网盘Android一二面凉经(2024)》。 面试职位: 网盘主端研发组_Android高级研…

芯课堂 | SWM34S系列驱动TFT屏走线布局设计参考

​在TFT屏驱电路设计中&#xff0c;好的PCB板布局走线可以让调试更轻松&#xff0c;让EMC测试更容易通过&#xff0c;关于34S的PCB板设计应注意以下几点&#xff1a; 关于布局 在布局中需要尽量靠近MCU的元器件有&#xff1a;晶振电路所有元器件、复位电路RC、CAP滤波电容以及…

【AI大模型Agent探索】Qwen-Agent:基于Qwen的LLM应用开发框架

系列篇章&#x1f4a5; No.文章1【Qwen部署实战】探索Qwen-7B-Chat&#xff1a;阿里云大型语言模型的对话实践2【Qwen2部署实战】Qwen2初体验&#xff1a;用Transformers打造智能聊天机器人3【Qwen2部署实战】探索Qwen2-7B&#xff1a;通过FastApi框架实现API的部署与调用4【Q…

实战打靶集锦-31-monitoring

文章目录 1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 ssh服务4.2 smtp服务4.3 http/https服务 5. 系统提权5.1 枚举系统信息5.2 枚举passwd文件5.3 枚举定时任务5.4 linpeas提权 6. 获取flag 靶机地址&#xff1a;https://download.vulnhub.com/monitoring/Monitoring.o…

Chapter12 屏幕后处理效果——Shader入门精要学习笔记

Chapter12 屏幕后处理效果 一、屏幕后处理概述以及基本脚本系统1.OnRenderImage 函数 —— 获取屏幕图像2.Graphics.Blit 函数 —— 使用特定的Shader处理3.在Unity中实现屏幕后处理的基本流程4.屏幕后处理基类 二、调整亮度、饱和度和对比度1.BrightnessSaturationAndContrast…

[计算机基础]一、计算机组成原理

计算机组成原理的考察目标为&#xff1a; 1. 掌握单处理器计算机系统中主要部件的工作原理、组成结构以及相互连接方式。 2. 掌握指令集体系结构的基本知识和基本实现方法&#xff0c;对计算机硬件相关问题进行分析&#xff0c;并能够对相关部件进行设计。 3. 理解计算机系统的…