목록Project/Music Plagiarism Project (25)
UOMOP
pip install dtw-python # ========================= 라이브러리 호출 ========================= from scipy import stats from random import * import numpy as np import pandas as pd import librosa import librosa.display import soundfile as sf import IPython.display as ipd import math import matplotlib.pyplot as plt import matplotlib.pyplot as plt import seaborn as sns import IPython from dtaidistance import..
Tempo 확인하기 음원의 템포를 확인하기 위해서 librosa에서 제공하는 beat_track, tempo함수를 사용하였지만, 이상적인 결과를 확인하지 못하였다. flatness를 구해서 Spectral_Centroid의 Mean값으로 tempo를 확인하는 것이 더 이상적이다. # ========================= 각종 함수 정의 ========================= def Devider(A, B, sr, period, mode) : # A : 표절 논란곡 1 # B : 표절 논란곡 2 # sr : A, B의 Sampling Rate # period : 몇 초씩 쪼갤 것인가 # mode = 1 : 전체 길이 데이터를 사용 # = 2 : 전체 길의의 1/2만을 사용 # ===== 두..
Period Length Cutting되는 영역의 크기를 줄여나가면서 확인을 해본다. 가지고 있는 총 19개의 음원 샘플을 Load하여 각각 모두 Pearson R 연산을 수행해본다. 그리고 상관 값이 0.025를 초과하면 Count를 한다. 크기가 감소할수록 원하는 이상적인 결과가 나올 것으로 예상했다. 표절 논란이 있었던 곡끼리의 Count Value가 커져서 정사각형 Window의 (2사분면 -> 4사분면)방향으로의 대각선 성분이 검출 될 것으로 예상했다. period에 따른 이상적인 결과 확인 불가.
def Pearson(A, B, sr, period, mode, num_of_ij) : # mode가 1이면 전체 음원데이터 사용 # mode가 2이면 전체 음원의 절반만을 사용 length = int( ( min(len(A.tolist()), len(B.tolist())) ) / mode ) A = (A[0 : length]) B = (B[0 : length]) num_of_window = int(math.floor(length / int(period * sr))) final_index_A = 0 final_index_B = 0 save_score = list() Mat_A = [[0 for col in range(int(period * sr))] for row in range(num_of_window..
Ctrl + H
y1, sr = librosa.load('1-1.wav') y2, sr = librosa.load('1-2.wav') y1, _ = librosa.effects.trim(y1) y2, _ = librosa.effects.trim(y2) sf.write('y1.wav', data = y1, samplerate = sr, format='wav', endian='LITTLE', subtype='PCM_16') sf.write('y2.wav', data = y2, samplerate = sr, format='wav', endian='LITTLE', subtype='PCM_16')