Datawhale的2021的四月学习——食物音频 特征分析

系列文章目录

Datawhale的2021的四月学习——食物音频分析 bassline


本文仅为代码分析,代码源码为:里奥呐多艾斯的Task2 食物声音识别-赛题数据介绍与分析

1.特征分析

1.1库函数加载

1.1.1分析

本次使用的音频处理库函数为librosa,使用的IPython.display.Audio 模块能使得音频直接在jupyter笔记本中播放。

库函数作用
pd.plotting.register_matplotlib_converters()是否在matplotlib的单位注册表中为dates, times, datetimes, and Periods注册转换器,“False”将删除转换器,默认值是“auto”;
%matplotlib inline用在Jupyter notebook中具体作用是当调用matplotlib.pyplot的绘图函数plot()进行绘图的时候,或者生成一个figure画布的时候,可以直接在你的python console里面生成图像。
from sklearn.model_selection import train_test_split数据集划分
from sklearn.metrics import classification_report分类报告
from sklearn.model_selection import GridSearchCV使用自定义验证集进行模型调参
from sklearn.preprocessing import MinMaxScaler把数据集的不同特征缩放到固定范围

1.1.2代码:

#基本库
import pandas as pd
import numpy as np

pd.plotting.register_matplotlib_converters()
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns

from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
from sklearn.model_selection import GridSearchCV

from sklearn.preprocessing import MinMaxScaler
# 加载音频处理库
import os
import matplotlib.pyplot as plt
import librosa
import librosa.display
import glob
import IPython.display as ipd

1.2查看音频数据

1.2.1分析

统计文件夹的个数(或者说是总文件夹下一级列表中元素的个数)和文件夹中数据的个数,并计算百分比数据进行可视化处理

1.2.2代码

voice_path = './train_sample'


def look_data():
    # 音频类别文件夹个数
    print(f'音频文件夹的个数: {len(os.listdir(voice_path))}')

    voice_total = 0
    single_label = {}
    for ind, label_name in enumerate(os.listdir(voice_path)):
        file_path = voice_path + '/' + label_name
        single_num = len(os.listdir(file_path))
        single_label[label_name] = single_num
        voice_total += single_num

    print(f'音频文件总量: {voice_total}')
    print(f'{"序号":<5}{"类别":<15}{"数量":<10}{"占比"}')
    for ind, (key, value) in enumerate(single_label.items()):
        print(f'{ind:<5}{key:<20}{value:<10}{value / voice_total:.2%}')


look_data()

1.3 查看音频特征

1.3.1分析

代码作用
display,Audio播放声音
librosa.loadload函数就是用来读取音频的。当然,读取之后,转化为了numpy的格式储存,而不再是音频的格式了
librosa.display.waveplot音频的可视化处理
librosa.amplitude_to_db将振幅谱图转换为db _scale谱图

1.3.2代码

# 播放芦荟的声音
ipd.Audio('./train_sample/aloe/24EJ22XBZ5.wav')
# 播放汉堡的声音
ipd.Audio('./train_sample/burger/0WF1KDZVPZ.wav')
data1, sampling_rate1 = librosa.load('./train_sample/aloe/24EJ22XBZ5.wav')
data2, sampling_rate2 = librosa.load('./train_sample/burger/0WF1KDZVPZ.wav')
# 芦荟的波形幅度包络
plt.figure(figsize=(14, 5))
librosa.display.waveplot(data1,sr=sampling_rate1)
# 汉堡的波形幅度包络图
plt.figure(figsize=(14, 5))
librosa.display.waveplot(data2,sr=sampling_rate2)
# 芦荟的声谱图
plt.figure(figsize=(20, 10))
D = librosa.amplitude_to_db(np.abs(librosa.stft(data1)), ref=np.max)
plt.subplot(4, 2, 1)
librosa.display.specshow(D, y_axis='linear')
plt.colorbar(format='%+2.0f dB')
plt.title('Linear-frequency power spectrogram of aloe')
# 汉堡的声图谱
plt.figure(figsize=(20, 10))
D = librosa.amplitude_to_db(np.abs(librosa.stft(data2)), ref=np.max)
plt.subplot(4, 2, 1)
librosa.display.specshow(D, y_axis='linear')
plt.colorbar(format='%+2.0f dB')
plt.title('Linear-frequency power spectrogram of burger')

2.一些相关文章(参考文献)

Python音频信号处理库函数librosa介绍
论文笔记:语音情感识别(四)语音特征之声谱图,log梅尔谱,MFCC,deltas
声音特性介绍——声谱图、音色、音调
声谱图,梅尔语谱,倒谱,梅尔倒谱系数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值