logo
0
0
WeChat Login

🎵 语音转录与说话人分离项目

一个完整的语音处理系统,集成了语音转录、说话人分离和结果对齐功能,提供一键式处理流水线和交互式可视化界面。

项目演示 GPU支持 实时处理

✨ 主要特性

  • 🚀 一键式流水线: 自动完成转录→分离→对齐全流程
  • 🎯 高精度识别: 使用最新的 Whisper large-v2 和 pyannote 3.0
  • 💻 GPU加速: 充分利用CUDA加速,实现100x+实时倍率
  • 🎵 音频同步: 交互式HTML界面,音频与文本实时同步
  • ✏️ 说话人编辑: 支持在线编辑说话人名称
  • 📊 详细统计: 完整的性能指标和对齐统计

🏗️ 项目结构

translate_node_test_v1/ ├── 0.comprehensive_pipeline.py # 🌟 综合处理流水线 (推荐) ├── 0.env_check.py # 环境检测脚本 ├── 1.faster_whisper_test.py # 语音转录脚本 ├── 2.audio_test.py # 说话人分离脚本 ├── 3.alignment_script.py # 对齐脚本 ├── audio_text_viewer.html # 交互式预览器 ├── result/ # 结果目录 │ ├── transcription/ # 转录结果 │ ├── diarization/ # 说话人分离结果 │ └── alignment/ # 对齐结果 ├── audio/ # 音频文件目录 ├── requirements.txt # Python依赖 ├── environment.yml # Conda环境 └── README.md # 使用说明

🚀 快速开始

方式一:一键式处理 (推荐)

# 1. 运行综合流水线 python 0.comprehensive_pipeline.py # 2. 启动HTTP服务器 python -m http.server 8080 # 3. 打开浏览器 # http://localhost:8080/audio_text_viewer.html

流程说明

  1. 脚本会自动扫描并选择音频文件
  2. 依次执行:转录 → 说话人分离 → 对齐
  3. 自动保存到 result/ 目录和根目录
  4. 提供完整的使用指导

方式二:分步骤处理

适合需要自定义参数或调试的场景:

# 1. 环境检测 python 0.env_check.py # 2. 语音转录 python 1.faster_whisper_test.py # 3. 说话人分离 python 2.audio_test.py # 4. 结果对齐 python 3.alignment_script.py

🛠️ 环境安装

Conda环境 (推荐)

# 创建环境 conda create -p ./translate python=3.10 -y conda activate ./translate # 安装核心依赖 pip install faster-whisper pip install pyannote.audio # 可选:系统监控 conda install psutil -y

PyTorch GPU版本修复

如果遇到CPU版本的PyTorch问题:

# 安装GPU版PyTorch和torchaudio pip install torchaudio==2.7.1 --index-url https://download.pytorch.org/whl/cu128 --force-reinstall # 重新安装pyannote.audio (避免依赖冲突) pip install pyannote.audio --no-deps

🎵 交互式预览器

启动方法

# 在项目根目录启动HTTP服务器 python -m http.server 8080 # 浏览器访问 http://localhost:8080/audio_text_viewer.html

核心功能

📂 智能文件管理

  • 自动扫描: 扫描 result/alignment/ 和根目录的对齐文件
  • 实时刷新: 点击刷新按钮更新文件列表
  • 拖拽上传: 支持直接上传JSON和音频文件
  • 文件匹配: 自动尝试匹配对应的音频文件

🎵 音频同步播放

  • 实时高亮: 播放时自动高亮当前文本片段
  • 点击跳转: 点击任意文本段跳转到对应时间
  • 智能滚动: 当前播放位置自动滚动到可见区域
  • 时间显示: 实时显示当前播放时间和总时长

📊 数据可视化

  • 统计概览: 总片段数、对齐率、音频时长
  • 性能指标: 转录速度、处理时间、RTF值
  • 说话人分布: 颜色编码显示不同说话人
  • 置信度指示: 圆点颜色表示对齐质量

✏️ 说话人编辑

  • 在线编辑: 实时修改说话人名称
  • 批量更新: 支持在图例和文本中编辑
  • 即时预览: 修改后立即更新显示
  • 智能保存: 自动应用更改到数据结构

🎨 用户体验

  • 响应式设计: 完美适配桌面和移动设备
  • 流畅动画: 平滑的切换和高亮效果
  • 主题美化: 现代化的毛玻璃效果界面
  • 快捷操作: 键盘快捷键支持

🔧 技术规格

硬件要求

  • GPU: NVIDIA RTX 2080 Ti / RTX 3080 / RTX 4090 (推荐)
  • 显存: 最少 8GB,推荐 16GB+ (large-v2模型)
  • 内存: 最少 16GB,推荐 32GB+
  • 存储: SSD,预留10GB+空间

软件环境

  • Python: 3.10+ (推荐 3.11)
  • CUDA: 11.8 / 12.1+
  • PyTorch: 2.0+ (CUDA版本)
  • 主要依赖: faster-whisper, pyannote.audio, torchaudio

模型信息

  • 语音转录: Whisper large-v2 (多语言支持)
  • 说话人分离: pyannote/speaker-diarization-3.0
  • Hugging Face Token: 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

性能表现

  • 转录速度: 100-300x 实时倍率 (取决于硬件)
  • 说话人分离: 支持2-10个说话人场景
  • 对齐精度: 通常达到 85-95% 对齐率
  • 内存占用: 模型约4-6GB显存

📋 完整使用流程

1. 环境准备

# 检查环境配置 python 0.env_check.py # 查看检测报告 ls result/env_check/

2. 音频准备

# 支持的格式:wav, mp3, flac, m4a, ogg, aac cp your_audio.wav audio/

3. 一键处理

# 运行综合流水线 python 0.comprehensive_pipeline.py # 按提示选择音频文件 # 等待处理完成 (根据音频长度5-30分钟)

4. 结果查看

# 启动预览服务器 python -m http.server 8080 # 浏览器打开 # http://localhost:8080/audio_text_viewer.html # 选择生成的文件并开始使用

📁 输出文件说明

文件位置

  • 详细结果: result/transcription/, result/diarization/, result/alignment/
  • 快速访问: 根目录的 aligned_YYYYMMDD_HHMMSS.json.txt

JSON数据结构

{ "metadata": { "transcription_source": { "model": "large-v2", "language": "zh", "duration": 180.5, "performance": { "speed_factor": 150.2 } }, "diarization_source": { "model": "pyannote/speaker-diarization-3.0", "total_speakers": 2 }, "alignment_timestamp": "2025-01-07T15:30:45", "overlap_threshold": 0.5 }, "alignment_stats": { "total_segments": 127, "aligned_segments": 117, "unaligned_segments": 10, "speaker_distribution": { "SPEAKER_00": 65, "SPEAKER_01": 52 } }, "aligned_segments": [ { "id": 0, "start": 0.0, "end": 1.76, "text": "大家好,欢迎收听今天的节目。", "speaker": "SPEAKER_01", "confidence": 0.983, "words": [ {"word": "大家好", "start": 0.0, "end": 0.5, "probability": 0.99} ] } ] }

TXT可读格式

================================================================================ 语音处理综合结果 ================================================================================ 总片段数: 127 成功对齐: 117 对齐率: 92.1% 说话人分布: SPEAKER_00: 65 个片段 SPEAKER_01: 52 个片段 [SPEAKER_01] [0.00s - 1.76s] 大家好,欢迎收听今天的节目。 [1.76s - 4.23s] 今天我们将讨论人工智能的发展... [SPEAKER_00] [4.23s - 6.85s] 是的,这确实是一个很有趣的话题。

🛠️ 故障排除

常见问题

1. CUDA显存不足

# 选择更小的模型 # 在脚本中修改: model_size = "base" # 代替 "large-v2" # 清理GPU缓存 python -c "import torch; torch.cuda.empty_cache()"

2. 网络连接问题

# 设置Hugging Face镜像 export HF_ENDPOINT=https://hf-mirror.com # 或使用代理 export https_proxy=http://127.0.0.1:7890

3. 文件扫描失败

# 检查文件权限 chmod 644 *.json chmod 644 audio/* # 手动放置对齐文件到根目录 cp result/alignment/aligned_*.json ./

4. 音频格式不支持

# 使用ffmpeg转换 ffmpeg -i input.mp4 -acodec pcm_s16le -ar 16000 audio/output.wav

调试模式

# 开启详细输出 export CUDA_LAUNCH_BLOCKING=1 python 0.comprehensive_pipeline.py # 浏览器调试 (F12 → Console) # 查看文件扫描和加载日志

性能优化

# 设置GPU export CUDA_VISIBLE_DEVICES=0 # 优化内存使用 export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:128

📚 高级用法

命令行参数

# 对齐脚本支持参数 python 3.alignment_script.py \ --transcription result/transcription/trans_xxx.json \ --diarization result/diarization/diar_xxx.json \ --output my_result \ --threshold 0.6

自定义配置

在综合脚本中可以修改:

  • model_size: 模型大小 (tiny/base/small/medium/large-v2)
  • overlap_threshold: 对齐阈值 (0.0-1.0)
  • chunk_length: 音频分块长度
  • beam_size: 搜索束大小

批处理模式

# 处理多个音频文件 for audio in audio/*.wav; do echo "Processing $audio" python 1.faster_whisper_test.py # 自动选择当前文件... done

📈 性能基准

测试环境

  • 硬件: RTX 4090 (24GB) + 64GB RAM
  • 音频: 30分钟中文对话,2个说话人
  • 模型: large-v2 + pyannote-3.0

性能结果

步骤处理时间倍率显存占用
转录12秒150x4.2GB
说话人分离45秒40x2.8GB
对齐2秒-0.1GB
总计59秒30.5x4.2GB

质量指标

  • 转录准确率: 95%+ (清晰音频)
  • 说话人分离: 92%+ 准确率
  • 最终对齐率: 90%+

🤝 贡献指南

欢迎提交Issue和Pull Request!

开发环境

git clone https://github.com/yourname/translate_node_test_v1.git cd translate_node_test_v1 conda activate ./translate python 0.env_check.py

待优化功能

  • 支持更多音频格式
  • 实时流式处理
  • 说话人识别(不仅是分离)
  • 多语言界面
  • 云端部署支持

📄 许可证

MIT License - 详见 LICENSE 文件

📞 技术支持

遇到问题请:

  1. 查看环境检测报告 (result/env_check/)
  2. 检查浏览器控制台错误信息
  3. 提供完整的错误日志和系统信息
  4. 描述复现步骤和期望结果

版本: v2.0.0
更新时间: 2025-01-07
核心特性: 一键式流水线 + 交互式预览器

About

这是一个完整的语音处理系统,集成了语音转录、说话人分离和结果对齐功能。 但是不知是否我 2080ti 22g 显存魔改的缘故亦或者代码异常处理有问题,处理长文件的时候nvidia-smi 经常僵死

Language
Python61.6%
HTML26.6%
Markdown9.6%
Shell1.9%
Others0.3%