我有一个声音的梅尔谱图的二维数据,因为在梅尔谱图中,最大能量响应对应的那个时间,两种不同的声音在高频和低频上的能量响应不同,我想利用python先筛出最大能量效应的那个时间,再筛选频率为20-40和80-120之间的数据,然后分别设定两个阈值,如果说高于高频阈值就是一种声音,低于低频数据设定的阈值就是另一种声音
时间: 2024-04-07 12:30:05 浏览: 65
你可以使用Python中的科学计算库NumPy来处理声音的梅尔谱图数据。以下是一个示例代码,用于筛选最大能量响应的时间,并按照频率范围设定阈值进行分类:
```python
import numpy as np
# 假设mel_spec是你的梅尔谱图二维数据
mel_spec = ...
# 获取最大能量响应的时间
max_time_index = np.argmax(np.max(mel_spec, axis=1))
max_time = mel_spec[max_time_index]
# 筛选频率范围为20-40和80-120之间的数据
filtered_freq_range = mel_spec[(mel_spec[:, 0] >= 20) & (mel_spec[:, 0] <= 40) |
(mel_spec[:, 0] >= 80) & (mel_spec[:, 0] <= 120)]
# 分别设定高频和低频阈值
high_freq_threshold = ...
low_freq_threshold = ...
# 根据阈值分类
high_freq_sound = filtered_freq_range[filtered_freq_range[:, 1] > high_freq_threshold]
low_freq_sound = filtered_freq_range[filtered_freq_range[:, 1] < low_freq_threshold]
```
你需要根据实际情况,填写高频和低频的阈值,以便得到正确的分类结果。希望这能帮到你!如果有任何进一步的问题,请随时提问。
阅读全文