Skip to content

ErrorGz/llm_audio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VoiceLabel - 音频转录与标注工具

VoiceLabel 是一个专业的音频转录与标注工具,主要用于安全事件分析和音频内容的文字化处理。本工具提供了友好的用户界面,支持音频文件的上传、播放、区域选择、自动转写以及数据导出等功能。

功能特点

  • 音频文件管理:支持上传、播放和管理音频文件
  • 音频区域选择:可视化波形界面,支持选择特定区域进行处理
  • 自动语音识别:集成 ASR (自动语音识别) 系统,将选定音频区域自动转写为文字
  • 静音检测:支持自动检测音频文件中的静音区域,并进行批量转写处理
  • 数据标注:可为每段转写内容添加来源、时间等标签信息
  • 内容编辑:支持对转写文本进行编辑、删除、标记等操作
  • 区域管理:可对音频区域进行裁剪、合并等操作
  • 内容导出:支持以简单或详细格式导出转写内容
  • 训练数据生成:可生成用于训练语音识别模型的标准格式数据
  • 工程管理:多工程支持,便于分类管理不同场景的音频资料

系统架构

VoiceLabel 采用前后端分离架构:

  • 前端:基于 Vue.js 开发的单页应用,提供直观的用户界面
  • 后端:基于 Node.js 和 Express 框架开发的服务端,处理文件管理、音频处理和数据存储

安装与部署

前提条件

  • Node.js v16+
  • FFmpeg(用于音频处理)

前端部署

cd VoiceLabel/client
npm install
npm run build

后端部署

cd VoiceLabel/server
npm install
node index.js

环境配置

前端环境配置 (.env):

VITE_SERVER_URL=http://localhost:6080

后端环境配置 (.env):

SERVER_PORT=6080
ASR_PORT=6081

使用方法

1. 创建工程

  1. 点击右上角下拉菜单中的"创建新工程"
  2. 输入工程名称和描述
  3. 点击创建按钮完成工程创建

2. 上传音频文件

  1. 在右侧区域拖放或选择音频文件上传
  2. 上传完成后,文件将显示在右侧列表中

3. 音频转写

  1. 从右侧列表选择音频文件进行播放
  2. 在波形图上选择需要转写的区域
  3. 点击"将选定区域音频转文字"按钮
  4. 系统会自动将该区域的音频转为文字
  5. 可编辑转写结果并添加标注信息(如发言者)
  6. 点击"添加"或"更新"按钮保存信息

4. 批量静音检测转写

  1. 选择音频文件后点击"静音检测批量转换文字"
  2. 系统会自动检测音频中的非静音区域并进行转写
  3. 转写结果将自动添加到信息列表中

5. 内容管理

  • 点击信息列表中的条目可进行编辑
  • 使用操作按钮可进行删除、标记、上下移动等操作
  • 可通过"往前插入"和"往前融合"功能管理条目顺序和内容

6. 数据导出

  • 点击"导出内容"可导出当前工程的所有转写内容
    • 简单模式:仅导出来源和文本
    • 详细模式:包含时间戳和时长等完整信息
  • 点击"导出训练数据"可导出用于语音识别模型训练的数据

数据格式

工程数据结构

工程数据存储在 server/projects 目录下,每个工程以唯一 ID 为名创建单独的目录,包含以下子目录:

  • uploads/:存储上传的原始音频文件
  • data/:存储工程数据文件
    • info.jsonl:主要信息数据文件,每行一条 JSON 格式记录
    • mp3/:存储处理后的音频片段
    • train.jsonl:训练数据格式文件(生成时创建)
    • val.jsonl:验证数据格式文件(生成时创建)
  • annotations/:存储音频区域标注信息
  • temp/:临时文件存储区域

info.jsonl 数据格式

{
  "uuid": "唯一标识符",
  "datetime": "时间戳",
  "from": "发言人/来源",
  "text": "转写文本内容",
  "timelen": "时长",
  "audioUrl": "音频文件URL",
  "startTime": "开始时间(秒)",
  "endTime": "结束时间(秒)",
  "mark": "是否标记"
}

训练数据格式 (train.jsonl/val.jsonl)

{
  "key": "唯一标识符",
  "text_language": "<|zh|>",
  "emo_target": "<|NEUTRAL|>",
  "event_target": "<|Speech|>",
  "with_or_wo_itn": "<|withitn|>",
  "target": "文本内容",
  "source": "音频文件路径",
  "target_len": "文本长度",
  "source_len": "特征长度"
}

技术细节

音频处理

  • 使用 FFmpeg 处理音频文件(裁剪、格式转换等)
  • 波形显示基于 wavesurfer.js 库
  • 支持 MP3, WAV, M4A 等常见音频格式

语音识别

  • 通过 HTTP API 调用外部 ASR 服务
  • 支持中文语音识别
  • 可配置识别语言和其他参数

数据存储

  • 使用基于文件的轻量级数据存储(JSONL格式)
  • 工程配置信息存储在 projects.json 文件中
  • 音频区域信息存储在对应的标注文件中

应用场景

  • 会议记录转写
  • 安全事件分析与记录
  • 语音内容归档
  • 语音识别模型训练数据准备
  • 音频内容标注与分类

注意事项

  1. 确保系统有足够的存储空间处理音频文件
  2. 为获得最佳转写效果,建议使用噪音较少的录音
  3. ASR 服务需单独部署或配置
  4. 频繁导出大量数据可能影响系统性能

监控命令 watch -n 5 rocm-smi radeontop

python3 -c "import torch; print('CUDA是否可用:', torch.cuda.is_available(), '\n设备数量:', torch.cuda.device_count() if torch.cuda.is_available() else 0, '\n当前设备:', torch.cuda.get_device_name(0) if torch.cuda.is_available() else '无GPU')"

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published