발화 검출
발화 구간이란 음성 데이터 중에서 사람이 말하는 부분을 가리킵니다. 음성 데이터에는 사람의 목소리와 그 외의 부분, 예를 들어 무음이나 배경 노이즈 등이 포함되어 있습니다. 음성 인식을 하기 전에 발화 구간을 검출하고 발화 구간만을 대상으로 처리합니다. 이는 불필요한 음성 구간을 무시함으로써 계산량을 줄이고 잘못된 음성으로 인식되는 것을 방지하기 위함입니다. AmiVoice API에서는 심층 학습 모델을 사용하여 사람의 목소리와 그 외를 구별하며, 단순히 음량만을 사용한 발화 검출보다 더 높은 정확도로 발화를 검출합니다.
다음 그림은 클라이언트에서 AmiVoice API로 음성 데이터가 전송될 때의 흐름을 보여줍니다. 먼저 발화 검출이 이루어지고, 그 후 음성 인식 처리가 이루어집니다. 그림에서 보라색 띠가 발화 구간을 나타냅니다. 3개의 발화 구간이 검출되어 각각에 대해 음성 인식 처리를 수행합니다.
비동기 HTTP 인터페이스와 WebSocket 인터페이스는 발화 구간별로 시간 정보와 음성 인식 결과, 신뢰도를 얻을 수 있습니다. 자세한 내용은 발화 구간의 결과를 참조하십시오. 또한, WebSocket 인터페이스에서는 발화의 시작과 종료 타이밍을 실시간으로 취득할 수 있습니다. 자세한 내용은 상태 이벤트 획득을 참조하십시오.
동기 HTTP 인터페이스에서는 발화 구간의 결과를 취득할 수 없습니다.
발화 검출 파라미터 조정
발화 검출 파라미터는 사용 상황에 맞게 조정할 수 있습니다. 기본값은 AmiVoice API의 많은 사용 상황에 적합한 값으로 설정되어 있으므로, 우선 기본 설정 그대로 음성 인식을 시도하여 상황을 살펴보고 필요한 경우에만 파라미터를 조정하십시오. 구술 필기나 회의 녹취 등의 애플리케이션에서는 대부분의 경우 변경이 필요하지 않습니다. 콜센터의 IVR이나 로봇과의 대화 등의 애플리케이션에서는 감도나 발화 종료 검출 시간 등 특정 파라미터의 변경이 필요할 수 있습니다. 조정 가능한 파라미터의 자세한 내용과 설정 방법은 segmenterProperties를 참조하십시오.
다음은 매개변수 조정의 예시입니다.
목소리가 매우 작은 경우
powerThreshold 값을 작게 하면 작은 음량에서도 검출되기 쉬워집니다.
segmenterProperties="powerThreshold=0"
BGM이나 대기음, 비정상 노이즈 등이 많은 경우
노이즈가 매우 많은 상황에서는 사람의 목소리가 포함되지 않은 노이즈를 잘못하여 사람의 목소리로 검출할 수 있습니다. 이 경우, threshold 값을 크게 하면 발화 검출의 감도가 낮아져 노이즈의 오검출을 줄일 수 있습니다.
반면, 너무 큰 값으로 설정하면 발화 검출 누락으로 이어질 수 있습니다.
segmenterProperties="threshold=9000"
예/아니오 등 짧은 발화의 응답을 빠르게 하고 싶은 경우
기본적으로, 발화 종료로 판단하기 위해서는 발화가 끝난 후 postTime에 설정된 550 ms의 무음이 계속될 때까지 기다립니다. 예/아니오 등 짧은 발화에 대해서는 대부분의 경우 너무 길기 때문에, 250~300 ms 정도로 줄이면 음성 인식 결과를 얻는 데까지의 시간을 단축하고 더 실시간적인 상호작용이 가능해집니다.
반면, 너무 짧으면 발화 중간에도 종료되어 버릴 수 있으므로 일반적으로는 변경할 필요가 없습니다.
segmenterProperties="postTime=250"