当前位置: 首页 > news >正文

VUE+SPRINGBOOT从0-1打造前后端-前后台系统-语音评测

语音评测技术作为人工智能领域的重要应用之一,在教育、语言学习等领域发挥着越来越重要的作用。本文将详细介绍如何基于WebSocket协议和讯飞开放平台实现一个实时语音评测系统,该系统能够对用户朗读的中英文内容进行实时评测并给出评分反馈。

系统架构概述

整个语音评测系统采用前后端分离的架构设计:

  1. 前端部分:基于Vue.js框架和Element UI组件库实现用户界面

  2. 通信层:使用WebSocket协议与讯飞语音评测服务建立实时连接

  3. 评测服务:依托讯飞开放平台的语音评测API实现核心评测功能

系统工作流程如下:

  1. 用户在前端选择评测题型并输入/获取评测文本

  2. 前端通过WebSocket与讯飞服务建立连接

  3. 用户开始朗读,系统实时采集音频数据

  4. 音频数据通过WebSocket发送到评测服务

  5. 服务返回评测结果并在前端展示

关键技术实现

1. 前端界面设计

系统使用Element UI组件库构建了直观的用户界面,主要分为三个部分:

<template><div class="Evaluate-container"><!-- 评测题型列表 --><div><el-row :gutter="10" style="border-bottom: 1px dashed grey"><!-- 各种题型卡片 --></el-row></div><!-- 合成文本区域 --><div><el-input type="textarea" v-model="iseContent" rows="15"></el-input></div><!-- 操作按钮 --><el-button type="primary" @click="recordEvaluate">录音评测</el-button><el-button type="danger" @click="stopScore">停止打分</el-button></div>
</template>

题型选择区采用卡片式布局,每种题型包含:

  • 图标标识

  • 题型名称

  • 适用语言和人群标签

  • 单选按钮

2. 音频采集与处理

系统使用recorder.js库实现浏览器端的音频采集:

// 初始化录音工具
let recorder = new Recorder("../../recorder")
recorder.onStart = () => {console.log("开始录音了")
}
recorder.onStop = () => {console.log("结束录音了")
}// 帧录音回调
recorder.onFrameRecorded = ({isLastFrame, frameBuffer}) => {if (!isLastFrame && wsFlag) {// 发送中间帧数据const params = {"business": {"cmd": "auw","aus": 1,"aue": "raw"},"data": {"status": 1,"data": toBase64(frameBuffer),"data_type": 1,"encoding": "raw"}}wsTask.send(JSON.stringify(params))} else {// 发送结束帧const params = {"business": {"cmd": "auw","aus": 4,"aue": "raw"},"data": {"status": 2,"data": ""}}wsTask.send(JSON.stringify(params))}
}

音频参数配置:

  • 采样率:16000Hz

  • 帧大小:1280字节

  • 编码格式:原始PCM(raw)

3. WebSocket通信实现

系统与讯飞语音评测服务的通信基于WebSocket协议,主要流程包括:

  1. 建立连接:获取鉴权URL并创建WebSocket连接

async wsInit() {let _this = this;let reqeustUrl = await _this.getWebSocketUrl()wsTask = new WebSocket(reqeustUrl);wsTask.onopen = function() {// 发送第一帧数据let params = {"common": { "app_id": atob(_this.user.appid) },"business": {"rst": "entirety","ise_unite": "1","category": _this.category,"ent": _this.ent,"text": _this.utf8bom + _this.iseContent},"data": { "status": 0, "data": "" }}wsTask.send(JSON.stringify(params))// 开始录音recorder.start({ sampleRate: 16000, frameSize: 1280 });}
}
  1. 鉴权处理:使用HMAC-SHA256算法生成签名

getWebSocketUrl() {return new Promise((resolve, reject) => {var url = this.URL;var host = "ise-api.xfyun.cn";var apiKeyName = "api_key";var date = new Date().toGMTString();var algorithm = "hmac-sha256";var headers = "host date request-line";var signatureOrigin = `host: ${host}\ndate: ${date}\nGET /v2/open-ise HTTP/1.1`;var signatureSha = CryptoJS.HmacSHA256(signatureOrigin, atob(this.user.apisecret));var signature = CryptoJS.enc.Base64.stringify(signatureSha);var authorizationOrigin = `${apiKeyName}="${atob(this.user.apikey)}", algorithm="${algorithm}", headers="${headers}", signature="${signature}"`;var authorization = base64.encode(authorizationOrigin);url = `${url}?authorization=${authorization}&date=${encodeURI(date)}&host=${host}`;resolve(url);});
}
  1. 消息处理:接收评测结果并解析

wsTask.onmessage = function(message) {let resJson = JSON.parse(message.data);if (resJson.data.status == 2) {let res = base64.decode(resJson.data.data)_this.iseContent = reswsTask.close();wsFlag = false}
}

4. 多题型支持

系统支持多种评测题型,通过watch监听题型变化并自动填充示例文本:

watch: {radio(newVal, oldVal) {let tempArray = newVal.split("+")this.ent = tempArray[0]this.category = tempArray[1]switch(newVal) {case "cn_vip+read_syllable":this.iseContent = "国"breakcase "cn_vip+read_word":this.iseContent = "中国"break// 其他题型处理...}}
}

支持的题型包括:

  • 中文:单字、词语、句子、篇章评测

  • 英文:单词、句子、篇章、选择、复述、自由评测等

系统特色与优化

  1. 实时性优化

    • 采用WebSocket协议实现低延迟通信

    • 音频数据分帧传输,减少等待时间

    • 前端实时显示评测结果

  2. 多题型适配

    • 统一接口支持多种评测模式

    • 自动根据题型填充示例文本

    • 支持中英文不同评分标准

  3. 安全性保障

    • 使用HMAC-SHA256进行API鉴权

    • 敏感信息(API Key)进行Base64编码处理

    • 通信数据加密传输

  4. 用户体验优化

    • 响应式界面设计

    • 操作流程简洁明了

    • 实时反馈和错误提示

实现效果展示

系统实现了以下核心功能:

  1. 多种语音评测题型选择

  2. 实时音频采集与传输

  3. 评测结果实时返回

  4. 中英文双语支持

  5. 不同年龄段适配

操作流程:

  1. 用户选择评测题型

  2. 系统自动填充示例文本

  3. 点击"录音评测"开始朗读

  4. 系统实时传输音频数据

  5. 评测完成显示结果

总结与展望

本文详细介绍了一个基于WebSocket的实时语音评测系统的设计与实现。系统充分利用现代Web技术(Vue.js、WebSocket)和讯飞开放平台的语音评测能力,实现了高效、稳定的语音评测功能。

未来可改进方向:

  1. 增加更多语种支持

  2. 实现更详细的发音问题分析

  3. 加入历史记录和对比功能

  4. 开发移动端适配版本

  5. 增加AI辅助练习功能

该系统可作为在线教育平台的核心模块,为语言学习者提供实时、准确的发音反馈,具有广阔的应用前景。

http://www.dtcms.com/a/328434.html

相关文章:

  • 嵌入式学习(day25)文件IO:open read/write close
  • VGG改进(2):基于Local Attention的模型优化
  • 书籍数组中未出现的最小正整数(8)0812
  • 《飞算JavaAI:新一代智能编码引擎,革新Java研发范式》
  • 跑腿平台开发实战:同城O2O系统源码的模块化与可扩展性方案
  • 每日一练:将一个数字表示成幂的和的方案数;动态规划、深度优先搜索
  • 【Altium designer】快速建立原理图工程的步骤
  • 2025开放计算技术大会|开源开放推动系统创新 加速AIDC全球协作
  • 过拟合、欠拟合与方差/偏差的关系
  • Langchain结合deepseek:框架+模型的AI测试实践
  • 小白学习pid环控制-实现篇
  • 杰里平台7083G 如何支持4M flash
  • 【oracle闪回查询】记录字段短时间被修改的记录
  • MyBatis-Plus核心内容
  • AAC音频编码器技术详解:原理、应用与发展
  • Java数组排序
  • 嵌入式系统分层开发:架构模式与工程实践(四)(状态机的应用和面向对象的编程)
  • redis认识缓存击穿
  • 特征工程--机器学习
  • [ 数据结构 ] 时间和空间复杂度
  • Linux中Apache与Web之虚拟主机配置指南
  • 栈和队列:数据结构中的基础与应用​
  • GaussDB 数据库架构师修炼(十三)安全管理(2)-数据库权限管理
  • 专题:2025城市NOA智能驾驶研究报告|附70+份报告PDF 汇总下载
  • Spring MVC 处理请求的完整流程详解
  • Kubernetes1.28-单Master集群部署
  • 【Vue中key属性的技术分析】
  • 智能装配线cad【8张】三维图+设计说明书
  • 安卓Fragmnet的生命周期
  • 【5】Transformers快速入门:Transformer 是啥?