小编Bec*_*cky的帖子

在 Python 中将频谱图存储为图像

我想将音频的 STFT 频谱图存储为图像。下面的代码向我显示了一个频谱图作为输出,但是当保存为图像时,我得到了不同的图像。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

audio_name = '---.au'
hop_length = 512
window_size = 1024

import librosa
y, sr = librosa.load(audio_name)
window = np.hanning(window_size)
out  = librosa.core.spectrum.stft(y, n_fft = window_size, hop_length = hop_length, 
       window=window)
out = 2 * np.abs(out) / np.sum(window)

import librosa.display
librosa.display.specshow(librosa.amplitude_to_db(out,ref=np.max),
               y_axis='log', x_axis='time')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

from PIL import Image
img = Image.fromarray(out)    
if img.mode != 'RGBA':
    img = img.convert('RGBA')
img.save('output.png')
Run Code Online (Sandbox Code Playgroud)

但是当我保存它时,输出文件是一个黑色图像。在此处输入图片说明

我想保存光谱的确切图像。

audio python-imaging-library python-3.x librosa

6
推荐指数
1
解决办法
1万
查看次数

X_set [y_set == j,0]是什么意思?

最近,我一直在关注一个教程,在那里我提出了以下代码

for i, j in enumerate(np.unique(y_set)):
    plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1],
        c = ListedColormap(('red', 'green'))(i), label = j)
Run Code Online (Sandbox Code Playgroud)

这里,y_set是具有二进制值的向量0,1并且X_set是具有两列的数组.我特别不理解如何解释以下代码行

X_set[y_set == j, 0], X_set[y_set == j, 1]
Run Code Online (Sandbox Code Playgroud)

python numpy machine-learning

5
推荐指数
1
解决办法
528
查看次数