화자 다이어라이제이션
개요
화자 다이어라이제이션이란
화자 다이어라이제이션(Speaker Diarization)은 여러 사람이 말하는 음성에서 "어느 부분을 누가 말하고 있는지"를 추정하는 기능입니다. 예를 들어, 여러 사람이 참여하는 회의를 한 대의 마이크로 녹음했을 때, 발언마다 화자를 구분하는 데 도움이 됩니다.
다음 그림은 다나카 씨와 야마다 씨가 회의에서 대화하는 모습을 하나의 마이크로 녹음한 예시입니다. 이 음성에는 두 사람의 발언이 하나의 트랙에 기록되어 있습니다.
AmiVoice API의 화자 다이어라이제이션 기능을 사용하면, 아래 그림과 같이 "이 구간은 '스피커0'의 발언", "이 구간은 다른 화자인 '스피커1'의 발언"과 같이 각 발언을 화자별로 구분할 수 있습니다.
이 기능은 개인을 특정하는 것이 아닙니다. 따라서 "스피커0"이 야마다 씨에 해당하고, "스피커1"이 다나카 씨에 해당한다는 점은 애플리케이션 측에서 처리해야 합니다.
API에 대해
화자 다이어라이제이션을 사용하려면 음성 인식 요청 시 옵션 파라미터를 지정합니다. 화자 다이어라이제이션의 결과는 단어 단위로 얻을 수 있습니다. 음성 인식 응답 내의 단어 단위 결과에 label이 추가되어 "speaker0"나 "speaker1"과 같은 화자를 구분하기 위한 라벨이 설정됩니다.
화자 다이어라이제이션 결과의 예:
"tokens": [
{
"written": "アドバンスト・メディア",
"confidence": 1,
"starttime": 522,
"endtime": 1578,
"spoken": "あどばんすとめでぃあ",
"label": "speaker0"
},
{
"written": "は",
"confidence": 1,
"starttime": 1578,
"endtime": 1834,
"spoken": "は",
"label": "speaker0"
},
{
"written": "、",
"confidence": 0.95,
"starttime": 1834,
"endtime": 2010,
"spoken": "_",
"label": "speaker0"
},
/* 이하 생략 */
사용 방법
화자 다이어라이제이션을 사용하려면 음성 인식 요청 시 다음 표에 있는 요청 파라미터를 설정합니다.
표. 화자 다이어라이제이션의 요청 파라미터
| 인터페이스 | 활성화를 위한 파라미터 | 조정을 위한 파라미터 |
|---|---|---|
| 동기 HTTP / WebSocket | segmenterProperties에 useDiarizer=1 설정 | segmenterProperties의 diarizerTransitionBias, diarizerAlpha |
| 비동기 HTTP | speakerDiarization=True 설정 | diarizationMinSpeaker, diarizationMaxSpeaker |
요청 시 지정하는 옵션 파라미터는 인터페이스에 따라 다르므로 주의해 주십시오. 얻을 수 있는 결과는 인터페이스와 관계없이 동일한 형식입니다.
요청 파라미터가 다른 이유는 동기 HTTP나 WebSocket 인터페이스와 비동기 HTTP 인터페이스에서 화자 다이어라이제이션의 방식이 다르기 때문입니다. 동기 HTTP나 WebSocket 인터페이스에서는 음성 스트림에 대해 발화 구간을 검출할 때 화자 다이어라이제이션을 수행합니다. 따라서 발화 구간 검출 파라미터인 segmenterProperties에 대한 설정을 합니다.
반면 비동기 HTTP 인터페이스의 경우 음성 파일 전체가 수중에 있는 상태에서 화자 다이어라이제이션을 수행합니다. 설정은 비동기 HTTP 고유의 파라미터로 수행합니다.
이 섹션에서는 먼저 화자 다이어라이제이션을 활성화하는 방법을 인터페이스별로 설명하고, 그 후 정확도를 개선하기 위한 파라미터에 대해 설명합니다.
요청
화자 다이어라이제이션을 활성화하여 요청하는 방법을 인터페이스별로 설명합니다.
동기 HTTP 인터페이스
화자 다이어라이제이션을 활성화하려면 segmenterProperties에 useDiarizer=1을 설정합니다. 동기 HTTP에서는 segmenterProperties를 요청 파라미터의 d 파라미터에 설정합니다.
예를 들어 설명하겠습니다. 화자 다이어라이제이션을 사용하지 않을 경우, AmiVoice API의 샘플 프로그램에 동봉된 음성을 curl 명령을 사용하여 범용 엔진으로 음성 인식할 때는 다음과 같이 명령을 실행합니다.
curl https://acp-api.amivoice.com/v1/recognize \
-F u={APP_KEY} \
-F d="grammarFileNames=-a-general" \
-F a=@test.wav
화자 다이어라이제이션을 활성화하려면 다음과 같이 합니다.
curl https://acp-api.amivoice.com/v1/recognize \
-F u={APP_KEY} \
-F d="grammarFileNames=-a-general segmenterProperties=useDiarizer=1" \
-F a=@test.wav
이때 파라미터의 순서는 중요하지 않습니다. 또한 다른 파라미터도 함께 설정할 수 있습니다. 동기 HTTP 인터페이스의 요청 방법에 대한 자세한 내용은 음성 인식 요청 보내기를 참조하십시오.
WebSocket 인터페이스
화자 다이어라이제이션을 활성화하려면 segmenterProperties에 useDiarizer=1을 설정합니다. WebSocket 인터페이스에서는 segmenterProperties를 WebSocket으로 연결한 후 처음에 전송하는 s 명령에 설정합니다.
예 를 들어 설명하겠습니다. 화자 다이어라이제이션을 사용하지 않을 경우, 범용 엔진으로 음성 인식하려면 다음과 같이 요청합니다.
s 16K -a-general authorization={APPKEY}
화자 다이어라이제이션을 활성화하려면 다음과 같이 파라미터를 추가합니다.
s 16K -a-general authorization={APPKEY} segmenterProperties=useDiarizer=1
s 명령은 음성 형식, 엔진 이름을 반드시 설정해야 하지만, 그 뒤에 따르는 파라미터의 순서는 변경해도 상관없습니다. 또한 다른 파라미터도 함께 설정할 수 있습니다. WebSocket 인터페이스를 사용한 요청 방법에 대해서는 인식 요청 시작을 참조하십시오.
비동기 HTTP 인터페이스
화자 다이어라이제이션을 활성화하려면 요청 파라미터의 d 파라미터에 speakerDiarization=True를 추가합니다.
예를 들어 설명하겠습니다. 화자 다이어라이제이션을 사용하지 않는 경우, AmiVoice API의 샘플 프로그램에 포함된 음성을 curl 명령을 사용하여 범용 엔진으로 음성 인식하는 경우 다음과 같이 명령을 실행합니다.
curl https://acp-api-async.amivoice.com/v2/recognitions \
-F u={APP_KEY} \
-F d="grammarFileNames=-a-general" \
-F a=@test.wav
화자 다이어라이제이션을 활성화하려면 다음과 같이 합니다.
curl https://acp-api-async.amivoice.com/v2/recognitions \
-F u={APP_KEY} \
-F d="grammarFileNames=-a-general speakerDiarization=True" \
-F a=@test.wav