ASR数据集采集系统 | ASR方言数据集采集系统 | ASR方言数据集采集系统 | 语音识别数据集采集系统

0. 效果演示

ASR数据集采集系统演示 | ASR方言数据集采集系统

效果演示视频,点击这里访问

项目以及打包上传到我的百度网盘中

通过网盘分享的文件:ASR数据集采集系统

链接: https://pan.baidu.com/s/18IGnt6pzw2MBNIMyUIDPLg?pwd=9jaw 提取码: 9jaw

更详细文章可以点击这里访问我的博客

1. 研究背景

在做ASR数据集采集的时候面临着一个突出的问题,音频和文本标签对不上。出现这种问题,大概率是录音的时候命名和标注出现偏移,并且使用录音软件录制后,还需要重命名音频文件,这些问题都使得采集数据过程变得缓慢。为此特地开发一个ASR数据采集系统。该系统不单解决了上述问题,还可以部署在云服务器中使得在各地的人都可以一起参与数据集采集,突破了时空地理位置限制,同时每个人又可以清晰看到他人录制的音频,可以做到相互监督相互检查,进一步提高数据采集的精准度。

2. 技术架构

ASR数据集采集系统是前后端分离项目,其中后端是使用SpringBoot开发,依赖JDK21,前端使用Vue开发,依赖node。同时还使用到nginx作为web服务器和做反向代理。数据记录存储在MySQL数据库中,并且可以导出excel表格。

下面是nginx的核心配置:(vim /etc/nginx/nginx.conf)

shell 复制代码
server {
            listen 80;
            server_name localhost;
            return 301 https://$host$request_uri;
        }

        server {
            listen 443 ssl;
            server_name localhost;

            ssl_certificate /usr/local/src/asr/ssl/server.crt;
            ssl_certificate_key /usr/local/src/asr/ssl/server.key;
            
            # ASR数据集采集系统前端页面
            location / {
                root /usr/local/src/asr/AutoLabelASR/dist;
                index index.html;
            }
			
			# ASR数据集采集系统后端接口
            location /api/audio/ {
                proxy_pass http://localhost:8080;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
            }
            
            # 播放音频
            location /audio/ {
                proxy_pass http://localhost:8080;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
            }
         }

这里说明一下,必须要先在前端路径中执行npm run build来构建生成html等静态文件,然后就配置到nginx配置文件中,最终前端是通过nginx来访问的,而不是通过node。如果是使用npm run dev来启动,那么只能在这台机器中可以访问,如果想让其它人都可以访问,可以添加参数,例如写为这种npm run dev -- --host,但是也存在问题,即使我使用nohup挂载到后台去运行,当我断开ssh连接的时候,会导致npm进程退出。所以这只适合调试,不是生产环境使用方式。必须要使用npm run build来构建为静态文件,通过nginx来访问。

3. 运行效果

4. 部署过程

4.1 安装JDK并配置环境变量

下载JDK 21

shell 复制代码
https://www.oracle.com/cn/java/technologies/downloads/

访问上面的网址,根据自己的CPU架构选择不同的版本。

这里直接在linux服务器中使用wget命令下载。

shell 复制代码
cd /usr/local
wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz

下载后解压

shell 复制代码
tar -zxvf jdk-21_linux-x64_bin.tar.gz
shell 复制代码
mv jdk-21.0.10 jdk

配置系统环境变量

shell 复制代码
vim /etc/profile
# 在末尾添加下面内容
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
# 最后记得执行
source /etc/profile

4.2 安装MySQL并创建数据库

安装MySQL数据库,这里使用最简单的方式安装apt方式。

shell 复制代码
apt-get install mysql-server

设置开机自启动

shell 复制代码
systemctl start mysql
systemctl enable mysql

修改MySQL中的root登录密码

shell 复制代码
# 先查看
sudo cat /etc/mysql/debian.cnf
# 可以看到下面账号和密码
user     = debian-sys-maint
password = nvqrZwiElBU3lGAC
# 以 debian-sys-maint 账号登录 MySQL
mysql -u debian-sys-maint -p
# 修改 MySQL 的 root 账号密码
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码';
FLUSH PRIVILEGES;

创建数据库asr_datasets

shell 复制代码
create database asr_datasets character set utf8mb4 collate utf8mb4_general_ci;

4.3 安装node并生成项目的静态文件

shell 复制代码
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash
\. "$HOME/.nvm/nvm.sh"
nvm install 24
npm -v
node -v

最新版本可以访问下面的地址

shell 复制代码
https://nodejs.org/en/download

安装完成之后,生成前端页面的静态文件,会生成一个dist目录,里面保存了项目的静态文件,下面一步骤要用到这个路径,需要配置到nginx.conf中。

shell 复制代码
npm run build

如果访问 github 失败,可以使用下面方式安装

shell 复制代码
vim ~/.bashrc
shell 复制代码
export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node/
shell 复制代码
curl -o- https://gitee.com/RubyMetric/nvm-cn/raw/main/install.sh | bash
chmod +x ~/.nvm/nvm.sh
source ~/.bashrc
nvm install 24

执行 npm run build 的时候报下面错误的解决方法。

shell 复制代码
> autolabelasr@0.0.0 build
> vite build

