这是一个基于 Streamlit 的音高分析网页应用,整合了以下功能:
- 🎙️ 录音输入:支持浏览器录音
- 📤 文件上传:支持 WAV, MP3, FLAC, M4A 格式
- 🎵 音高提取:使用 CREPE 算法进行高精度音高提取
- 📊 音准分析:计算相对于十二平均律的偏差
- 📈 可视化:生成音高曲线图、音准偏差箱线图(含数值标记)和律制分析图表
- 🎼 律制分析:自动识别音乐律制类型(12平均律、纯律、毕达哥拉斯律、24平均律、7平均律)
- 💾 结果下载:支持下载 JPG 格式图表(100dpi)
⚠️ 智能提示:当数据不足时自动显示错误原因和建议
pip install -r requirements.txtstreamlit run pitch_analysis_app.py应用将在浏览器中自动打开,默认地址为 http://localhost:8501
-
录音方式:
- 点击"录音"区域的录音按钮
- 允许浏览器访问麦克风
- 录制完成后点击停止
-
上传文件方式:
- 点击"上传文件"区域
- 选择音频文件(支持 WAV, MP3, FLAC, M4A)
注意:当录音和文件上传都有内容时,系统会优先处理录音文件。
点击"🚀 开始分析"按钮,系统将自动完成以下步骤:
- 提取音高数据(使用 CREPE 算法)
- 计算音准偏差
- 生成可视化图表
- 分析律制类型
- 生成律制分析图表
分析完成后,页面将显示:
- 律制分析结果:检测到的律制类型和置信度
- 音高曲线图:显示音高随时间的变化
- 音准偏差箱线图:显示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
- 首次运行时,CREPE 模型会自动下载,可能需要一些时间
- 录音功能需要浏览器支持 MediaRecorder API
- 处理长音频文件可能需要较长时间,请耐心等待
- 建议使用高质量的音频文件以获得更准确的分析结果
- 确保浏览器已授予麦克风权限
- 尝试使用 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
本项目仅供学习和研究使用。