czyoung commited on
Commit
4160e19
·
verified ·
1 Parent(s): 12b68bc

Update annotationToNoiseList algorithm

Browse files
Files changed (1) hide show
  1. sonogram.py +22 -7
sonogram.py CHANGED
@@ -276,7 +276,7 @@ class Sonogram():
276
  # For each timestep in current segment, check current speaker against previous speaker
277
  for i in range(startI,endI+1):
278
  # No active speaker yet, so apply self
279
- if speakerAtStep[i] == None:
280
  speakerAtStep[i] = label
281
  # If active speaker exists, check against hierarchy
282
  else:
@@ -342,7 +342,7 @@ class Sonogram():
342
  if sas[j] is not None:
343
  memberSet.add(sas[i])
344
  # Increase silence score if no speaker
345
- if sas[j] == None:
346
  silenceCount += 1
347
  # Increase group score for known group IDs
348
  elif sas[j] == 'group' or sas[j] == 99:
@@ -372,15 +372,30 @@ class Sonogram():
372
 
373
  # Iterate over aggregate scores for each window
374
  for i,item in enumerate(timeStepAggregate):
375
- # Final classification is highest aggregate score
376
- cat = max(item, key=item.get)
 
 
 
 
 
 
 
377
  timeStepClass.append(cat)
 
378
  # For group decisions, members include all in window
379
  if cat == 'group':
380
  timeStepMembers[i] = '+'.join(timeStepMembers[i])
381
  # Assume current speaker is the "individual" voice during window
382
  elif cat == 'individual':
383
- timeStepMembers[i] = sas[i]
 
 
 
 
 
 
 
384
  # Remove all members if silence
385
  else:
386
  timeStepMembers[i] = None
@@ -415,7 +430,7 @@ class Sonogram():
415
  if start+duration > endTime:
416
  endTime = start+duration
417
  start = None
418
- currMembers == None
419
  duration = 0
420
  tracking = False
421
  start = timeIncrement
@@ -431,7 +446,7 @@ class Sonogram():
431
  if start+duration > endTime:
432
  endTime = start+duration
433
  start = None
434
- currMembers == None
435
  duration = 0
436
  tracking = False
437
  # Exit case, if still tracking then generate final Segment
 
276
  # For each timestep in current segment, check current speaker against previous speaker
277
  for i in range(startI,endI+1):
278
  # No active speaker yet, so apply self
279
+ if speakerAtStep[i] is None:
280
  speakerAtStep[i] = label
281
  # If active speaker exists, check against hierarchy
282
  else:
 
342
  if sas[j] is not None:
343
  memberSet.add(sas[i])
344
  # Increase silence score if no speaker
345
+ if sas[j] is None:
346
  silenceCount += 1
347
  # Increase group score for known group IDs
348
  elif sas[j] == 'group' or sas[j] == 99:
 
372
 
373
  # Iterate over aggregate scores for each window
374
  for i,item in enumerate(timeStepAggregate):
375
+ cat = None
376
+ # Shortcut areas known to be group or silence, as these are more definite
377
+ if sas[i] == 'group':
378
+ cat = 'group'
379
+ elif sas[i] is None:
380
+ cat = 'silence'
381
+ else:
382
+ # Final classification is highest aggregate score
383
+ cat = max(item, key=item.get)
384
  timeStepClass.append(cat)
385
+
386
  # For group decisions, members include all in window
387
  if cat == 'group':
388
  timeStepMembers[i] = '+'.join(timeStepMembers[i])
389
  # Assume current speaker is the "individual" voice during window
390
  elif cat == 'individual':
391
+ # Individual is first one seen
392
+ firstIndividual = sas[i]
393
+ firstIndividualIndex = i
394
+ # If none currently (at/near end of silence) then find first individual instead
395
+ while firstIndividual is None or firstIndividual == 'group':
396
+ firstIndividual = firstIndividual[firstIndividualIndex+1]
397
+ firstIndividualIndex += 1
398
+ timeStepMembers[i] = firstIndividual
399
  # Remove all members if silence
400
  else:
401
  timeStepMembers[i] = None
 
430
  if start+duration > endTime:
431
  endTime = start+duration
432
  start = None
433
+ currMembers is None
434
  duration = 0
435
  tracking = False
436
  start = timeIncrement
 
446
  if start+duration > endTime:
447
  endTime = start+duration
448
  start = None
449
+ currMembers is None
450
  duration = 0
451
  tracking = False
452
  # Exit case, if still tracking then generate final Segment