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

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

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://www.rhkb.cn/news/381035.html

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

相关文章

游戏常用运行库安装包 Game Runtime Libraries Package

游戏常用运行库安装包&#xff08;Game Runtime Libraries Package&#xff09;是一个整合了多种游戏所需运行库的安装程序&#xff0c;旨在帮助玩家和开发者解决游戏无法正常运行的问题。该安装包支持从Windows XP到Windows 11的系统&#xff0c;并且具备自动检测系统并推荐合…

【python】OpenCV—Extreme Points in the Contour

文章目录 1、需求描述2、功能实现3、更多的例子4、完整代码5、参考 1、需求描述 给一张图片&#xff0c;找出其轮廓&#xff0c;并画出轮廓的上下左右极值点 输入图片 输出效果 2、功能实现 # 导入必要的包 import imutils import cv2 # 加载图像&#xff0c;将其转换为灰度…

【数据集处理工具】将COCO格式数据集的val.json与tett.json文件合并为一个json

合并COCO数据集JSON文件的Python脚本 1、目的2、功能概述3、使用方法4、注意事项5、 代码部分 1、目的 此Python脚本旨在帮助用户合并多个COCO格式的数据集JSON文件&#xff0c;特别适用于将验证集和测试集的标注数据整合到单一文件中。 该脚本假设各个数据集的类别信息&…

django踩坑(四):终端输入脚本可正常执行,而加入crontab中无任何输出

使用crontab执行python脚本时&#xff0c;有时会遇到脚本无法执行的问题。这是因为crontab在执行任务时使用的环境变量与我们在终端中使用的环境变量不同。具体来说&#xff0c;crontab使用的环境变量是非交互式(non-interactive)环境变量&#xff0c;而终端则使用交互式(inter…

国内访问Docker Hub慢问题解决方法

在国内访问Docker Hub时可能会遇到一些困难&#xff0c;但幸运的是&#xff0c;有多种解决方案可以帮助你顺利下载Docker镜像。以下是一些有效的解决方案&#xff1a; 配置Docker镜像源&#xff1a;你可以通过配置Docker的daemon.json文件来使用国内镜像源&#xff0c;比如DaoC…

基于若依的ruoyi-nbcio流程管理系统修正自定义业务表单的回写bug

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; h…

项目收获总结--大数据量存储架构设计方案

项目收获总结--大数据量存储架构设计方案 一、背景二、数据存储层技术选型2.1 MySQL2.2 MongoDB2.3 HBase2.4 HBaseElasticSearch 三、HBaseElasticSearch基本原理3.1 前置考虑3.2 HBaseElasticSearch优点3.3 HBaseElasticSearch缺点 四、HBaseElasticSearch数据一致性架构4.1 …

linux系统设置开机启动的两种方法systemd及rc.local(手工写sh脚本,手工写service服务)

文章目录 知识点实验一、systemd&#xff08;一&#xff09;自写一个sh脚本并加入开机启动&#xff08;二&#xff09;源码安装的nginx加入开机启动 rc.local 知识点 在Linux系统中&#xff0c;有多种方法可以设置开机启动。以下是其中的一些主要方法&#xff1a; systemd 在较…

3.3-LSTM的改进

文章目录 1改进点1.1多层化1.2 dropout1.2.1具体概念1.2.2应该插入到LSTM模型的哪里 1.3权重共享 2改进之后的LSTMLM的代码实现2.1初始化2.2前向计算2.3反向传播 3相应的学习代码的实现4总结 1改进点 1.1多层化 加深神经网络的层数往往能够学习更复杂的模式&#xff1b;因此这…

5种梯度下降法的公式

5种梯度下降法的公式推演&#xff1a; 1. 梯度下降 (Gradient Descent) 梯度下降法的更新公式为&#xff1a; θ t 1 θ t − η ∇ θ J ( θ ) \theta_{t1} \theta_t - \eta \nabla_\theta J(\theta) θt1​θt​−η∇θ​J(θ) 其中&#xff0c; θ t \theta_t θt​…

