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

An-Labeler:AudioLabellerV3 AI 辅助标注工具详解(自研Qt + FFT/模型自动标注)

An-Labeler V3:AudioLabeller AI 辅助标注工具详解(自研Qt + FFT/模型自动标注)

Author:Code-keys (qq_37445230)
Version:V3 (2026-03)
系列文章:

  • An-Labeler:AudioLabeller 高效音视频标注工具
  • [AAn-Labeler:AudioLabellerV3 AI 辅助标注工具详解]

一、V3 版本更新概览

在 V1(基础标注)和 V2(手工标注优化)的基础上,V3 引入了AI 辅助自动标注能力,核心升级如下:

特性V1/V2V3
音频播放pyaudio+ Threadsounddevice(PyPlayer.AudioPlayer)
标注模式纯手动FFT 自动检测 + 模型推理(可切换)
频谱图参数FFT=1024, hop=512, mels=128FFT=512, hop=256, mels=256(更高分辨率)
线程池max 2max 10
类别快捷键Ctrl+1~91~9(直接按键)
新增菜单自动化标注(FFT / 模型切换)
模块化单文件引入AudioAlgosPyPlayer外部模块
DEBUG 开关全局DEBUG标志,条件日志

二、架构概览

V3 采用模块化拆分,将播放器和算法逻辑从主脚本中解耦:

PyAudioLabelerV3FFT.py ← 主程序(UI + 标注逻辑) ├── PyPlayer.py ← 独立音频播放模块(sounddevice) ├── AudioAlgos ← 自动检测算法库(FFT/余弦相似度/零填充/跳变检测) └── classes.txt ← 类别配置文件

文件依赖关系

PyAudioLabelerV3FFT.py │ ├── AudioAlgos.* # 自动标注算法(detect_repeated_by_cos_similarity 等) │ ├── PyPlayer.AudioPlayer # 音频播放(替代 V1 的 AudioPlayCanStop) │ └── sounddevice # 底层音频 I/O │ └── librosa # 音频加载与重采样 │ ├── PyQt5 / pyqtgraph # GUI 框架 ├── soundfile / librosa # 音频读取与频谱计算 └── classes.txt # 标注类别定义

三、核心类与模块详解

3.1PyPlayer.AudioPlayer— 独立播放器模块

V3 用全新的AudioPlayer替换了 V1 的AudioPlayCanStop,底层从pyaudio切换到sounddevice

PyPlayer.py核心实现:

classAudioPlayer:"""基于 sounddevice 的音频播放器,支持加载 WAV、截取片段播放,子线程播放"""def__init__(self,files=None,datas=None,sr=16000,blocksize=160):self.sr=sr self.blocksize=sr//50# 每块 20msself.datas=self.load_raw(datas,sr)ifdatasisnotNoneelseself.load(files,sr)self._stop_event=threading.Event()defload(self,path,sr=None):datas,_=librosa.load(path,mono=True,sr=sr)self.datas=datas.astype(np.float32)returnself.datasdefplay(self,start_sec=0.0,end_sec=None,async_=True):"""播放音频片段,支持非阻塞子线程播放"""start=int(start_sec*self.sr)end=int(end_sec*self.sr)ifend_secisnotNoneelselen(self.datas)clip=self.datas[start:end]ifasync_:self._thread=threading.Thread(target=self._play_clip,args=(clip,),daemon=False)self._thread.start()def_play_clip(self,clip):self._stream=sd.OutputStream(samplerate=self.sr,channels=1,blocksize=self.blocksize,dtype='float32',latency='low')self._stream.start()foriin
http://www.jsqmd.com/news/583148/

相关文章:

  • SAP ABAP 根据表名上传数据,简易版
  • 2025届学术党必备的五大AI辅助写作平台实际效果
  • 《AI 小游戏开发(2)|带倒计时的 30 秒点方块,AI 生成完整游戏)》
  • 2025-2026年国内十大移民机构评测:五家口碑服务推荐评价 - 十大品牌推荐
  • 文理单片机课堂作业_数码管显示_0311
  • **发散创新:基于PyTorch的自定义深度学习框架实战与架构演进解析**在当前主流深度学习框架(如TensorFlow、P
  • Thorium浏览器:为什么这个基于Chromium的优化版本能解决你90%的性能痛点?
  • 2025-2026年靠谱移民机构评测:五家口碑服务推荐评价领先 - 十大品牌推荐
  • js流式模式输出 函数模式使用
  • 国内防伪公司推荐:为何选择驰亚科技?揭秘头部品牌防伪选型逻辑 - 资讯焦点
  • Linux内核设计哲学:你我承载力的艺术(续)
  • FPGA图像处理显示(ov5640摄像头与HDMI) ①特点:OV5640摄像头驱动模块、DD...
  • 大模型微调从零到部署:一份小白能啃动的知识地图 + 资源清单
  • 智慧实验室综合管理平台:构筑合规、高效、智能、自动化的未来实验室数字底座
  • 2025-2026年全球靠谱的eb5投资移民公司评测:五家口碑服务推荐评价 - 十大品牌推荐
  • WaveTools:解决鸣潮玩家性能优化与数据管理痛点的开源工具
  • 东莞除甲醛优质服务商
  • 祝贺电影《阳光俱乐部》荣获2026亚洲艺术电影节五项提名
  • **发散创新:基于Go语言实现可观测标准的微服务链路追踪系统设计与实践**在现代云原生架构中,**可观测性(Obs
  • 解决非流形+自相交:我写了一个 OBJ 网格修复工具
  • IDDFS迭代加深
  • 2026经管大洗牌!只会记账/理论已死,再不考这10个证,迟早被AI取代!
  • SRAM学习笔记(1)————SRAM基本结构
  • 2025-2026年全球靠谱移民机构推荐:TOP5口碑服务评测对比 - 十大品牌推荐
  • 【紧急预警】维普2.5算法突袭!手动降重全线崩溃?实测5款硬核工具连夜抢救
  • PUE从1.5降到1.08:省下的电费多久能收回液冷投资?
  • Claude Code 源码设计分析
  • 基于 PLC 的自动浇花控制系统:西门子 1200PLC 博途仿真之旅
  • Prompt注入之案例汇总
  • 大学生学习效率提升指南:5款实用工具辅助,拒绝无效内耗