所以我只需要将adjusted_fft_frames = mag_frames * np.exp(1j * 2 * np.pi * pitch_freqs_smoothed[:, np.newaxis] * freqs[np.newaxis, :])这段代码替换成pitch_freqs_smoothed = pitch_freqs_smoothed[:, np.newaxis]pitch_freqs_smoothed = np.tile(pitch_freqs_smoothed, (1, mag_frames.shape[1]))adjusted_fft_frames = mag_frames * np.exp(1j * 2 * np.pi * pitch_freqs_smoothed * freqs[np.newaxis, :])就行了吗
时间: 2024-02-12 22:08:05 浏览: 28
是的,你可以将原来的代码替换为新的代码,但是需要注意一下 `freqs` 数组的长度是否正确,以确保可以正确进行广播操作。同时,也需要确保 `pitch_freqs_smoothed` 被正确地转换为 `(198, 882)` 的形状。
完整的代码修改如下:
```
freqs = np.fft.rfftfreq(n_fft, d=1.0/sr)
pitch_freqs_smoothed = pitch_freqs_smoothed[:, np.newaxis]
pitch_freqs_smoothed = np.tile(pitch_freqs_smoothed, (1, mag_frames.shape[1]))
adjusted_fft_frames = mag_frames * np.exp(1j * 2 * np.pi * pitch_freqs_smoothed * freqs[np.newaxis, :])
```
这个修改后的代码会将 `pitch_freqs_smoothed` 转换为一个形状为 `(198, 882)` 的数组,然后使用广播机制将其与 `freqs` 相乘,得到一个形状为 `(198, 882)` 的新的振幅谱矩阵 `adjusted_fft_frames`。
相关问题
结合之前几段代码,解释adjusted_fft_frames = mag_frames * np.exp(1j * 2 * np.pi * pitch_freqs_smoothed[:, np.newaxis]* freqs[np.newaxis, :])
在这段代码中,首先使用了之前处理得到的pitch_freqs_smoothed数组,这个数组包含了每一帧的基频对应的频率,然后使用了numpy的广播机制,将其转化为一个二维数组,其中每一行都是pitch_freqs_smoothed数组。另外,使用了freqs数组,这个数组包含了每一个FFT bin的分辨率,即每个bin对应的频率值,它是一个一维数组。
接下来,对于每一帧,在每个FFT bin的位置上,乘以一个复数值,这个复数值的实部是1,虚部是2π乘以相应的频率值,这个频率值是pitch_freqs_smoothed数组中对应帧的值。这个复数可以看作是一个旋转因子,它的幅度为1,相位随着频率的变化而变化,这个过程可以看作是在对FFT frame做频率变换。最后,将经过变换的FFT frame乘以mag_frames,这个mag_frames是之前计算得到的原始FFT frame的幅度信息,这样可以得到经过调整的FFT frame,其中包含了音高的信息。
AttributeError: module 'keras.metrics' has no attribute 'adjusted_rand_score'
在Keras中,`adjusted_rand_score`不是`keras.metrics`模块的属性。`adjusted_rand_score`是一个用于计算聚类算法性能的指标,通常在`sklearn.metrics`模块中使用。
如果你想在Keras中使用`adjusted_rand_score`,你需要导入`sklearn.metrics`模块,并使用它来计算聚类算法的性能。以下是一个示例代码:
```python
from sklearn.metrics import adjusted_rand_score
# 假设你有两个聚类结果的标签
labels_true = [0, 0, 1, 1, 2, 2]
labels_pred = [0, 0, 1, 1, 3, 3]
# 计算adjusted_rand_score
score = adjusted_rand_score(labels_true, labels_pred)
print("Adjusted Rand Score:", score)
```