Tomcat服务器

1.Tomcat定义以及作用 Web服务器是一个应用程序(软件)&#xff0c;对HTTP协议的操作进行封装&#xff0c;使得程序员不必直接对协议进行操作。(不用程序员自己写代码去解析http协议规则&#xff0c;比如不用考虑响应码的问题&#xff0c;以及响应数据应该如何写)&#xff0c;让…

ZK学习笔记

ZK 一.基本概念 Zookeeper是⼀个开源的分布式协调服务&#xff0c;其设计⽬标是将那些复杂的且容易出错的分布式⼀致性服务封装起来&#xff0c;构成⼀个⾼效可靠的原语集&#xff0c;并以⼀些简单的接⼝提供给⽤户使⽤。 zookeeper是⼀个典型的分布式数据⼀致性的解决⽅案&…

在 PostgreSQL 里如何实现数据的冷热数据分层存储的自动化策略调整?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 在 PostgreSQL 里如何实现数据的冷热数据分层存储的自动化策略调整 在 PostgreSQL 里如何实现数据的冷…

ip地址是电脑还是网线决定的

在数字化时代的浪潮中&#xff0c;网络已经成为了我们日常生活和工作不可或缺的一部分。当我们谈论网络时&#xff0c;IP地址无疑是一个核心的概念。然而&#xff0c;关于IP地址的分配和决定因素&#xff0c;很多人可能存在误解。有些人认为IP地址是由电脑决定的&#xff0c;而…

mybatisPlus和mybatis的版本冲突问题、若依换成MP、解决git无法推送、使用若依框架的swagger、以后再遇到团队项目应该怎么做。

20240716 一. mybatisPlus和mybatis的版本冲突问题1. 使用前的准备2. 我遇到了一个很严重的问题。3. 解决问题&#xff0c;好吧也没解决&#xff0c;发现问题&#xff01;&#xff01; 二、该死的git&#xff01;&#xff01;&#xff01;&#xff01;1. 解决无法在idea中使用g…

CBSD bhyve Ubuntu 配置vnc登录管理

CBSD介绍 CBSD是为FreeBSD jail子系统、bhyve、QEMU/NVMM和Xen编写的管理层。该项目定位为一个综合解决方案的单一集成工具&#xff0c;用于使用预定义的软件集以最少的配置快速构建和部署计算机虚拟环境。 虽然CBSD没有提供额外的操作系统级功能&#xff0c;但它极大地简化了…

fatal: not a git repository (or any of the parent directories): .git

问题描述&#xff1a; 通过git pull 拉取代码提示&#xff1a; fatal: not a git repository (or any of the parent directories): .git 这个错误信息表明你当前所在的目录不是一个 Git 仓库&#xff0c;或者任何父目录中都没有 .git 目录。 问题解决&#xff1a; 确认当前目…

Windows 、Linux、MacOS 进程管理机制

本心、输入输出、结果 文章目录 Windows 、Linux、MacOS 进程管理机制前言Windows 进程管理机制Linux 进程管理macOS 进程管理内存不够了,几个操作系统如何处理Windows 、Linux、MacOS 进程管理机制 编辑 | 简简单单 Online zuozuo 地址 | https://blog.csdn.net/qq_15071263 …

<数据集>混凝土缺陷检测数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;7353张 标注数量(xml文件个数)&#xff1a;7353 标注数量(txt文件个数)&#xff1a;7353 标注类别数&#xff1a;6 标注类别名称&#xff1a;[exposed reinforcement, rust stain, Crack, Spalling, Efflorescence…

JavaSE从零开始到精通

1.前置知识 JVM&#xff1a;java virtrual machine, java虚拟机, 专门用于执行java代码的一款软件。可以将class文件&#xff0c;转换为机器认识的机器码&#xff0c;因为我们的计算机只认识010101的二进制语言。JRE&#xff1a;java runtime enviroment, java运行时环境, jav…