Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import struct
- import matplotlib
- import matplotlib.pyplot as plt
- import numpy as np
- import pylab
- from scipy import signal
- import time
- import wave
- import os
- from scipy.interpolate import make_interp_spline, BSpline
- from scipy.signal import fftconvolve
- from os import path
- import librosa
- import librosa.display
- from numpy.linalg import norm
- from dtw import dtw
- import pandas as pd
- import openpyxl
- import concurrent
- import datetime
- def Try_Sample(j, DB_Files, DATABASE_FOLDER, Source, ExFilenames, ExTriggers, ExTimings, ExMaxVal):
- try:
- CompareFile = DB_Files[j]
- print("[" + str(datetime.datetime.now())+ "] With " + CompareFile + " || " + str(j) + "/" + str(len(DB_Files)) + "\n")
- Compare = DATABASE_FOLDER+"\\"+CompareFile
- SourceSound, SourceSR = librosa.load(Source)
- SourceDuration = librosa.get_duration(y=SourceSound, sr=SourceSR)
- SourceSteps = SourceDuration/(SourceSR/DIVISOR)
- CompareSound, CompareSR = librosa.load(Compare)
- CompareDuration = librosa.get_duration(y=CompareSound, sr=CompareSR)
- #print(SourceDuration)
- Correlations = []
- _offset = 0
- while _offset < SourceDuration-SourceSteps:
- SampleSound, SampleSR = librosa.load(Source, offset=_offset, duration=CompareDuration)
- CompareSignal = np.frombuffer(CompareSound, dtype=np.int16)
- SourceSignal = np.frombuffer(SampleSound, dtype=np.int16)
- #mfcc1 = librosa.feature.mfcc(SampleSound, SampleSR)
- #mfcc2 = librosa.feature.mfcc(CompareSound, CompareSR)
- Correlation = np.correlate(SourceSignal/ float(0xFFFF), CompareSignal/ float(0xFFFF), mode="same")
- Correlations.append(sum(Correlation)/len(Correlation))
- _offset += 0.5
- #DataFrame = DataFrame.append({"Filename": CompareFile, "Trigger": DiffCount, "Timings": Timings, "MaxVal": MaxDiff}, ignore_index=True)
- ExFilenames.append(CompareFile)
- ExTriggers.append(sum(Correlations)/len(Correlations))
- ExTimings.append(Correlations)
- ExMaxVal.append(max(Correlation))
- d = {"Filename":ExFilenames, "Moy":ExTriggers, "Timings":ExTimings, "MaxVal":ExMaxVal}
- DataFrame = pd.DataFrame(data=d)
- DataFrame.to_excel("Result\\"+str(SourceFileName)+".xlsx")
- #print("T: " + str(round(ResultOffset[o]*SourceSR)/len(SourceSound)*SourceDuration))
- except:
- print("Error 559")
- if __name__ == '__main__':
- matplotlib.use('Agg')
- INPUT_FOLDER = "Input\\TEST"
- #DATABASE_FOLDER = "DataBase\\Valo_Sage_SFX"
- DATABASE_FOLDER = "DataBase\\Valo_Sova"
- DIVISOR = 1
- Input_Files = []
- for root, dirs, files in os.walk(INPUT_FOLDER):
- for f in files:
- if (f.split(".")[1] == "wav"):
- Input_Files.append(f)
- print("Found " + str(len(Input_Files)) + " Wav files in input folder")
- DB_Files = []
- for root, dirs, files in os.walk(DATABASE_FOLDER):
- for f in files:
- if (f.split(".")[-1] == "wav"):
- DB_Files.append(f)
- print("Found " + str(len(DB_Files)) + " Wav files in database folder")
- for i in range(len(Input_Files)):
- SourceFile = Input_Files[i]
- SourceFileName = SourceFile.split(".")[0]
- print("Analysing " + SourceFile)
- Source = INPUT_FOLDER+"\\"+SourceFile
- if not path.exists("Result\\"+SourceFileName):
- os.mkdir("Result\\"+SourceFileName)
- ExFilenames = []
- ExTriggers = []
- ExTimings = []
- ExMaxVal = []
- executor = concurrent.futures.ThreadPoolExecutor(25)
- #def Try_Sample(j, DB_Files, DATABASE_FOLDER, Source, DataFrame, DIVISOR):
- futures = [executor.submit(Try_Sample, j, DB_Files, DATABASE_FOLDER, Source, ExFilenames, ExTriggers, ExTimings, ExMaxVal) for j in range(len(DB_Files))]
- concurrent.futures.wait(futures)
- #DataFrame = pd.DataFrame({ExFilenames, ExTriggers, ExTimings, ExMaxVal} ,columns=["Filename", "Trigger", "Timings", "MaxVal"])
- #print(Result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement