canny_spectrum_demo

Mel Spectrogram + Canny + Gaussian Demo

这是一个离线演示程序,生成以下内容:

注意:边缘/高斯层是结构和类摩擦能量的 视觉代理,并非音素分类器。

安装

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

运行

python demo.py --input test.wav --outdir out --title "test.wav"

在浏览器中打开 out/demo.html。 如果存在多组 <stem>_*.png 图像集,页面会将每个 <stem>.wav 与其匹配的前缀图像分组显示。

固定参数

凸脊提取(稀疏 + 水平 TV + 峰值掩码)

设归一化 log-Mel 图像为 (Y \in \mathbb{R}+^{F \times T}),我们要提取的 脊线为 (X \in \mathbb{R}+^{F \times T})。先从 (Y) 沿频率轴做局部峰值检测 得到垂直峰值掩码 (M \in {0,1}^{F \times T})(可带分位数阈值与膨胀)。

定义时间差分算子(仅沿水平方向):

[ (D_t X){f,t} = X{f,t+1} - X_{f,t}, \quad t=1,\dots,T-1 ]

软峰值约束(默认)

[ \min_{X \ge 0}\; \frac{1}{2}|X - Y|_F^2

含义:

硬峰值约束(可选)

[ \min_{X \ge 0}\; \frac{1}{2}|X - Y|_F^2

硬约束会强制脊线只能出现在峰值候选位置上。

说明