added changes on checking similarity
This commit is contained in:
72
base/api/librosa_run.py
Normal file
72
base/api/librosa_run.py
Normal file
@ -0,0 +1,72 @@
|
||||
import librosa
|
||||
import librosa.display as display
|
||||
import matplotlib.pyplot as plt
|
||||
import os
|
||||
# from numpy import array
|
||||
from datetime import datetime
|
||||
|
||||
from numpy.linalg import norm
|
||||
from dtw import dtw
|
||||
|
||||
# import math
|
||||
|
||||
import warnings
|
||||
warnings.filterwarnings("ignore")
|
||||
|
||||
def dot(A,B):
|
||||
return (sum(a*b for a,b in zip(A,B)))
|
||||
|
||||
def cosine_similarity(a,b):
|
||||
return dot(a,b) / ( (dot(a,a) **.5) * (dot(b,b) ** .5) )
|
||||
|
||||
def fungsi_librosa(sound_url1,sound_url2):
|
||||
|
||||
print(sound_url1)
|
||||
print(sound_url2)
|
||||
|
||||
y1, sr1 = librosa.load(sound_url1)
|
||||
y2, sr2 = librosa.load(sound_url2)
|
||||
|
||||
mfcc1 = librosa.feature.mfcc(y1,sr1)
|
||||
mfcc2 = librosa.feature.mfcc(y2,sr2)
|
||||
|
||||
|
||||
path = 'static/created_image/'
|
||||
if not os.path.exists(path):
|
||||
os.makedirs(path)
|
||||
|
||||
today_date = datetime.now().strftime("%Y-%m-%d")
|
||||
|
||||
|
||||
path = path + today_date+ '/'
|
||||
path_nya = path
|
||||
|
||||
if not os.path.exists(path):
|
||||
os.makedirs(path)
|
||||
|
||||
hour_min_sec = datetime.now().strftime("%H-%M-%S")
|
||||
|
||||
plt.figure(figsize=(14, 5))
|
||||
display.waveshow(y1, sr=sr1)
|
||||
plt.savefig(path+'spec'+hour_min_sec+'.png')
|
||||
|
||||
plt.figure(figsize=(14, 5))
|
||||
display.waveshow(y2, sr=sr2)
|
||||
plt.savefig(path+'spec1'+hour_min_sec+'.png')
|
||||
|
||||
dist, cost, acc_cost, path = dtw(mfcc1.T, mfcc2.T, dist=lambda x, y: norm(x - y, ord=1))
|
||||
|
||||
array1 = []
|
||||
for nums in mfcc1:
|
||||
for val in nums:
|
||||
array1.append(val)
|
||||
|
||||
array2 = []
|
||||
for nums in mfcc2:
|
||||
for val in nums:
|
||||
array2.append(val)
|
||||
|
||||
cosine_similaritynya = cosine_similarity(array1, array2)
|
||||
|
||||
return {'dist': dist, 'cosine_similaritynya': cosine_similaritynya, 'path': path_nya, 'hour_min_sec': hour_min_sec}
|
||||
|
||||
Reference in New Issue
Block a user