【web】vue 播放后端(flask)发送的 mp3 文件

news2024/11/25 11:32:12

文章目录

    • 演示
    • 后端(flask)
    • 前端(vue3)
    • 重要说明

演示

在这里插入图片描述

后端(flask)

  • 后端返回的是 mp3 文件的 url,是可以直接在浏览器上打开后播放的
  • 处理跨域请求
    pip install flask-cors
    
  • 后端代码
    from flask import Flask, request, jsonify
    from flask_cors import CORS
    
    # 我的 mp3 文件存放路径
    audio_temp_dir = 'garbage_can'
    
    # static_folder 下的文件,可以直接通过 url 访问
    app = Flask(__name__, static_folder=f'./{audio_temp_dir}')
    # 全局跨域
    CORS(app, supports_credentials=True)
    
    
    @app.route("/speech", methods=['POST'])
    def transfer_text_to_speech():
        request_data = request.json
        # 处理 mp3 文件,得到文件名
        file_name = do_something()
        return jsonify({
            """
                request.host_url : 后端 url(app.run() 时,控制台打印的那个 url)
                audio_temp_dir: 音频文件存放的文件夹(自定义的)
                file_name: mp3 文件
            """
            'url': f'{request.host_url}{audio_temp_dir}/{file_name}'
        })
    
    
    if __name__ == '__main__':
        app.run(port=5000)
    
    

前端(vue3)

  • html
    <template>
    	<!-- 演示中使用的是 element-plus 的 button 组件 -->
    	<button type="primary" @click="handleAudio"">播放</button>
    	<audio ref="audioPlayer" controls>
    			<source :src="audioUrl" type="audio/mpeg">
    			Your browser does not support the audio element.
        </audio>
    </template>
    
  • js
    export default {
        name: "你的组件名",
        data() {
            return {
                audioUrl: null
            }
        },
    }
        methods: {
    		handleAudio() {
                axios.post('http://127.0.0.1:5000/speech', {
                    // post 请求参数
                }).then(response => {
                	// 后端返回的数据是 { url : xxxx }
                    this.audioUrl = response.data.url;
                    this.$refs.audioPlayer.src = this.audioUrl;
                    
                    // 直接播放声音
                    this.$refs.audioPlayer.play();
                    // 打印的链接是可以直接在浏览器端播放的
                    console.log(this.audioUrl)
                })
            }
    	}
    

重要说明

  • 我尝试在 vue 中使用 v-model 来绑定 audio 标签的 src(得到响应后设置src),但是这样做无法正常播放音频,原因不明,知道的可以在评论区分享一下
  • 如果通过设置标签的 ref 属性,再通过 this.$refs 设置 audio 标签的 src,就可以成功播放

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

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

相关文章

一场高规格品鉴会,窥探剑南春冲击高端的“野心”

执笔 | 洪大大 编辑 | 扬 灵 12月27日&#xff0c;以“锦绣巴蜀品味东方”为主题的剑南春东方红致敬中国时代品鉴会在有云鹿洄天府1911中国川菜体验中心举办&#xff0c;数十位媒体代表和嘉宾汇聚一堂&#xff0c;共同品味剑南春东方红的品质魅力&#xff0c;感知高端白酒品…

什么是缓存、为什么要用缓存、缓存分类、缓存测试、缓存更新、缓存设计考虑点、缓存测试点

一、缓存 缓存是一种将数据存储在高速缓存中的技术&#xff0c;它可以提高应用程序的性能和响应速度。 二、 为什么要用缓存 1. 高性能(主要目的) 查询耗时&#xff0c;但变化少&#xff0c;又有很多读请求情况下&#xff0c;可以将查询结果放到缓存中。减少对数据库的压力&…

光伏、储能一体化监控及运维解决方案 安科瑞 许敏

前言&#xff1a;今年以来&#xff0c;在政策利好推动下光伏、风力发电、电化学储能及抽水蓄能等新能源行业发展迅速&#xff0c;装机容量均大幅度增长&#xff0c;新能源发电已经成为新型电力系统重要的组成部分&#xff0c;同时这也导致新型电力系统比传统的电力系统更为复杂…

clang-format

Clang-Format Clang-Format Style Options — Clang 18.0.0git documentation VSCode 1.1 安装扩展 C 1.2 设置 1.3 使用 .clang-fornat 放置在项目&#xff08;代码&#xff09;文件夹下使用 .clang-fornat 为文件名 --- # https://clang.llvm.org/docs/ClangFormatStyle…

document360的替代品:原来它也这么好用

在当今信息爆炸的时代&#xff0c;企业和组织需要一个高效的知识管理系统来整理、存储和共享知识。document360是一款备受欢迎的知识库管理系统&#xff0c;但是它并非唯一的选择。本文将介绍document360的替代品&#xff0c;感兴趣就往下看吧。 首先&#xff0c;让我们来了解…

Python分析了京东7万+条评论,仅用3分钟,结果发现……

之前学习Python爬虫采集&#xff0c;为了练手用Scrapy写了一个爬虫&#xff0c;整整采集了京东平台vivo旗舰店7万多条评论。一直也没觉得这些评论数据有啥用&#xff0c;就留在MongoDB中吃灰。最近学了jieba和wordcloud之后&#xff0c;突发奇想着分析下这7万多条评论数据&…

【网络安全】上网行为代理服务器启用Alerts

文章目录 启用AlertsAlert Limits per 24 hoursEmail AlertsSystem Alerts Suspicious Activity AlertsPermitted Suspicious Activity AlertsBlocked Suspicious Activity Alerts Protocol&Category Usage Alerts告警邮件范例推荐阅读 这里的Web Proxy主要代指proxy serve…

