Advertisement
raphael76280

Coor_Offset_Threaded

May 17th, 2020
710
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.19 KB | None | 0 0
  1.  
  2.  
  3.  
  4.  
  5. import struct
  6. import matplotlib
  7. import matplotlib.pyplot as plt
  8. import numpy as np
  9. import pylab
  10. from scipy import signal
  11. import time
  12. import wave
  13.  
  14. import os
  15. from scipy.interpolate import make_interp_spline, BSpline
  16.  
  17. from scipy.signal import fftconvolve
  18.  
  19. from os import path
  20.  
  21. import librosa
  22. import librosa.display
  23. from numpy.linalg import norm
  24. from dtw import dtw
  25.  
  26. import pandas as pd
  27. import openpyxl
  28.  
  29. import concurrent
  30. import datetime
  31.  
  32. def Try_Sample(j, DB_Files, DATABASE_FOLDER, Source, ExFilenames, ExTriggers, ExTimings, ExMaxVal):
  33.     try:
  34.         CompareFile = DB_Files[j]
  35.  
  36.  
  37.  
  38.         print("[" + str(datetime.datetime.now())+  "] With " + CompareFile + " || " + str(j) + "/" + str(len(DB_Files)) + "\n")
  39.         Compare = DATABASE_FOLDER+"\\"+CompareFile
  40.  
  41.         SourceSound, SourceSR = librosa.load(Source)
  42.         SourceDuration = librosa.get_duration(y=SourceSound, sr=SourceSR)
  43.         SourceSteps = SourceDuration/(SourceSR/DIVISOR)
  44.  
  45.         CompareSound, CompareSR = librosa.load(Compare)
  46.         CompareDuration = librosa.get_duration(y=CompareSound, sr=CompareSR)
  47.  
  48.         #print(SourceDuration)
  49.  
  50.  
  51.         Correlations = []
  52.        
  53.  
  54.         _offset = 0
  55.         while _offset < SourceDuration-SourceSteps:
  56.             SampleSound, SampleSR = librosa.load(Source, offset=_offset, duration=CompareDuration)
  57.  
  58.  
  59.             CompareSignal = np.frombuffer(CompareSound, dtype=np.int16)
  60.             SourceSignal = np.frombuffer(SampleSound, dtype=np.int16)
  61.  
  62.  
  63.             #mfcc1 = librosa.feature.mfcc(SampleSound, SampleSR)
  64.  
  65.             #mfcc2 = librosa.feature.mfcc(CompareSound, CompareSR)
  66.  
  67.             Correlation = np.correlate(SourceSignal/ float(0xFFFF), CompareSignal/ float(0xFFFF), mode="same")
  68.             Correlations.append(sum(Correlation)/len(Correlation))
  69.  
  70.             _offset += 0.5
  71.  
  72.  
  73.  
  74.  
  75.         #DataFrame = DataFrame.append({"Filename": CompareFile, "Trigger": DiffCount, "Timings": Timings, "MaxVal": MaxDiff}, ignore_index=True)
  76.         ExFilenames.append(CompareFile)
  77.         ExTriggers.append(sum(Correlations)/len(Correlations))
  78.         ExTimings.append(Correlations)
  79.         ExMaxVal.append(max(Correlation))
  80.  
  81.         d = {"Filename":ExFilenames, "Moy":ExTriggers, "Timings":ExTimings, "MaxVal":ExMaxVal}
  82.         DataFrame = pd.DataFrame(data=d)
  83.  
  84.         DataFrame.to_excel("Result\\"+str(SourceFileName)+".xlsx")
  85.         #print("T: " + str(round(ResultOffset[o]*SourceSR)/len(SourceSound)*SourceDuration))
  86.  
  87.     except:
  88.         print("Error 559")
  89.  
  90.  
  91.  
  92.  
  93.  
  94. if __name__ == '__main__':
  95.     matplotlib.use('Agg')
  96.     INPUT_FOLDER = "Input\\TEST"
  97.     #DATABASE_FOLDER = "DataBase\\Valo_Sage_SFX"
  98.     DATABASE_FOLDER = "DataBase\\Valo_Sova"
  99.  
  100.     DIVISOR = 1
  101.     Input_Files = []
  102.  
  103.     for root, dirs, files in os.walk(INPUT_FOLDER):
  104.         for f in files:
  105.             if (f.split(".")[1] == "wav"):
  106.                 Input_Files.append(f)
  107.     print("Found " + str(len(Input_Files)) + " Wav files in input folder")
  108.  
  109.     DB_Files = []
  110.     for root, dirs, files in os.walk(DATABASE_FOLDER):
  111.         for f in files:
  112.             if (f.split(".")[-1] == "wav"):
  113.                 DB_Files.append(f)
  114.     print("Found " + str(len(DB_Files)) + " Wav files in database folder")
  115.  
  116.  
  117.     for i in range(len(Input_Files)):
  118.        
  119.         SourceFile = Input_Files[i]
  120.  
  121.         SourceFileName = SourceFile.split(".")[0]
  122.         print("Analysing " + SourceFile)
  123.  
  124.         Source = INPUT_FOLDER+"\\"+SourceFile
  125.  
  126.         if not path.exists("Result\\"+SourceFileName):
  127.             os.mkdir("Result\\"+SourceFileName)
  128.  
  129.        
  130.         ExFilenames = []
  131.         ExTriggers = []
  132.         ExTimings = []
  133.         ExMaxVal = []
  134.  
  135.         executor = concurrent.futures.ThreadPoolExecutor(25)
  136.         #def Try_Sample(j, DB_Files, DATABASE_FOLDER, Source, DataFrame, DIVISOR):
  137.         futures = [executor.submit(Try_Sample, j, DB_Files, DATABASE_FOLDER, Source, ExFilenames, ExTriggers, ExTimings, ExMaxVal) for j in range(len(DB_Files))]
  138.         concurrent.futures.wait(futures)
  139.  
  140.         #DataFrame = pd.DataFrame({ExFilenames, ExTriggers, ExTimings, ExMaxVal} ,columns=["Filename", "Trigger", "Timings", "MaxVal"])
  141.  
  142.         #print(Result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement