vue3使用音频audio标签

文章目录

一、背景

项目使用vue3,需求针对告警进行语音提示,点击"播放音频"按钮进行语音提示:

二、页面

三、标签介绍

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

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

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

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

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

四、代码

音频文件配置

xx.vue

java 复制代码
<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);
  }
};

五、代码说明

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

java 复制代码
<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:针对播放告警内容,比如中文或者英文词条情况

java 复制代码
// 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 对象中指定的文本。
相关推荐
上海合宙LuatOS8 小时前
LuatOS核心库API——【hmeta 】硬件元数据
单片机·嵌入式硬件·物联网·算法·音视频·硬件工程·哈希算法
一个人旅程~10 小时前
QQ音乐、potplayer、VLC等对音乐格式的支持和加密文件格式的转换有哪些方法?potplayer的音质相对于VLC有哪些特点?
windows·经验分享·电脑·音视频
音视频牛哥11 小时前
从协议栈到工程落地:SmartMediaKit全链路模块化架构深度解析
音视频·rtsp播放器·rtmp播放器·安卓rtsp服务器·安卓轻量级rtsp服务·安卓rtsp摄像头推流·安卓摄像头rtmp推流
奔跑吧 android12 小时前
【车载Audio】【AudioHal 04】【高通音频架构】【从 AHAL adev_open 到 PAL XML 解析:30微秒内的调用链深度追踪】
音视频·audiohal·车载audio·高通音频架构·ahal·audiofinger
REDcker13 小时前
FFmpeg完整文档
linux·服务器·c++·ffmpeg·音视频·c·后端开发
linux_cfan14 小时前
WordPress 视频播放痛点解决方案:支持 RTSP/WebRTC 与字幕检索的 ZWPlayer 插件实测
php·音视频·webrtc
AI周红伟1 天前
周红伟:字节官方发布Seedance 2.0 视频模型,技术实现过程和 技术分解
音视频
查无此人byebye1 天前
实战DDPM扩散模型:MNIST手写数字生成+FID分数计算(完整可运行版)
人工智能·pytorch·python·深度学习·音视频
奔跑吧 android2 天前
【车载audio】【AudioPolicyManager 01】【AudioPolicyClient 类介绍】
android·audio·audioflinger·aosp15·音频开发·车载音频·audiopolicym
九丝城主2 天前
1V1音视频对话2--Web 双浏览器完整通话测试(强制 relay)
前端·音视频