零基础入门语音识别-食物声音识别 Task3学习笔记

过零率

过零率(zero crossing rate)是一个信号符号变化的比率,即,在每帧中,语音信号从正变为负或从负变为正的次数。
一般情况下,过零率越大,频率近似越高。

选取一个音频数据进行观察,先画出数据的波形图。由于数据的波形长度过长,为了方便观察,就在其中截取一段进行放大输出。

代码:

x, sr = librosa.load('./train_sample/aloe/24EJ22XBZ5.wav')
#绘制声波信号
plt.figure(figsize=(14, 5))
librosa.display.waveplot(x, sr=sr)
# 放大
n0 = 9000
n1 = 9100
plt.figure(figsize=(14, 5))
plt.plot(x[n0:n1])
plt.grid()

其中librosa.display.waveplot()这个函数是librosa中常用的函数之一,用来画出音频数据的波形图,其中x是音频时间序列,sr是采样率。它还有两个参数,一个是x_axis,默认是‘time’,是在x轴上给定时间刻度线;还有一个是offset,水平偏移开始波形图,假如设定为3,就是第0秒的音频信号在图上的x轴横坐标显示就是第3秒。这个感觉应该不经常用到。
结果:
在这里插入图片描述
在这里插入图片描述
观察过零点(就是图中经过纵坐标0值的点的个数),数了一下有15个,用代码输出验证:

zero_crossings = librosa.zero_crossings(x[n0:n1], pad=False)
print(sum(zero_crossings))
15

频谱质心

谱质心(Spectral Centroid)是描述音色属性的重要物理参数之一,是频率成分的重心,是在一定频率范围内通过能量加权平均的频率,其单位是Hz。它是声音信号的频率分布和能量分布的重要信息。在主观感知领域,谱质心描述了声音的明亮度,具有阴暗、低沉品质的声音倾向有较多低频内容,谱质心相对较低,具有明亮、欢快品质的多数集中在高频,谱质心相对较高。该参数常用于对乐器声色的分析研究。

(我的理解:哪个地方频率高,频谱之心就在哪里。)

绘制频谱质心代码:

spectral_centroids = librosa.feature.spectral_centroid(x, sr=sr)[0]
print(spectral_centroids.shape)
# (2647,)
# 计算时间变量 
frames = range(len(spectral_centroids))
t = librosa.frames_to_time(frames)
# 归一化频谱质心
def normalize(x, axis=0):
    return sklearn.preprocessing.minmax_scale(x, axis=axis)
#沿波形绘制频谱质心 
librosa.display.waveplot(x, sr=sr, alpha=0.4)
plt.plot(t, normalize(spectral_centroids), color='r')

注:librosa.frames_to_time():根据音频帧的下标转化为时间数组。

结果:
在这里插入图片描述

声谱衰减

声谱衰减是对声音信号形状(波形图)的一种衡量,表示低于总频谱能量的指定百分比的频率。

spectral_rolloff = librosa.feature.spectral_rolloff(x+0.01, sr=sr)[0]
librosa.display.waveplot(x, sr=sr, alpha=0.4)
plt.plot(t, normalize(spectral_rolloff), color='b')

注:librosa.feature.spectral_rolloff ():计算信号中每帧的滚降系数。
结果:
在这里插入图片描述

色度频率

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

hop_length = 512
chromagram = librosa.feature.chroma_stft(x, sr=sr, hop_length=hop_length)
plt.figure(figsize=(15, 5))
librosa.display.specshow(chromagram, x_axis='time', y_axis='chroma', hop_length=hop_length, cmap='coolwarm')

在这里插入图片描述

短时傅里叶变换

关于librosa.stft()这个函数里面的参数:

参数功能
y音频时间序列
n_fftFFT窗口大小,n_fft=hop_length+overlapping
hop_length帧移,如果未指定,则默认win_length / 4
win_length每一帧音频都由window()加窗。窗长win_length,然后用零填充以匹配n_fft,默认win_length=n_fft。
window字符串,元组,数字,函数 shape =(n_fft, )窗口(字符串,元组或数字);窗函数,例如scipy.signal.hanning;长度为n_fft的向量或数组
center如果为True,则填充信号y,以使帧 D [:, t]以y [t * hop_length]为中心;如果为False,则D [:, t]从y [t * hop_length]开始
dtypeD的复数值类型。默认值为64-bit complex复数
pad_mode如果center = True,则在信号的边缘使用填充模式。默认情况下,STFT使用reflection padding

关于梅尔滤波器

自己了解之后对这部分的知识还是一知半解,感觉整个过程有点点抽象。特别是mfcc的特征缩放那里,不是很懂。明天去看看直播回放,希望能加深理解!

天池赛事的零基础入门语义分割-地表建筑物识别任务是一个面向初学者的语义分割竞赛。任务的目标是利用机器学习和计算机视觉技术,对卫星图像中的地表建筑物进行标记和识别。 在这个任务中,参赛者需要使用给定的训练数据集进行模型的训练和优化。训练数据集包含了一系列卫星图像和相应的像素级标注,标注了地表建筑物的位置。参赛者需要通过分析训练数据集中的图像和标注信息,来构建一个能够准确地识别出地表建筑物的模型。 参赛者需要注意的是,语义分割是指将图像中的每个像素进行分类,使得同一类别的像素具有相同的标签。因此,在地表建筑物识别任务中,参赛者需要将地表建筑物区域与其他区域进行区分,并正确地进行标记。这对于初学者来说可能是一个挑战,因此需要掌握基本的图像处理和机器学习知识。 参赛者可以根据自己的理解,选择合适的算法和模型来完成这个任务。常见的方法包括卷积神经网络(CNN),通过设计适当的网络结构和训练方式,提高模型的准确性和泛化能力。同时,数据预处理和数据增强技术也是提高模型性能的关键。参赛者可以通过对数据进行增强和扩充,提高模型的鲁棒性和识别能力。 最后,参赛者需要使用训练好的模型对测试数据集进行预测,并生成预测结果。这些预测结果将用于评估参赛者模型的性能和准确度。评估指标通常包括像素级准确度(Pixel Accuracy)和平均交并比(Mean Intersection over Union),参赛者需要根据这些指标来评估和改进自己的模型。 总之,通过参加这个任务,初学者可以通过实践和挑战来提高自己的图像处理和机器学习技能,并掌握语义分割的基本概念和方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值