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

Whisper微调及制作方言数据集

本文不生产技术,只做技术的搬运工!!!

前言

        最近在进行whisper微调实验,这个网上有很多成功案例,作者随机找了一个进行了复现,但是由于微调目的是适配本地方言,数据集的采集成为了一个重点难题,既要录制音频,又要打好标签,费时费力,作者开发了一个小软件,可以在录制音频时,将文本写入到标注文件中,进行快速音频采集标注(其实是多次一举,因为本来文本就是预先设定好的,直接录制完音频把念的稿子复制到标注文件里即可,作者这么做主要是想方便音频采集,因为作者不想手动改音频文件的名称,又想采集出来的音频以开始时间-结束时间.wav的形式保存)。

微调框架

https://github.com/yeyupiaoling/Whisper-Finetunehttps://github.com/yeyupiaoling/Whisper-Finetune大家自行配置即可,这个作者应该是中国人,写了中文版的ReadMe,整体很清晰明了

原始数据采集

        作者使用前言中提到的软件进行数据采集,采集完成后的原始数据如下图所示

每个wav文件都是一段录音,txt中包含了该段文本,如下图所示

数据处理脚本

import os
import json
import wavedef get_wav_duration(wav_path):"""获取WAV文件的时长(秒)。参数:wav_path (str): WAV文件的路径。返回:float: WAV文件的时长(秒)。"""with wave.open(wav_path, 'rb') as wav_file:frames = wav_file.getnframes()rate = wav_file.getframerate()duration = frames / float(rate)return durationdef getFileList(dir, Filelist, ext=None):"""获取文件夹及其子文件夹中文件列表输入 dir:文件夹根目录输入 ext: 扩展名返回: 文件路径列表"""newDir = dirif os.path.isfile(dir):if ext is None:Filelist.append(dir)else:if ext in dir:Filelist.append(dir)elif os.path.isdir(dir):for s in os.listdir(dir):newDir = os.path.join(dir, s)getFileList(newDir, Filelist, ext)return Filelistif __name__ == '__main__':path = "/home/workspace/yysblz0422/语音识别补录/补验"file_path = "val.jsonl"wav_path_list = []wav_path_list = getFileList(path,wav_path_list , ".wav")data = []for wav_path in wav_path_list:template = {"audio": {"path": "dataset/0.wav"}, "sentence": "近几年,不但我用书给女儿压岁,也劝说亲朋不要给女儿压岁钱,而改送压岁书。","language": "Chinese", "duration": 7.37}txt_path = wav_path.replace(".wav",".txt")with open(txt_path,"r") as f:template["sentence"] = f.read()template["audio"]["path"] = wav_pathtemplate["duration"] = get_wav_duration(wav_path)data.append(template)# 打开文件,使用写入模式with open(file_path, "w", encoding="utf-8") as jsonl_file:# 遍历数据列表,逐行写入 JSON 对象for item in data:# 将字典转换为 JSON 格式的字符串json_str = json.dumps(item, ensure_ascii=False)# 写入 JSON 字符串,换行分隔jsonl_file.write(json_str + "\n")print(f"数据已成功写入 {file_path}")

处理完成后,数据格式如下

采集软件展示

该软件可实现快速数据标注,同时也是一个非常好用的离线实时麦克风语音转文本工具,有软件需求或软件源代码需求的朋友可私聊作者。

http://www.xdnf.cn/news/1620.html

相关文章:

  • Golang 闭包学习
  • arm64适配系列文章-第三章-arm64环境上mariadb的部署
  • 一行命令打开iOS模拟器
  • uniapp -- 实现微信小程序、app、H5端视频上传
  • ORACLE RAC环境使用ASM机制零宕机时间更换存储的实践
  • matlab 绘图
  • 【leetcode100】目标和
  • MongoDB副本集搭建与核心机制
  • 【MySQL】基本查询
  • 如何解析商品详情页面
  • 简单几步,开启 Intel VT-x 让电脑“解开CPU封印”
  • SiamMask中的分类分支、回归分支与Mask分支,有何本质差异?
  • 【LLM+Code】Github Copilot Agent/VsCode Agent 模式PromptTools详细解读
  • 【含文档+PPT+源码】基于SpringBoot+vue的疫苗接种系统的设计与实现
  • MySQL总结
  • 深度剖析操作系统核心(第一节):从X86/ARM/MIPS处理器架构到虚拟内存、分段分页、Linux内存管理,再揭秘进程线程限制与优化秘籍,助你成为OS高手!
  • 如何彻底卸载Android Studio?
  • aarcpy 列表函数的使用(1)
  • 分页查询优惠券
  • Unity 使用 ADB 实时查看手机运行性能
  • 【技术派后端篇】技术派中 Session/Cookie 与 JWT 身份验证技术的应用及实现解析
  • 详解springcloudalibaba采用prometheus+grafana实现服务监控
  • Qt UDP组播实现与调试指南
  • leetcode28. 找出字符串中第一个匹配项的下标_简单KMP
  • vue3 实现将html内容导出为图片、pdf和word
  • Linux Awk 深度解析:10个生产级自动化与云原生场景
  • 私钥连接服务器(已经有服务器私钥
  • 安卓adb shell串口基础指令
  • 【激光雷达3D(7)】CenterPoint两阶段细化仅使用BEV特征;PV-RCNN两阶段细化使用体素特征;M3DETRTransformer统一多表征特征
  • 云智融合普惠大模型AI,政务服务重构数智化路径