# 代码 “你好”的频谱

import matplotlib.pyplot as plt
import librosa.display
from python_speech_features import *
import numpy as np
import utils

x , sr = librosa.load("output.wav")
print(f'x.shape = {x.shape}')
print(f'sr = {sr}')
x=utils.trim_long_silences(x)

# -----------------------波形图------------------------------
librosa.display.waveplot(x)
plt.show()
# -----------------------短时傅里叶------------------------------
plt.title('librosa.stft')
# n_fft 为 FFT窗口大小 值越大，信号越清晰
stft = librosa.stft(x, n_fft=9216)
print("短时傅里叶")
print(stft.shape)
librosa.display.specshow(stft, x_axis='time', y_axis='hz')
plt.show()

# ------------------------梅尔-----------------------------
plt.title('librosa.feature.mfcc')
mfcc = librosa.feature.mfcc(x, n_fft=9216, n_mfcc = 20)
print("梅尔")
print(mfcc.shape)
librosa.display.specshow(mfcc, x_axis='time', y_axis='hz')
plt.show()
# ------------------------梅尔对数----------------------------
plt.title('librosa.feature.melspectrogram')
# hop_length 连续帧之间的样本数
melspec = librosa.feature.melspectrogram(x, 16000, n_fft=9216, hop_length=512)
logmelspec = librosa.power_to_db(melspec)
print("梅尔对数")
print(logmelspec.shape)
librosa.display.specshow(logmelspec, x_axis='time', y_axis='hz')
plt.show()
# ------------------------log Mel 能量----------------------------
plt.title('librosa.display.specshow')
logf=logfbank(x)
print("log Mel 能量")
print(logf.shape)
librosa.display.specshow(logf, x_axis='time', y_axis='hz')
plt.show()

# ------------------------光谱对比----------------------------
plt.title('librosa.feature.spectral_contrast')
stft = np.abs(librosa.stft(x,n_fft=9216))
contrast=librosa.feature.spectral_contrast(S=stft, sr=16000)
print("光谱对比")
print(contrast.shape)
librosa.display.specshow(contrast, x_axis='time', y_axis='hz')
plt.show()

# ------------------根据波形或功率谱图计算色谱图-------------------
plt.title('librosa.feature.chroma_stft')
chroma_stft=librosa.feature.chroma_stft(x,sr=16000)
print("色谱图")
print(chroma_stft.shape)
librosa.display.specshow(chroma_stft, x_axis='time', y_axis='hz')
plt.show()
# ------------------恒定Q色谱图-------------------
plt.title('librosa.feature.chroma_cqt')
chroma_cqt=librosa.feature.chroma_cqt(x,sr=16000)
librosa.display.specshow(chroma_cqt, x_axis='time', y_axis='hz')
print("恒定Q色谱图")
print(chroma_cqt.shape)
plt.show()
# ------------------色度能量归一化-------------------
plt.title('librosa.feature.chroma_cens')
chroma_cens=librosa.feature.chroma_cens(x,sr=16000)
librosa.display.specshow(chroma_cqt, x_axis='time', y_axis='hz')
print("色度能量归一化")
print(chroma_cens.shape)
plt.show()


• 点赞
• 评论
• 分享
x

海报分享

扫一扫，分享海报

• 收藏
• 手机看

分享到微信朋友圈

x

扫一扫，手机阅读

• 打赏

打赏

wx:pjcoder

你的鼓励将是我创作的最大动力

C币 余额
2C币 4C币 6C币 10C币 20C币 50C币
• 一键三连

点赞Mark关注该博主, 随时了解TA的最新博文
07-06 1万+

03-26 7890
04-10
03-18 6万+
06-13 2万+
12-15 1万+
05-06 2489
07-15 2229
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客