Skip to content

Zhiqi123/PitchAnalysisStreamlit

Repository files navigation

音高分析系统 - Streamlit 网页应用

功能介绍

这是一个基于 Streamlit 的音高分析网页应用,整合了以下功能:

  • 🎙️ 录音输入:支持浏览器录音
  • 📤 文件上传:支持 WAV, MP3, FLAC, M4A 格式
  • 🎵 音高提取:使用 CREPE 算法进行高精度音高提取
  • 📊 音准分析:计算相对于十二平均律的偏差
  • 📈 可视化:生成音高曲线图、音准偏差箱线图(含数值标记)和律制分析图表
  • 🎼 律制分析:自动识别音乐律制类型(12平均律、纯律、毕达哥拉斯律、24平均律、7平均律)
  • 💾 结果下载:支持下载 JPG 格式图表(100dpi)
  • ⚠️ 智能提示:当数据不足时自动显示错误原因和建议

安装步骤

1. 安装依赖

pip install -r requirements.txt

2. 运行应用

streamlit run pitch_analysis_app.py

应用将在浏览器中自动打开,默认地址为 http://localhost:8501

使用说明

输入音频

  1. 录音方式

    • 点击"录音"区域的录音按钮
    • 允许浏览器访问麦克风
    • 录制完成后点击停止
  2. 上传文件方式

    • 点击"上传文件"区域
    • 选择音频文件(支持 WAV, MP3, FLAC, M4A)

注意:当录音和文件上传都有内容时,系统会优先处理录音文件。

开始分析

点击"🚀 开始分析"按钮,系统将自动完成以下步骤:

  1. 提取音高数据(使用 CREPE 算法)
  2. 计算音准偏差
  3. 生成可视化图表
  4. 分析律制类型
  5. 生成律制分析图表

查看结果

分析完成后,页面将显示:

  • 律制分析结果:检测到的律制类型和置信度
  • 音高曲线图:显示音高随时间的变化
  • 音准偏差箱线图:显示12个音级的音准分布
  • 律制分析图表:显示各律制得分对比、置信度和统计信息
  • 统计信息:数据点数、整体偏移、基准音高等

注意:如果数据不足无法进行律制分析,系统会在律制分析图表中显示错误原因和改进建议。

下载图表

每个图表下方都有下载按钮,点击即可下载 JPG 格式图片(100dpi)。 下载后页面会停留在当前位置,方便继续查看其他内容。

返回首页

点击页面顶部的"🏠 回到首页"按钮,可以清空当前结果并返回首页进行新的分析。

技术特点

  • 高精度音高提取:使用 CREPE 深度学习模型
  • 智能降噪:自动进行音频信号清洗和降噪处理
  • 平滑处理:使用 Savitzky-Golay 滤波器去除颤音
  • 基准音校正:使用核密度估计自动校正整体音高偏移
  • 响应式设计:适配不同屏幕尺寸
  • 状态管理:使用 Streamlit session state 保持分析结果

系统要求

  • Python 3.8 或更高版本
  • 至少 4GB 内存
  • 支持现代浏览器(Chrome, Firefox, Safari, Edge)

依赖库

主要依赖:

  • streamlit - Web 应用框架
  • torchcrepe - CREPE 音高提取算法
  • librosa - 音频处理
  • matplotlib - 数据可视化
  • scipy - 科学计算
  • noisereduce - 降噪处理

完整依赖列表请查看 requirements.txt

注意事项

  1. 首次运行时,CREPE 模型会自动下载,可能需要一些时间
  2. 录音功能需要浏览器支持 MediaRecorder API
  3. 处理长音频文件可能需要较长时间,请耐心等待
  4. 建议使用高质量的音频文件以获得更准确的分析结果

故障排除

录音功能无法使用

  • 确保浏览器已授予麦克风权限
  • 尝试使用 HTTPS 连接(某些浏览器要求)

分析失败

  • 检查音频文件是否损坏
  • 确保音频文件包含足够的音高信息
  • 尝试使用不同的音频文件

内存不足

  • 尝试处理较短的音频片段
  • 关闭其他占用内存的应用程序

作者

基于以下脚本整合开发:

  • batch_extract_pitch_to_csv_SingleFile.py
  • batch_generate_pitch_contour.py
  • batch_calculate_pitch_deviation.py
  • batch_calculate_pitch_statistics.py
  • batch_plot_tunned_statistics_boxplot.py
  • batch_analyze_tuning_v2.py
  • batch_plot_tuning_report_v1.py

许可证

本项目仅供学习和研究使用。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages