Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 63b4e60

Browse files
Add files via upload
1 parent d5910ee commit 63b4e60

File tree

2 files changed

+94
-0
lines changed

2 files changed

+94
-0
lines changed
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
# feature extraction and preprocessing data
2+
#IMPORT THE LIBRARIES
3+
import librosa
4+
import librosa.display
5+
import pandas as pd
6+
import numpy as np
7+
import scipy.signal
8+
import matplotlib.pyplot as plt
9+
from PIL import Image
10+
from pathlib import Path
11+
from pylab import rcParams
12+
rcParams['figure.figsize'] = 14, 6
13+
14+
import csv
15+
# Preprocessing
16+
from sklearn.model_selection import train_test_split
17+
from sklearn.preprocessing import LabelEncoder, StandardScaler
18+
#Reports
19+
from sklearn.metrics import classification_report, confusion_matrix
20+
21+
import warnings
22+
warnings.filterwarnings('ignore')
23+
24+
#READ THE AUDIO SAMPLES
25+
sr = 16000
26+
e_file1 = r'C:\Users\Aryan\PycharmProjects\Noise Reduction Filter\audio01.mp3'
27+
e_file2 = r'C:\Users\Aryan\PycharmProjects\Noise Reduction Filter\audio02.mp3'
28+
29+
# 10 seconds of each file
30+
y1,sr = librosa.load(e_file1, mono=True, sr=sr, offset=0, duration=10)
31+
y2,sr = librosa.load(e_file2, mono=True, sr=sr, offset=0, duration=10)
32+
33+
from IPython.display import Audio, IFrame, display
34+
35+
display(Audio(y1,rate=sr))
36+
display(Audio(y2,rate=sr))
37+
38+
#The audio samples used have high level background noises.
39+
librosa.display.waveplot(y1,sr=sr, color='g', x_axis='time');
40+
librosa.display.waveplot(y1,sr=sr, color='g', x_axis='time');
41+
42+
#Logmel-spectogram
43+
#It is a very common preprocessing technique in audio detection applications is to transform audios to its log mel-spectogram representation
44+
45+
S1 = librosa.feature.melspectrogram(y=y1, sr=sr, n_mels=64)
46+
D1 = librosa.power_to_db(S1, ref=np.max)
47+
librosa.display.specshow(D1, x_axis='time', y_axis='mel');
48+
49+
S2 = librosa.feature.melspectrogram(y=y2, sr=sr, n_mels=64)
50+
D2 = librosa.power_to_db(S2, ref=np.max)
51+
librosa.display.specshow(D2, x_axis='time', y_axis='mel');
52+
53+
#Filtering low-frequencies
54+
#A low-pass filter is a filter that passes signals with a frequency lower than a selected cutoff frequency and attenuates signals with frequencies higher than the cutoff frequency.
55+
#The exact frequency response of the filter depends on the filter design.
56+
57+
from scipy import signal
58+
import random
59+
60+
61+
def f_high(y,sr):
62+
b,a = signal.butter(10, 2000/(sr/2), btype='highpass')
63+
yf = signal.lfilter(b,a,y)
64+
return yf
65+
66+
yf1 = f_high(y1, sr)
67+
yf2 = f_high(y2, sr)
68+
69+
librosa.display.waveplot(y1,sr=sr, colour='p', x_axis='time');
70+
librosa.display.waveplot(yf1,sr=sr, x_axis='time');
71+
72+
librosa.display.waveplot(y2,sr=sr, x_axis='time');
73+
librosa.display.waveplot(yf2,sr=sr, x_axis='time');
74+
75+
Sf1 = librosa.feature.melspectrogram(y=yf1, sr=sr, n_mels=64)
76+
Df1 = librosa.power_to_db(Sf1, ref=np.max)
77+
librosa.display.specshow(Df1, x_axis='time', y_axis='mel');
78+
Sf2 = librosa.feature.melspectrogram(y=yf2, sr=sr, n_mels=64)
79+
Df2 = librosa.power_to_db(Sf2, ref=np.max)
80+
librosa.display.specshow(Df2, x_axis='time', y_axis='mel');
81+
82+
#Check the audio output
83+
display(Audio(yf1,rate=sr))
84+
display(Audio(yf2,rate=sr))
85+
86+
#CONCLUSION
87+
#For both audio samples, the filter helped to isolate the interesting frequencies. The first audio is in a very good quality for distincting the birds.
88+
#The second audio still has some noise but significant improvements in noise reduction can be observed.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
librosa==0.8.1
2+
pandas==1.3.5
3+
numpy==1.21.5
4+
scipy==1.9.0
5+
matplotlib==3.6.0
6+
pillow==7.2.1

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /