pyannot-audio 를 사용해 보면서 생기는 의문점들에 대해 정리하는 곳이다.
1. overlap은 따로 플래그가 존재하지 않는 것 같다.
diarization.for_json() 에서 나오는 track 이라는 플래그는 화자를 구분하기 위한 플래그 인 듯 하다.
diarization.for_json()
{'pyannote': 'Annotation',
'content': [{'segment': {'start': 10.9603125, 'end': 21.1021875},
'track': 'A',
'label': 'SPEAKER_00'},
{'segment': {'start': 31.665937500000002, 'end': 37.690312500000005},
'track': 'B',
'label': 'SPEAKER_00'},
.
.
.
{'segment': {'start': 155.44406250000003, 'end': 159.0046875},
'track': 'G',
'label': 'SPEAKER_00'},
{'segment': {'start': 158.17781250000002, 'end': 161.48531250000002},
'track': 'AA',
'label': 'SPEAKER_01'},
.
.
.
],
'uri': '1_10039'}
diarization.get_overlap().for_json()
{'pyannote': 'Timeline',
'content': [{'start': 51.56156250000001, 'end': 51.78093750000001},
{'start': 158.17781250000002, 'end': 159.0046875},
{'start': 192.53531250000003, 'end': 192.5859375},
{'start': 197.49656249999998, 'end': 197.6821875},
{'start': 205.1746875, 'end': 205.19156250000003},
{'start': 284.3859375, 'end': 284.6728125}],
'uri': '1_10039'}
위의 overlap json 에서 {'start': 158.17781250000002, 'end': 159.0046875}
부분을diarization.for_json
start 와 end 가 일치하는 것을 찾을수가 없다.
하지만 'start': 158.17781250000002 와 'end': 159.0046875 의 값은 아래처럼 존재하긴 한다.
{'segment': {'start': 155.44406250000003, 'end': 159.0046875},
'track': 'G',
'label': 'SPEAKER_00'},
{'segment': {'start': 158.17781250000002, 'end': 161.48531250000002},
'track': 'AA',
'label': 'SPEAKER_01'},
overlay 의 제거가 용이하지 않았던 이유는 위와 같은 이유인 듯 하다.
2. track 의 의미
track 프로퍼티는 지금까지 테스트 해 본 결과 화자의 각 순서와 연관이 있었다.
SPEAKER_00, SPEAKER_01 이 존재한다고 가정하면
SPEAKER_00 의 발화 순서가 A, B, C ... AE 라고 하면
SPEAKER_01 의 발화 순서가 AF, AG, AH ... BZ 형태로 나오게 된다.
{'pyannote': 'Annotation',
'content': [{'segment': {'start': 10.9603125, 'end': 21.1021875},
'track': 'A',
'label': 'SPEAKER_00'},
{'segment': {'start': 31.665937500000002, 'end': 37.690312500000005},
'track': 'B',
'label': 'SPEAKER_00'},
{'segment': {'start': 50.144062500000004, 'end': 51.9665625},
'track': 'O',
'label': 'SPEAKER_01'},
{'segment': {'start': 51.56156250000001, 'end': 51.78093750000001},
'track': 'C',
'label': 'SPEAKER_00'},
{'segment': {'start': 52.7934375, 'end': 53.97468750000001},
'track': 'P',
'label': 'SPEAKER_01'},
{'segment': {'start': 53.97468750000001, 'end': 59.57718750000001},
'track': 'D',
'label': 'SPEAKER_00'},
{'segment': {'start': 59.948437500000004, 'end': 60.21843750000001},
'track': 'Q',
'label': 'SPEAKER_01'},
{'segment': {'start': 60.85968750000001, 'end': 63.79593750000001},
'track': 'R',
'label': 'SPEAKER_01'},
{'segment': {'start': 68.2340625, 'end': 69.3309375},
'track': 'S',
'label': 'SPEAKER_01'},
{'segment': {'start': 71.3221875, 'end': 76.8065625},
'track': 'T',
'label': 'SPEAKER_01'},
{'segment': {'start': 81.2278125, 'end': 85.0921875},
'track': 'U',
'label': 'SPEAKER_01'},
{'segment': {'start': 91.6565625, 'end': 94.0528125},
'track': 'V',
'label': 'SPEAKER_01'},
{'segment': {'start': 94.1540625, 'end': 100.6509375},
'track': 'E',
'label': 'SPEAKER_00'},
{'segment': {'start': 101.56218750000001, 'end': 106.82718750000001},
'track': 'W',
'label': 'SPEAKER_01'},
{'segment': {'start': 112.4971875, 'end': 117.77906250000001},
'track': 'X',
'label': 'SPEAKER_01'},
{'segment': {'start': 121.7278125, 'end': 122.0990625},
'track': 'Y',
'label': 'SPEAKER_01'},
{'segment': {'start': 137.30343750000003, 'end': 143.10843749999998},
'track': 'F',
'label': 'SPEAKER_00'},
{'segment': {'start': 144.44156250000003, 'end': 145.99406249999998},
'track': 'Z',
'label': 'SPEAKER_01'},
{'segment': {'start': 155.44406250000003, 'end': 159.0046875},
'track': 'G',
'label': 'SPEAKER_00'},
{'segment': {'start': 158.17781250000002, 'end': 161.48531250000002},
'track': 'AA',
'label': 'SPEAKER_01'},
{'segment': {'start': 169.1296875, 'end': 177.24656249999998},
'track': 'H',
'label': 'SPEAKER_00'},
{'segment': {'start': 181.5834375, 'end': 187.0340625},
'track': 'AB',
'label': 'SPEAKER_01'},
{'segment': {'start': 188.7553125, 'end': 189.61593750000003},
'track': 'AC',
'label': 'SPEAKER_01'},
{'segment': {'start': 190.94906250000003, 'end': 193.93593750000002},
'track': 'AD',
'label': 'SPEAKER_01'},
{'segment': {'start': 192.53531250000003, 'end': 192.5859375},
'track': 'I',
'label': 'SPEAKER_00'},
{'segment': {'start': 194.96531249999998, 'end': 195.84281249999998},
'track': 'AE',
'label': 'SPEAKER_01'},
{'segment': {'start': 197.10843749999998, 'end': 198.6609375},
'track': 'AF',
'label': 'SPEAKER_01'},
{'segment': {'start': 197.49656249999998, 'end': 197.6821875},
'track': 'J',
'label': 'SPEAKER_00'},
{'segment': {'start': 199.3696875, 'end': 201.39468750000003},
'track': 'AG',
'label': 'SPEAKER_01'},
{'segment': {'start': 204.09468750000002, 'end': 206.3390625},
'track': 'AH',
'label': 'SPEAKER_01'},
{'segment': {'start': 205.1746875, 'end': 205.19156250000003},
'track': 'K',
'label': 'SPEAKER_00'},
{'segment': {'start': 215.8565625, 'end': 221.1721875},
'track': 'L',
'label': 'SPEAKER_00'},
{'segment': {'start': 222.5390625, 'end': 225.05343750000003},
'track': 'AI',
'label': 'SPEAKER_01'},
{'segment': {'start': 227.8040625, 'end': 229.7446875},
'track': 'AJ',
'label': 'SPEAKER_01'},
{'segment': {'start': 231.4659375, 'end': 232.74843750000002},
'track': 'AK',
'label': 'SPEAKER_01'},
{'segment': {'start': 234.6721875, 'end': 236.3596875},
'track': 'AL',
'label': 'SPEAKER_01'},
{'segment': {'start': 237.57468750000004, 'end': 240.8146875},
'track': 'AM',
'label': 'SPEAKER_01'},
{'segment': {'start': 245.9615625, 'end': 248.4928125},
'track': 'AN',
'label': 'SPEAKER_01'},
{'segment': {'start': 251.80031250000002, 'end': 255.25968749999998},
'track': 'AO',
'label': 'SPEAKER_01'},
{'segment': {'start': 262.0603125, 'end': 262.9040625},
'track': 'M',
'label': 'SPEAKER_00'},
{'segment': {'start': 262.92093750000004, 'end': 268.2534375},
'track': 'AP',
'label': 'SPEAKER_01'},
{'segment': {'start': 269.0971875, 'end': 270.3290625},
'track': 'AQ',
'label': 'SPEAKER_01'},
{'segment': {'start': 270.9534375, 'end': 275.61093750000003},
'track': 'AR',
'label': 'SPEAKER_01'},
{'segment': {'start': 277.6359375, 'end': 282.0234375},
'track': 'AS',
'label': 'SPEAKER_01'},
{'segment': {'start': 282.96843750000005, 'end': 284.6728125},
'track': 'AT',
'label': 'SPEAKER_01'},
{'segment': {'start': 284.3859375, 'end': 286.4615625},
'track': 'N',
'label': 'SPEAKER_00'}],
'uri': '1_10039'}
정리하자면 아래와 같다.
1. pyannote-audio 의 speaker-diarization 은 애초에 overlap 을 고려하지 않는다.
2. pyannote-audio 의 detect-overlap 메소드에서 overlap 에 대한 부분을 따로 추출하는 듯 하다.
--> 즉 diarization 에서 overlap segment 를 포함하는 것이 아니라 애초에 화자 분리 이후에 overlap 을 계산하는 것 같다.
아직 이 부분이 명확하지 않아서 조금 더 찾아보고 글을 수정해야 할 것 같다.
'Deep Learning > NLP, ASR' 카테고리의 다른 글
[NLP / ASR] 오디오 데이터 전처리 관련 공부용 BLOG / 자료 link (0) | 2023.01.25 |
---|---|
[NLP / ASR] pyannote-audio 초기설치 / 설정 / dirazation 코드 실행 (0) | 2023.01.12 |
[NLP / ASR] openai whisper transcribe 설치 및 사용법 (0) | 2023.01.06 |