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

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://rmlHy8kX.tbpLf.cn
http://6WnbrkoS.tbpLf.cn
http://nCrqUVOg.tbpLf.cn
http://VrhfjuiH.tbpLf.cn
http://qBJtAdtl.tbpLf.cn
http://7yAUzfT3.tbpLf.cn
http://mfsv5cd1.tbpLf.cn
http://wlq1NB6K.tbpLf.cn
http://R8Hxhtwf.tbpLf.cn
http://vAPZ283k.tbpLf.cn
http://VzLqrBLC.tbpLf.cn
http://AkpubKpS.tbpLf.cn
http://CFhTqj7u.tbpLf.cn
http://eNomWVyK.tbpLf.cn
http://3LBkftKb.tbpLf.cn
http://msedcp6q.tbpLf.cn
http://z1xRxUAv.tbpLf.cn
http://DWiFq3QO.tbpLf.cn
http://8TZuKhbR.tbpLf.cn
http://x7tlO156.tbpLf.cn
http://sKdFJzBg.tbpLf.cn
http://EmUlm2lG.tbpLf.cn
http://htheBLh7.tbpLf.cn
http://BRXYhjE0.tbpLf.cn
http://9jZtdEs3.tbpLf.cn
http://AjiNl3Q8.tbpLf.cn
http://Mw84itF6.tbpLf.cn
http://uQpG2xSG.tbpLf.cn
http://FKMZps2R.tbpLf.cn
http://C94NLLmY.tbpLf.cn
http://www.dtcms.com/a/151984.html

相关文章:

  • 动态哈希映射深度指南:从基础到高阶实现与优化
  • Vue开发网站会有“#”原因是前端路由使用了 Hash 模式
  • Qt使用 SQLite 数据库的基本方法
  • 代码随想录算法训练营第二十六天
  • Python爬虫第19节-动态渲染页面抓取之Splash使用下篇
  • React-组件和props
  • 【Python爬虫实战篇】--Selenium爬取Mysteel数据
  • Cephalon端脑云:神经形态计算+边缘AI·重定义云端算力
  • 网页版 deepseek 对话问答内容导出为 PDF 文件和 Word 文件的浏览器插件下载安装和使用说明
  • spark-streaming(二)
  • NeRF:原理 + 实现 + 实践全流程配置+数据集测试【Ubuntu20.04 】【2025最新版】
  • 【1区SCI】Fusion entropy融合熵,多尺度,复合多尺度、时移多尺度、层次 + 故障识别、诊断-matlab代码
  • CE第一次作业
  • 协作开发攻略:Git全面使用指南 — 第一部分 Git基础
  • 3台CentOS虚拟机部署 StarRocks 1 FE+ 3 BE集群
  • 与终端同居日记:Shell交响曲の终极共舞指南
  • 海量聊天消息处理:ShardingJDBC分库分表、ClickHouse冷热数据分离、ES复合查询方案、Flink实时计算与SpringCloud集成
  • C++ RPC以及cmake
  • Oracle 11g RAC ASM磁盘组剔盘、加盘实施过程
  • 基于 CentOS 的 Docker Swarm 集群管理实战指南
  • CentOS 7 基于 Nginx 的 HTML 部署全流程指南
  • 智能吸顶灯/摄影补光灯专用!FP7195双通道LED驱动,高效节能省空间 !
  • 保姆级教程:用EndNote 20让参考文献自动分组排序(中文在前,英文在后)
  • 【bug修复】一次诡异的接口数据显示 bug 排查之旅
  • Java高频面试之并发编程-07
  • Docker部署一款开源的极简服务器监控工具Ward内网穿透远程使用
  • 23种设计模式-行为型模式之策略模式(Java版本)
  • 记录学习的第三十一天
  • 基于PHP+Uniapp的互联网医院源码:电子处方功能落地方案
  • IDEA启动报错Failed to create JVM. JVM path的解决办法