-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathhprss.py
127 lines (111 loc) · 5.19 KB
/
hprss.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
from __future__ import print_function
import numpy as np
import matplotlib.pyplot as plt
import librosa
import librosa.display
##########################################################
# Load the file
y, sr = librosa.load('/home/pranav/Desktop/myfinalProject/Test/'
'sample 4.wav')
##########################################################
# Compute the short-time Fourier transform of y
D = librosa.stft(y)
##########################################################
# Decompose the file
D_harmonic, D_percussive = librosa.decompose.hpss(D)
d_harmonic = librosa.istft(D_harmonic)
d_percussive = librosa.istft(D_percussive)
###################################################################################
# Write with margin = 1
librosa.output.write_wav('/home/pranav/Desktop/myfinalProject/har.wav', d_harmonic, sr)
librosa.output.write_wav('/home/pranav/Desktop/myfinalProject/per.wav', d_percussive, sr)
###################################################################################
rp = np.max(np.abs(D))
plt.figure(figsize=(12, 8))
plt.subplot(3, 1, 1)
librosa.display.specshow(librosa.amplitude_to_db(D, ref=rp), y_axis='log')
plt.colorbar()
plt.title('Full spectrogram')
plt.subplot(3, 1, 2)
librosa.display.specshow(librosa.amplitude_to_db(D_harmonic, ref=rp), y_axis='log')
plt.colorbar()
plt.title('Harmonic spectrogram')
plt.subplot(3, 1, 3)
librosa.display.specshow(librosa.amplitude_to_db(D_percussive, ref=rp), y_axis='log', x_axis='time')
plt.colorbar()
plt.title('Percussive spectrogram')
plt.tight_layout()
plt.savefig('1margin.png')
###############################################################################
D_harmonic2, D_percussive2 = librosa.decompose.hpss(D, margin=2)
D_harmonic4, D_percussive4 = librosa.decompose.hpss(D, margin=4)
D_harmonic6, D_percussive6 = librosa.decompose.hpss(D, margin=6)
D_harmonic8, D_percussive8 = librosa.decompose.hpss(D, margin=8)
D_harmonic10, D_percussive10 = librosa.decompose.hpss(D, margin=10)
###############################################################################
# Compute with margin > 2
d_harmonic2 = librosa.istft(D_harmonic2)
d_percussive2 = librosa.istft(D_percussive2)
d_harmonic4 = librosa.istft(D_harmonic4)
d_percussive4 = librosa.istft(D_percussive4)
d_harmonic6 = librosa.istft(D_harmonic6)
d_percussive6 = librosa.istft(D_percussive6)
d_harmonic8 = librosa.istft(D_harmonic8)
d_percussive8 = librosa.istft(D_percussive8)
d_harmonic10 = librosa.istft(D_harmonic10)
d_percussive10 = librosa.istft(D_percussive10)
#######################################################################################
# Write with margin > 2
librosa.output.write_wav('/home/pranav/Desktop/myfinalProject/har2.wav', d_harmonic2, sr)
librosa.output.write_wav('/home/pranav/Desktop/myfinalProject/per2.wav', d_percussive2, sr)
librosa.output.write_wav('/home/pranav/Desktop/myfinalProject/har4.wav', d_harmonic4, sr)
librosa.output.write_wav('/home/pranav/Desktop/myfinalProject/per4.wav', d_percussive4, sr)
librosa.output.write_wav('/home/pranav/Desktop/myfinalProject/har6.wav', d_harmonic6, sr)
librosa.output.write_wav('/home/pranav/Desktop/myfinalProject/per6.wav', d_percussive6, sr)
librosa.output.write_wav('/home/pranav/Desktop/myfinalProject/har8.wav', d_harmonic8, sr)
librosa.output.write_wav('/home/pranav/Desktop/myfinalProject/per8.wav', d_percussive8, sr)
librosa.output.write_wav('/home/pranav/Desktop/myfinalProject/har10.wav', d_harmonic10, sr)
librosa.output.write_wav('/home/pranav/Desktop/myfinalProject/per10.wav', d_percussive10, sr)
#######################################################################################
plt.figure(figsize=(10, 10))
plt.subplot(5, 2, 1)
librosa.display.specshow(librosa.amplitude_to_db(D_harmonic, ref=rp), y_axis='log')
plt.title('Harmonic')
plt.yticks([])
plt.ylabel('margin=1')
plt.subplot(5, 2, 2)
librosa.display.specshow(librosa.amplitude_to_db(D_percussive, ref=rp), y_axis='log')
plt.title('Percussive')
plt.yticks([]), plt.ylabel('')
plt.subplot(5, 2, 3)
librosa.display.specshow(librosa.amplitude_to_db(D_harmonic2, ref=rp), y_axis='log')
plt.yticks([])
plt.ylabel('margin=2')
plt.subplot(5, 2, 4)
librosa.display.specshow(librosa.amplitude_to_db(D_percussive2, ref=rp), y_axis='log')
plt.yticks([]), plt.ylabel('')
plt.subplot(5, 2, 5)
librosa.display.specshow(librosa.amplitude_to_db(D_harmonic4, ref=rp), y_axis='log')
plt.yticks([])
plt.ylabel('margin=4')
plt.subplot(5, 2, 6)
librosa.display.specshow(librosa.amplitude_to_db(D_percussive4, ref=rp), y_axis='log')
plt.yticks([]), plt.ylabel('')
plt.subplot(5, 2, 7)
librosa.display.specshow(librosa.amplitude_to_db(D_harmonic8, ref=rp), y_axis='log')
plt.yticks([])
plt.ylabel('margin=8')
plt.subplot(5, 2, 8)
librosa.display.specshow(librosa.amplitude_to_db(D_percussive8, ref=rp), y_axis='log')
plt.yticks([]), plt.ylabel('')
plt.subplot(5, 2, 9)
librosa.display.specshow(librosa.amplitude_to_db(D_harmonic10, ref=rp), y_axis='log')
plt.yticks([])
plt.ylabel('margin=10')
plt.subplot(5, 2, 10)
librosa.display.specshow(librosa.amplitude_to_db(D_percussive10, ref=rp), y_axis='log')
plt.yticks([]), plt.ylabel('')
plt.tight_layout()
plt.savefig('marginplots.png')
plt.show()
###################################################################################################