python音频信号分析

这篇具有很好参考价值的文章主要介绍了python音频信号分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、声音以具有诸如频率、带宽、分贝等参数的音频信号的形式表示,典型的音频信号可以表示为幅度和时间的函数。这些声音有多种格式,使计算机可以读取和分析它们,例如:mp3格式、WMA(Windows Media Audio)格式、wav(波形音频文件)格式。根据声波的特征,可把音频信息分类为规则音频和不规则声音。其中规则音频又可以分为语音,音乐和音效。规则音频是一种连续变化的模拟信号,可用一条连续的曲线来表示,称为声波。

声音的三个要素是音调,音强和音色,声波或正弦波有三个重要参数:频率、幅度和相位,这也就决定了音频信号的特征,语音识别等应用离不开音频特征的提取,Python有一些很棒的音频处理库,比如Librosa和PyAudio。

二、过零率:N为一帧的长度,n为对应的帧数,按帧处理。过零率体现的是信号过零点的次数,体现的是频率特性。因为需要过零点,所以信号处理之前需要中心化处理。

三、MFCC梅尔频率倒谱系数:声音信号是连续变化的,为了将连续变化信号简化,我们假设在一个短时间尺度内音频信号不发生改变。因此将信号以多个采样点集合成一个单位,称为"讯框"。一个讯框多为20-40毫秒,如果讯框长度更短,那每个讯框内的采样点将不足以做出可靠的频谱计算,但若长度太长,则每个讯框信号会变化太大。预强化的目的就是为了消除发声过程中,声带和嘴唇造成的效应,来补偿语音信号受到发音系统所压抑的高频部分。并且能突显高频的共振峰。由于信号在时域上的变化通常很难看出信号的特性,所以通常透过傅里叶变换将它变换成频域上的能量分布来观察,不同的能量分布,就能代表不同语音的特性。由于能量频谱中还存在大量的无用信息,尤其人耳无法分辨高频的频率变化,因此让频谱通过梅尔滤波器。梅尔滤波器,也就是一组20个非线性分布的三角带通滤波器(Triangular Bandpass Filters),能求得每一个滤波器输出的对数能量。信号的Mel频率倒谱系数(MFCC)是一小组特征(通常约10-20),其简明地描述了频谱包络的整体形状,它模拟了人声的特征。

四、色度频率:是音乐音频有趣且强大的表示,其中整个频谱被投影到12个区间,代表音乐八度音的12个不同的半音(或色度)。

五、代码

import librosa
x, sr = librosa.load(r'E:\pythonProject\3 yinping\1.wav')
#print(type(x), type(sr))  #将音频时间序列作为numpy数组返回,默认采样率(sr)为22KHZ
#print(x.shape, sr)

import numpy as np
import matplotlib.pyplot as plt
import matplotlib
#时域波形
#plt.figure() # 将显示的所有图分辨率调高
matplotlib.rc("font",family='SimHei') # 显示中文
matplotlib.rcParams['axes.unicode_minus']=False # 显示符号
time = np.arange(0, len(x)) * (1.0 / sr)
plt.plot(time/60, x)
plt.title("语音信号时域波形")
plt.xlabel("时长(分)")
plt.ylabel("振幅")
plt.show()

# #谱图:通过视觉表示频谱的频率、声音或其他信号,因为它们随时间变化。
import librosa.display
plt.figure(1)
X = librosa.stft(x)   #短时傅里叶变换
Xdb = librosa.amplitude_to_db(abs(X))
librosa.display.specshow(Xdb, sr=sr, x_axis='time', y_axis='hz')
plt.colorbar()
plt.show()

plt.figure(2)
librosa.display.specshow(Xdb, sr=sr, x_axis='time', y_axis='log') #所有动作都发生在频谱的底部,我们可以将频率轴转换为对数轴。
plt.colorbar()
plt.show()


# 每个音频信号都包含许多特征。
# 但是,我们必须提取与我们试图解决的问题相关的特征。
# 提取要使用它们进行分析的特征的过程称为特征提取

#1、过零率(Zero Crossing Rate,ZCR)是指在每帧中,语音信号通过零点(从正变为负或从负变为正)的次数。
n0 = 9000
n1 = 9100
plt.plot(x[n0:n1])
plt.grid()
plt.show()
zero_crossings = librosa.zero_crossings(x[n0:n1], pad=False)
print(sum(zero_crossings))

# #MFCC:信号的Mel频率倒谱系数(MFCC)是一小组特征(通常约10-20),其简明地描述了频谱包络的整体形状
mfccs = librosa.feature.mfcc(y=x, sr=sr,n_mfcc=20)
print(mfccs.shape)  #计算了12846帧的20个MFCC
librosa.display.specshow(mfccs, sr=sr, x_axis='time')
plt.show()

#色度频率:音乐音频有趣且强大的表示,其中整个频谱被投影到12个区间,代表音乐八度音的12个不同的半音(或色度)
hop_length = 512
chromagram = librosa.feature.chroma_stft(x[10000:50000], sr=sr, hop_length=hop_length)
librosa.display. specshow(chromagram, x_axis='time', y_axis='chroma', hop_length=hop_length, cmap='coolwarm')
plt.show()

chromagram = librosa.feature.chroma_stft(x[300000:700000], sr=sr, hop_length=hop_length1)
librosa.display. specshow(chromagram, x_axis='time', y_axis='chroma', hop_length=hop_length, cmap='coolwarm')
plt.show()
#短时能量体现的是信号在不同时刻的强弱程度。
#傅里叶变换是为了把时域信号变换到频域,在频域对信号进行处理(如滤波)。
# 从频域也可以方便的看到此信号的一些信息,如不同频率的相位、幅度、能量。
#通过变换能够充分突出问题某些方面的特征,能对时间(空间)频率的局部化分析,
# 通过伸缩平移运算对信号(函数)逐步进行多尺度细化,最终达到高频处时间细分,低频处频率细分,
# 能自动适应时频信号分析的要求,从而可聚焦到信号的任意细节

六、实验结果

1.时域图

python音乐分析,python,python,matplotlib,开发语言

2、频域图

 python音乐分析,python,python,matplotlib,开发语言

 3、过零率

python音乐分析,python,python,matplotlib,开发语言

 4.MFCC图

python音乐分析,python,python,matplotlib,开发语言

5、整个音频文件色度频率图

python音乐分析,python,python,matplotlib,开发语言

 文章来源地址https://www.toymoban.com/news/detail-719319.html

特定音频片段色度频率图

 python音乐分析,python,python,matplotlib,开发语言

 

到了这里,关于python音频信号分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • .Net开发的音频分离桌面应用,可用于提取背景音乐

    背景音乐对于视频来说是非常重要的,制作视频的人来说,听到一些符合自己视频的背景音乐,又找不到背景音乐的源音乐,这时候就需要有软件帮助提取背景音乐了。 这是基于C#开发的UI界面,支持中文等多国语言、支持分离人声背景音乐的桌面软件,可用于提取背景音乐

    2024年02月03日
    浏览(41)
  • 当音乐遇上Python:用Pydub自动分割音频

    🎵 🎵 🎵 当音乐遇上Python:用Pydub自动分割音频 随着短视频应用的普及,越来越多人开始了解并尝试制作自己的短视频作品。而在制作短视频时,背景音乐的选择和使用也是非常重要的一步。很多人喜欢选择一首长音乐,再通过剪辑软件将其剪成多段来使用,这种做法虽然

    2024年02月02日
    浏览(38)
  • 【Matlab】音频信号分析及FIR滤波处理——凯泽(Kaiser)窗

    1.1 课题内容: 利用麦克风采集语音信号(人的声音、或乐器声乐),人为加上环境噪声(窄带) 分析上述声音信号的频谱,比较两种情况下的差异 根据信号的频谱分布,选取合适的滤波器指标(频率指标、衰减指标),设计对应的 FIR 滤波器 实现数字滤波,将滤波前、后的声

    2024年02月21日
    浏览(42)
  • 上海AI实验室等开源,音频、音乐统一开发工具包Amphion

    上海AI实验室、香港中文大学数据科学院、深圳大数据研究院联合开源了一个名为Amphion的音频、音乐和语音生成工具包。 Amphion可帮助开发人员研究文本生成音频、音乐等与音频相关的领域,可以在一个框架内完成,以解决生成模型黑箱、代码库分散、缺少评估指标等难题。

    2024年01月21日
    浏览(50)
  • 让音乐响起:使用Python和Pygame轻松播放音频文件

    在这个数字化时代,音频和音乐已成为我们日常生活的一部分。不管是为了放松、学习还是工作,一个好的音乐播放器总是必不可少的。但你知道吗?用Python和Pygame,你可以轻松地制作自己的音频播放器!本文将引导你完成这一过程,让你体验到编程带来的乐趣和成就感。

    2024年02月22日
    浏览(39)
  • 物联网开发笔记(51)- 使用Micropython开发ESP32开发板之通过MAX98357 I2S音频模块播放音乐

    一、目的         这一节我们学习如何使用我们的ESP32开发板来播放音乐。 二、环境         ESP32 + MAX98357 I2S音频模块 + Thonny IDE + 几根杜邦线 接线方法: 三、代码     代码1,播放wav格式文件:wav格式文件几百K,别太大ESP32存储空间有限。 音频格式转换网站: 在线转

    2024年02月16日
    浏览(48)
  • 数字信号处理音频FIR去噪滤波器(基于MATLAB GUI的开发)

    利用MATLAB GUI设计平台,用窗函数法设计FIR数字滤波器,对所给出的含有噪声的声音信号进行数字滤波处理,得到降噪的声音信号,进行时域频域分析,同时分析不同窗函数的效果。将文件解压至一个目录下,运行m文件即可使用。 读取.wav音频文件函数 :audioread();(老版

    2024年02月08日
    浏览(53)
  • Python环境下基于自适应滤波器的音频信号(wav格式)降噪方法

    Python的集成环境我一般使用的是 Winpython , Winpytho 脱胎于pythonxy,面向 科学计算 , 兼顾数据分析与挖掘 ;Anaconda 主要面向数据分析与挖掘方面 ,在大数据处理方面有自己特色的一些包; Winpytho 强调 便携性 ,被做成绿色软件,不写入注册表,安装其实就是解压到某个文件夹

    2024年01月18日
    浏览(40)
  • Python 数据分析——matplotlib 快速绘图

    matplotlib采用面向对象的技术来实现,因此组成图表的各个元素都是对象,在编写较大的应用程序时通过面向对象的方式使用matplotlib将更加有效。但是使用这种面向对象的调用接口进行绘图比较烦琐,因此matplotlib还提供了快速绘图的pyplot模块。本节首先介绍该模块的使用方法

    2024年02月11日
    浏览(46)
  • Matplotlib绘图知识小结--Python数据分析学习

    一、Pyplot子库绘制2D图表 1、Matplotlib Pyplot Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。 Pyplot 是常用的绘图模块,能很方便让用户绘制 2D 图表。 Pyplot 包含一系列绘图函数的相关函数,每个函数会对当前的图像进行一些修改,例如:给图像加上标记,生新的图像,

    2024年02月12日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包