python生成语谱图

Posted tingweichen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python生成语谱图相关的知识,希望对你有一定的参考价值。

语音的时域分析和频域分析是语音分析的两种重要方法,但是都存在着局限性。时域分析对语音信号的频率特性没有直观的了解,频域特性中又没有语音信号随时间的变化关系。而语谱图综合了时域和频域的优点,明显的显示出了语音频谱随时间的变化情况、语谱图的横轴为时间,纵轴为频率,任意给定频率成分在给定时刻的强弱用颜色深浅来表示。颜色深的,频谱值大,颜色浅的,频谱值小。语谱图上不同的黑白程度形成不同的纹路,称之为声纹,不同讲话者的声纹是不一样的,可用作声纹识别。

下面是在python中绘制语谱图:

# 导入相应的包
import numpy, wave
import matplotlib.pyplot as plt
import numpy as np
import os

filename = bluesky3.wav
# 调用wave模块中的open函数,打开语音文件。
f = wave.open(filename,rb)
# 得到语音参数
params = f.getparams()
nchannels, sampwidth, framerate,nframes = params[:4]
# 得到的数据是字符串,需要将其转成int型
strData = f.readframes(nframes)
wavaData = np.fromstring(strData,dtype=np.int16)
# 归一化
wavaData = wavaData * 1.0/max(abs(wavaData))
# .T 表示转置
wavaData = np.reshape(wavaData,[nframes,nchannels]).T
f.close()
# 绘制频谱
plt.specgram(wavaData[0],Fs = framerate,scale_by_freq=True,sides=default)
plt.ylabel(Frequency)
plt.xlabel(Time(s))
plt.show()

技术分享图片

以上是关于python生成语谱图的主要内容,如果未能解决你的问题,请参考以下文章

语音信号语谱图相关

语音信号语谱图相关

梅尔谱图和 MFCC 之间的区别

Python语音分析从绘制好看的波形图和语谱图开始

Python幅度谱图

python ANSI艺术谱图查看器,用于从麦克风读取音频