webrtc 3

화자 분리(Speaker Diarization) 설계: STT와는 다른 문제

회의록 제품에서 가장 자주 오해되는 지점 하나는, "음성 인식만 좋으면 화자 구분도 자연스럽게 따라온다"는 가정입니다.실제로는 그렇지 않습니다. 무엇을 말했는지를 맞히는 문제와 누가 언제 말했는지를 맞히는 문제는 같은 원음에서 출발할 수 있지만, 최적화 목표·출력·평가 지표가 다르며 대개 별도 모듈로 구현되고, 다른 방식으로 실패합니다. 두 결과를 하나의 자막으로 합치려면 별도의 정렬(alignment) 단계까지 필요합니다.이 글은 실시간 STT를 이미 갖춘 시스템에 화자 정보를 붙일 때, 화자 분리(Speaker Diarization)를 하나의 독립된 설계 대상으로 다루는 방법을 정리합니다. 그리고 순수 diarization에 그치지 않고, 익명 화자 라벨을 실제 참석자에 연결하는 화자 귀속(attri..

실시간 STT 설계: 48kHz 리샘플링, Partial·Final 자막과 환각 억제

실시간 STT 설계: 48kHz 리샘플링, Partial·Final 자막과 환각 억제파일 하나를 끝까지 받은 뒤 처리하는 STT(Speech-to-Text, 음성 인식)는 입력 형식을 정규화하고 모델을 한 번 실행하면 됩니다.실시간 STT는 다릅니다.브라우저와 장치마다 실제 Sample Rate(샘플링 레이트)가 다를 수 있습니다.작은 Audio Block(오디오 블록)을 끊김 없이 모아야 합니다.네트워크가 밀리면 오래된 음성이 쌓입니다.아직 말이 끝나지 않은 문장은 계속 바뀝니다.침묵과 배경음에서 그럴듯한 문장이 생성될 수 있습니다.연결이 재시작되면 중복 자막과 시간 역행이 발생할 수 있습니다.따라서 실시간 자막 품질은 모델 정확도만으로 결정되지 않습니다. 입력 Audio Contract(오디오 계약)..

브라우저 WebRTC가 연결되지 않을 때: ICE, mDNS, NAT와 TURN 진단 순서

브라우저 WebRTC가 연결되지 않을 때: ICE, mDNS, NAT와 TURN 진단 순서개발 환경에서는 잘 되던 WebRTC가 사내망, 고객사망 또는 모바일 네트워크에서 갑자기 연결되지 않는 경우가 있습니다. 이때 콘솔에서 .local 주소를 발견하고 mDNS를 의심하거나, 곧바로 TURN 서버부터 추가하기 쉽습니다.하지만 WebRTC 연결은 하나의 요청으로 완성되지 않습니다. 미디어 장치 권한, 시그널링, ICE Candidate 수집과 교환, 후보 쌍 연결성 검사, DTLS와 SRTP, 실제 RTP 전송이 차례로 이어집니다. 앞 단계가 실패했는데 뒤 단계 설정을 바꾸면 원인을 더 찾기 어려워집니다.브라우저에서 Media Server로 음성을 전송하는 구조를 단순화하면 다음과 같습니다.Browser ..