HarmonyOS应用开发-搭建开发环境

本文介绍如何搭建 HarmonyOS 应用的开发环境&#xff0c;介绍下载安装 DevEco Studio 开发工具和 SDK 的详细流程。华为鸿蒙 DevEco Studio 是面向全场景的一站式集成开发环境&#xff0c;面向全场景多设备&#xff0c;提供一站式的分布式应用开发平台&#xff0c;支持分布式多…

声纹识别资源汇总(不断更新)

目录 一、任务说明二、指标三、声纹识别研究现状四、数据集开源&#xff08;1&#xff09;VoxCeleb&#xff1a;&#xff08;2&#xff09;WSJ and LibriSpeech Corpus&#xff08;3&#xff09;VOiCES Dataset&#xff08;4&#xff09;English Multi-speaker Corpus for Voic…

机器学习笔记(四)初识卷积神经网络

前言 第一次写卷积神经网络&#xff0c;也是照着paddlepaddle的官方文档抄&#xff0c;这里简单讲解一下心得。 首先我们要知道之前写的那些东西都是什么&#xff0c;之前写的我们称之为简单神经网络&#xff0c;也就是简单一层连接输出和输出&#xff0c;通过前向计算和逆向…

LM358 典型应用Multisim仿真设计

一、LM358简介&#xff1a; LM358 运算放大器属于一种低功率双运算放大器&#xff0c;由两个独立的高增益内部频率补偿运算放大器组成&#xff0c;专门设计用于在宽电压范围内由单电源供电。LM358 运算放大器具有低功耗、共模输入电压范围扩展到地/VEE以及单电源或双电源操作。…

代表团坐车 - 华为OD统一考试

OD统一考试&#xff08;B卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 某组织举行会议&#xff0c;来了多个代表团同时到达&#xff0c;接待处只有一辆汽车可以同时接待多个代表团&#xff0c;为了提高车辆利用率&#xff0c;请帮接待…

Linux 系统拉取 Github项目

一、安装Git 在Linux上拉取GitHub项目可以使用Git命令。首先确保已经安装了Git。如果没有安装&#xff0c;可以通过包管理器&#xff08;比如apt、yum&#xff09;来进行安装。 sudo yum install git #查看安装版本 git -version二、关联GitHub 配置本地账户和邮箱 >>…

Redis缓存穿透,缓存击穿,缓存雪崩

文章目录 Redis缓存穿透&#xff0c;缓存击穿&#xff0c;缓存雪崩1. 缓存穿透1.1 解决方案1&#xff1a;缓存空数据1.2 解决方案2&#xff1a;使用布隆过滤器1.2.1 布隆过滤器介绍 2. 缓存击穿2.1 解决方案1&#xff1a;互斥锁2.2 解决方案2&#xff1a;逻辑过期 3. 缓存雪崩3…

抖店和商品橱窗有什么区别?新手应该选哪个?

我是电商珠珠 临近年底了&#xff0c;有的人已经开始为下一年筹谋&#xff0c;有的去抖音做账号做直播带货&#xff0c;不会直播带货的就想尝试做下抖店&#xff0c;来为以后的经济打基础。 刚想要接触却对这类有些迷糊&#xff0c;发现商品橱窗和抖店都可以卖货&#xff0c;…

k8s基础架构

k8s基础架构 创建pod流程 &#xff08;1&#xff09;用户通过kubectl向api-server发起创建pod请求&#xff1b; &#xff08;2&#xff09;apiserver通过对应的kubeconfig进行认证&#xff0c;认证通过后将yaml中的po信息存到etcd&#xff1b; &#xff08;3&#xff09;Contr…

Oracle笔记-查看表已使用空间最大空间

目前以Oracle18c为例&#xff0c;主要是查这个表USER_SEGMENTS。 在 Oracle 18c 数据库中&#xff0c;USER_SEGMENTS 是一个系统表&#xff0c;用于存储当前用户&#xff08;当前会话&#xff09;拥有的所有段的信息。段是 Oracle 中分配存储空间的逻辑单位&#xff0c;用于存…

Java智慧校园源码,SaaS云平台,私有云部署,移动端小程序使用小程序原生语言开发

系统概述&#xff1a; 电子班牌系统又称之为智慧班牌&#xff0c;是当前校园数字化信息化建设、文化建设的主流&#xff0c;是校园日常工作安排、校园信息发布、班级文化风采展示、课堂交流的重要应用载体。智慧班牌系统在传统信息发布和校园文化展示功能基础上&#xff0c;融…

Polygon zkEVM ROM Spearbit审计报告解读(2023年6月Dragon Fruit升级版本)

1. 引言 前序博客有&#xff1a; Polygon zkEVM Hexens审计报告解读Polygon zkEVM Spearbit审计报告解读&#xff08;2022年12月版本&#xff09;Polygon zkEVM Spearbit审计报告解读&#xff08;2023年1月版本&#xff09;Polygon zkEVM Spearbit审计报告解读&#xff08;20…

计网自顶向下(多线程Web代理服务器)

目录 &#x1f33c;前言 &#x1f33c;多线程Web代理服务器 &#x1f392;过程 &#x1f3c0;解释 &#x1f333;代码 &#x1f33c;前言 前置知识 &#xff08;1&#xff09;进程 与 线程 进程与线程的一个简单解释 - 阮一峰的网络日志 (ruanyifeng.com) &#xff08;…