/usr/local/src/asr/AutoLabelASR/node_modules/rollup/dist/native.js:115
                throw new Error(
                      ^

Error: Cannot find module @rollup/rollup-linux-x64-gnu. npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). Please try `npm i` again after removing both package-lock.json and node_modules directory.
    at requireWithFriendlyError (/usr/local/src/asr/AutoLabelASR/node_modules/rollup/dist/native.js:115:9)
    at Object.<anonymous> (/usr/local/src/asr/AutoLabelASR/node_modules/rollup/dist/native.js:124:76)
    at Module._compile (node:internal/modules/cjs/loader:1812:14)
    at Object..js (node:internal/modules/cjs/loader:1943:10)
    at Module.load (node:internal/modules/cjs/loader:1533:32)
    at Module._load (node:internal/modules/cjs/loader:1335:12)
    at wrapModuleLoad (node:internal/modules/cjs/loader:255:19)
    at loadCJSModuleWithModuleLoad (node:internal/modules/esm/translators:328:3)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:233:7)
    at ModuleJob.run (node:internal/modules/esm/module_job:430:25) {
  [cause]: Error: Cannot find module '@rollup/rollup-linux-x64-gnu'
  Require stack:
  - /usr/local/src/asr/AutoLabelASR/node_modules/rollup/dist/native.js
      at Module._resolveFilename (node:internal/modules/cjs/loader:1456:15)
      at defaultResolveImpl (node:internal/modules/cjs/loader:1066:19)
      at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1071:22)
      at Module._load (node:internal/modules/cjs/loader:1242:25)
      at wrapModuleLoad (node:internal/modules/cjs/loader:255:19)
      at Module.require (node:internal/modules/cjs/loader:1556:12)
      at require (node:internal/modules/helpers:152:16)
      at requireWithFriendlyError (/usr/local/src/asr/AutoLabelASR/node_modules/rollup/dist/native.js:97:10)
      at Object.<anonymous> (/usr/local/src/asr/AutoLabelASR/node_modules/rollup/dist/native.js:124:76)
      at Module._compile (node:internal/modules/cjs/loader:1812:14) {
    code: 'MODULE_NOT_FOUND',
    requireStack: [
      '/usr/local/src/asr/AutoLabelASR/node_modules/rollup/dist/native.js'
    ]
  }
}

Node.js v24.14.0

解决方法

shell 复制代码
npm cache clean --force
rm -rf node_modules package-lock.json
npm install

4.4 安装nginx并修改配置

shell 复制代码
apt-get install nginx

设置为开机自启动

shell 复制代码
systemctl enable nginx

修改nginx.conf配置

shell 复制代码
server {
            listen 80;
            server_name localhost;
            return 301 https://$host$request_uri;
        }

        server {
            listen 443 ssl;
            server_name localhost;

            ssl_certificate /usr/local/src/asr/ssl/server.crt;
            ssl_certificate_key /usr/local/src/asr/ssl/server.key;
            
            # ASR数据集采集系统前端页面
            location / {
                root /usr/local/src/asr/AutoLabelASR/dist;
                index index.html;
            }
			
			# ASR数据集采集系统后端接口
            location /api/audio/ {
                proxy_pass http://localhost:8080;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
            }
            
            # 播放音频
            location /audio/ {
                proxy_pass http://localhost:8080;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
            }
         }

修改配置后要记得执行下面命令

shell 复制代码
systemctl reload nginx

4.5 启动后端接口

经过上一步,已经启动了前端页面,现在需要启动后端接口,后端已经打包为jar包,可以使用下面命令启动。

shell 复制代码
nohup java -jar auto_label.jar > log.txt 2>&1 &

到此,整个部署过程就完成了,可以在浏览器中访问公网ip地址,并且一定要记得使用https协议访问,然后要同意使用麦克风权限。

相关推荐
名字很费劲5 小时前
vue项目,刷新后出现404错误,怎么解决
前端·javascript·vue·404
码界筑梦坊6 小时前
329-基于Python的交通流量数据可视化分析系统
开发语言·python·信息可视化·数据分析·django·vue·毕业设计
开开心心就好8 小时前
伪装文件历史记录!修改时间的黑科技软件
java·前端·科技·r语言·edge·pdf·语音识别
Thomas.Sir12 小时前
第五章:RAG知识库开发之【利用RAG知识库实现智能AI系统:从零构建企业级智能问答应用】
人工智能·python·vue·状态模式·fastapi·智能
她说..12 小时前
Spring单例Bean线程安全问题 深度解析
java·后端·安全·spring·springboot
Rysxt_12 小时前
Vue 3.4+ 实验性/新特性深度实战(2026版)
vue
ssdfang12 小时前
Gemini 3.1镜像深度推理实战:解构多模态长视频理解与结构化知识抽取
人工智能·音视频·语音识别
Wind613 小时前
ESP32-S3中文语音识别工程实践:从TDM音频适配到命令词定制
语音识别·esp32-s3·esp_sr_component
Jay星晴13 小时前
Whisper-large-v3语音识别效果对比:与Whisper v2/v1在中文长语音场景差异
whisper·语音识别·asr·星图gpu
码界筑梦坊1 天前
353-基于Python的大湾区气候数据可视化分析系统
开发语言·python·信息可视化·数据分析·django·vue·毕业设计