聲音的產生
聲音以波的形式產生,我們從波的視角來理解聲音,僅憑頻率,幅度,相位,便構成了波及其疊加的所有,聲音的不同音高、音量、音色也由這些基本“粒子”組合而來,
世界上所有的聲波都可以“降解”到基本波以上,這也是傅里葉變換的基本思想,
賽題資料集介紹
聲音分類在很多場景中都有大模型的應用,例如對于音樂的分類可以應用與音樂的檢索和推薦中,本賽題的背景是食物的聲音的分類,
本次比賽的資料集來自Kaggle的“Eating Sound Collection”(可商用), 資料集中包含20種不同食物的咀嚼聲音,賽題任務是給這些聲音資料建模,準確分類,
下載天池資料集并解壓
!wget http://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531887/train_sample.zip
!unzip -qq train_sample.zip
!\rm train_sample.zip
!wget http://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531887/test_a.zip
!unzip -qq test_a.zip
!\rm test_a.zip
上述代碼需要在linux系統下運行
資料探索
加載庫
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)Librosa:它通常用于分析音頻信號,但更傾向于音樂,它包括用于構建MIR(音樂資訊檢索)系統的nuts 和 bolts,示例和教程可以參考:(https://librosa.github.io/librosa/)
2)IPython.display.Audio: 該模塊能使得音頻直接在jupyter筆記本中播放,這兩個庫我們下面都會用到,可用以下命令進行安裝:pip install 【包名,如“librosa”】 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
查看音頻資料
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%}')
查看音頻特征
ipd.Audio('音頻檔案的路徑') #播放檔案
librosa.load('路徑')#回傳資料和采樣率
plt.figure(figsize = (14,5))
librosa.display.waveplot(data,sr = sample_rate)#繪制音頻檔案的波形幅度包絡
聲譜圖是聲音或其他信號的頻率隨時間變化時的頻譜(spectrum)的一種直觀表示,聲譜圖有時也稱sonographs,voiceprints,或者voicegrams,當資料以三維圖形表示時,可稱其為瀑布圖(waterfalls),在二維陣列中,第一個軸是頻率,第二個軸是時間,我們使用librosa.display.specshow來顯示聲譜圖,
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')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/277144.html
標籤:其他
