我在 MATLAB 上的实验需要帮助。我正在尝试获取每个时间间隔的歌曲的频率范围。例如,如果一个人唱歌,他从时间 0 到 0.5 秒的频率范围是多少?我曾尝试使用 MATLAB 的频谱图函数,但我不知道如何从返回值中提取我需要的值。
我希望你能帮助我(新手)。
非常感谢。我感谢您的帮助。
我在 MATLAB 上的实验需要帮助。我正在尝试获取每个时间间隔的歌曲的频率范围。例如,如果一个人唱歌,他从时间 0 到 0.5 秒的频率范围是多少?我曾尝试使用 MATLAB 的频谱图函数,但我不知道如何从返回值中提取我需要的值。
我希望你能帮助我(新手)。
非常感谢。我感谢您的帮助。
首先,您需要了解频谱图在做什么;它将您的信号分成更短(但固定)的时间长度并对其进行 FFT(因此,它也称为 STFT 表示)。Matlab 频谱图有许多选项可供您使用。
现在回答您的问题,要通过查看频谱图数据来计算信号的频率范围,您需要首先使用 NFFT、重叠数和采样频率来计算频谱图箱的时间长度(我假设您工作这在你构建频谱图之前就出来了)。在处理高质量语音(以 16kHz 采样,重叠 50% 和 1024 NFFT)时,每个 bin(或频谱图的切片)应该返回大约 32ms。要计算 0 到 500 毫秒的频率,只需取出第一个 ceil(500/32) 箱并写出频率响应;您可能会获得多个频率,因为语音既具有谐波特性又具有传播特性。
至于其余的,在提供任何有用的帮助之前,我需要确切地知道您的设置/您希望实现的目标。