Browse Source

added compare.py

Martin Frébourg 2 years ago
parent
commit
65a6385203
1 changed files with 54 additions and 0 deletions
  1. 54 0
      code/compare.py

+ 54 - 0
code/compare.py

@@ -0,0 +1,54 @@
+import os
+from ChildProject.projects import ChildProject
+from ChildProject.annotations import AnnotationManager
+from ChildProject.metrics import segments_to_grid, conf_matrix, segments_to_annotation
+from pathlib import Path
+
+def compare_vandam(set1: str, set2: str) :
+
+    speakers = ['CHI', 'OCH', 'FEM', 'MAL']
+    project = ChildProject('vandam-data')
+    am = AnnotationManager(project)
+    am.read()
+
+    #get segments that intercept between two annotations
+    intersection = AnnotationManager.intersection(am.annotations, [set1, set2])
+
+    #retrieve contents
+    segments = am.get_collapsed_segments(intersection)
+    segments = segments[segments['speaker_type'].isin(speakers)]
+
+    set1_segm = segments_to_grid(segments[segments['set'] == set1], 0, segments['segment_offset'].max(), 100, 'speaker_type', speakers)
+    set2_segm = segments_to_grid(segments[segments['set'] == set2], 0, segments['segment_offset'].max(), 100, 'speaker_type', speakers)
+
+    print(set1_segm.shape)
+    print(set2_segm)
+
+    ref = segments_to_annotation(segments[segments['set'] == set1], 'speaker_type')
+    hyp = segments_to_annotation(segments[segments['set'] == set2], 'speaker_type')
+
+    if __name__ == '__main__':
+        from pyannote.metrics.detection import DetectionPrecisionRecallFMeasure
+        metric = DetectionPrecisionRecallFMeasure()
+
+        detail = metric.compute_components(ref, hyp)
+        precision, recall, f = metric.compute_metrics(detail)
+        
+        dirName = "outputs/compare/" + set1.replace("/","") + "-" + set2.replace("/","")
+
+        try:
+            # Create target Directory
+            Path(dirName).mkdir(parents= True)
+            print("Directory " , dirName ,  " Created ") 
+        except FileExistsError:
+            print("Directory " , dirName ,  " already exists")
+
+        file= open("{0}/{1}-{2}.txt".format(dirName, set1.replace("/",""), set2.replace("/","")),"w+")
+       # metric_output = str(f'{precision:.2f}/{recall:.2f}/{f:.2f}')
+        metric_output = "precision: {0}/recall : {1}/ f: {2}".format(precision, recall, f)
+        file.write(metric_output)
+        file.close
+        print("Metrics [precision & recall & f] saved!")
+
+compare_vandam('cha','eaf')
+compare_vandam('cha', 'cha/aligned')