vue3使用音频audio标签

server/2025/1/23 1:17:10/

在这里插入图片描述

文章目录

  • 一、背景
  • 二、页面
  • 三、标签介绍
  • 四、代码
  • 五、代码说明
    • 场景1:针对加载固定格式的比如MP3文件,可直接使用\<audio>标签
    • 场景2:针对播放告警内容,比如中文或者英文词条情况

一、背景

项目使用vue3,需求针对告警进行语音提示,点击“播放音频”按钮进行语音提示:
在这里插入图片描述

二、页面

在这里插入图片描述

三、标签介绍

\<audio> 标签中的 preload 属性用于控制浏览器在页面加载时如何处理音频文件的预加载preload 属性可以接受以下几个值:

  • auto:浏览器会在页面加载时尽可能地预加载音频文件。这意味着音频文件会被下载到浏览器的缓存中,以便用户可以尽快播放。通常这是最常用的设置。

  • metadata:浏览器只会预加载音频文件的元数据(如时长、音频轨道等),而不会下载整个文件。这对于减少初始加载时间是有帮助的,尤其是在文件较大时。

  • none:浏览器不会预加载音频文件。这意味着音频文件不会被下载,直到用户点击播放按钮。这样可以节省带宽,但用户可能会在第一次播放时遇到延迟。

使用 preload="auto" 的好处是能够提高用户体验,因为音频文件会更快地准备好播放,尤其是在用户可能会立即播放音频的情况下。不过,使用时也要考虑到用户的带宽和流量限制。

四、代码

音频文件配置

在这里插入图片描述

xx.vue

<div class="param"><a-button @click="playAlarmContent">播放音频</a-button><audio ref="audioRef" :src="audioSrc" preload="auto"></audio>
</div>const audioSrc = ref(new URL('@/assets/audio/emergency.mp3', import.meta.url).href);
const audioRef = ref(null);const addParam = ref({"alarmChoice": "2",
});//智能语音播放 0--智能语音播放  1----声音文件告警   2---静音
const playAlarmContent = (context) => {if (addParam.value.alarmChoice == 2) {audioRef.value.pause()return} else if (addParam.value.alarmChoice == 1) {audioRef.value.play()}  else if (addParam.value.alarmChoice == 0) {// context = t('Alaram_temperatureAlarm_low')const utterance = new SpeechSynthesisUtterance(context);window.speechSynthesis.speak(utterance);}
};

五、代码说明

audio_57">场景1:针对加载固定格式的比如MP3文件,可直接使用<audio>标签

<audio ref="audioRef" :src="audioSrc" preload="auto"></audio>const audioSrc = ref(new URL('@/assets/audio/emergency.mp3', import.meta.url).href);
const audioRef = ref(null);audioRef.value.play()	//播放
audioRef.value.pause()	//暂停

注意点:

  • audioSrc :用于指向mp3文件位置
  • audioRef :和ref名称相同即可关联上
  • auto:浏览器会在页面加载时尽可能地预加载音频文件。这意味着音频文件会被下载到浏览器的缓存中,以便用户可以尽快播放。通常这是最常用的设置。

场景2:针对播放告警内容,比如中文或者英文词条情况

// context = t('Alaram_temperatureAlarm_low')const utterance = new SpeechSynthesisUtterance(context);window.speechSynthesis.speak(utterance);

注意点:

  • context:就是完整的内容,而我例子t(‘Alaram_temperatureAlarm_low’)是解析词条然后返回对应语言的内容。
  • 使用了 Web Speech API 中的 SpeechSynthesisUtterance 和 speechSynthesis 对象来实现文本到语音的功能。
  • SpeechSynthesisUtterance: 这是一个构造函数,用于创建一个语音合成的实例。你可以将要朗读的文本作为参数传递给它。
  • window.speechSynthesis.speak(utterance): 这个方法用于开始朗读 utterance 对象中指定的文本。

http://www.ppmy.cn/server/160612.html

相关文章

stm32 L051 adc配置及代码实例解析

一 cude的设置&#xff1a; 1. 接口的基本设置&#xff1a; 2. 参数的设置&#xff1a; 二 代码的逻辑&#xff1a; 1. 上面的直接生成代码&#xff0c;然后使用下面源码即可读到adc的数据&#xff1a; void adc_battery_start(void) {uint32_t ADC_value 0;HAL_ADC_Start(&…

nss刷题3

[SWPUCTF 2022 新生赛]webdog1__start level1&#xff1a; 打开环境后什么也&#xff0c;没有&#xff0c;查看源码&#xff0c;看到第一关是MD5值&#xff0c;要get传参web&#xff0c;然后web的值的MD5和它原来值相等&#xff0c;0e开头的字符在php中都是0&#xff0c;传入…

Spring Boot 3.4.x 和 Micrometer 2.0 的结合 案例 以及使用方法

Spring Boot 3.4.x 和 Micrometer 2.0 的结合&#xff0c;主要是为了更好地进行应用性能监控。Micrometer 是一个应用性能监控工具&#xff0c;它可以与 Spring Boot 集成&#xff0c;提供一个统一的度量系统&#xff0c;并与各种监控系统&#xff08;如 Prometheus, Graphite,…

【鸿蒙】0x02-LiteOS-M基于Qemu RISC-V运行

OpenHarmony LiteOS-M基于Qemu RISC-V运行 系列文章目录更新日志OpenHarmony技术架构OH技术架构OH支持系统类型轻量系统&#xff08;mini system&#xff09;小型系统&#xff08;small system&#xff09;标准系统&#xff08;standard system&#xff09; 简介环境准备安装QE…

react19新API之use()用法总结

React use() Hook 使用指南 概述 use() 是 React 19 引入的新 Hook&#xff0c;它允许你在组件内部直接使用 Promise、Context 和其他可订阅的值。它是一个更通用的数据获取和订阅机制。 基本语法 const value use(resource);主要用途 1. Promise 处理 function UserDet…

Android开发,待办事项提醒App的设计与实现(个人中心页)

文章目录 1. 编写UI布局2. 实现逻辑3. 运行效果图3. 关于作者其它项目视频教程介绍 Android开发&#xff0c;待办事项提醒App的设计与实现&#xff1a; https://blog.csdn.net/jky_yihuangxing/article/details/145277956?spm1001.2014.3001.5501 1. 编写UI布局 fragment_mi…

Java后端Controller参数校验的一些干货及问题~

你们好,我是金金金。 场景 先看如下一张图,这是一个控制器里面的一个方法,第一眼是不是就感觉代码量非常多?而且随着参数越来越多 你则需要写n个if else来完成校验,属实是麻烦而且不够优雅 JSR303校验 仔细认真看,更容易理解吸收,想想什么层面需要做校验呢? 前端请求后…

【漫话机器学习系列】053.梯度爆炸(Exploding Gradient Problem)

梯度爆炸&#xff08;Exploding Gradient Problem&#xff09; 定义 梯度爆炸是指在深度神经网络的训练过程中&#xff0c;由于梯度的值在反向传播时不断累积&#xff0c;导致梯度变得非常大&#xff0c;以至于模型无法正常学习。这种现象在深层网络或循环神经网络&#xff0…