如何将音频时间点映射到Torchaudio生成的梅尔频谱图位置?
音频时刻到梅尔频谱图像素位置的映射方法
要把音频中的特定时刻映射到torchaudio生成的梅尔频谱图的像素位置,核心是理解频谱图时间轴的生成逻辑——每个时间像素(时间bin)对应音频中一段连续的采样窗口,窗口的移动步长由hop_length参数决定。
具体计算步骤
计算目标时刻对应的音频采样点总数
采样率sample_rate表示每秒的音频采样点数,因此第57秒对应的采样点数量为:sample_idx = 57 * 50000 # 结果为2850000计算对应的频谱图时间轴索引(起始像素位置)
torchaudio中,频谱图的每个时间bin是从音频的t * hop_length采样点开始,截取长度为n_fft的窗口生成的。因此目标时刻对应的时间bin索引为采样点总数除以hop_length的向下取整结果:time_bin_idx = 2850000 // 512 # 结果为5566
通用公式
对于任意时刻T(秒),对应的频谱图时间轴起始像素位置(从0开始计数)可以用以下公式计算:
time_bin_idx = floor(T * sample_rate / hop_length)
验证说明
- 第5566个时间bin对应的音频起始时刻为:
5566 * 512 / 50000 = 56.99584秒 - 该时间bin的结束时刻为:
(5566 * 512 + 1024) / 50000 = 57.016秒 - 显然57秒落在这个时间bin的覆盖范围内,因此对应的起始像素位置就是索引5566。
内容的提问来源于stack exchange,提问作者Paca
相关产品推荐
相关产品推荐

