23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
음성 전처리가 원할히 동작하기 위한 Audio Path의 구성을 설명드리겠습니다.
여기에서 다룰 Audio Path는 음성 인식을 위한 전처리 과정에 필요한 Recording 관점의 Audio Path가 됩니다.
간단하게 일반적으로 App에서 Recording을 수행하면 H/W의 mic로부터 들어온 데이터가 App에 전달되는 것입니다.
그런데 Application에서 Audio Playback과 동시에 Record를 수행하게 되면 다음 그림과 같이 Playback 소리도 Mic로 입력되게 됩니다.
이렇게 되면 Application 스스로 출력한 소리가 다시 Mic에 Recording 되어 어떤 소리가 진짜로 외부의 소리가 Recording된 것인지 구분이 불가능해지며,
이를 Echo 상황이라고 합니다.
이러한 Echo 상황을 피하기 위해 Echo cancellation이 필요하게 되었고 잘 동작하기 위해 SW Audio Path 구성이 필요해졌습니다.
그렇다면 Echo Cancellation 기능이 잘 동작하기 위한 조건을 살펴보겠습니다.
우선 SPK로 출력된 소리는 공중으로 퍼진 후 MIC에 들어오게 되기까지 시간이 걸립니다. 비록 사람이 알아채기 어려울 정도로 짧기는 합니다.
그럼 조금 더 자세히 살펴보겠습니다.
Echo Cancellation을 하기 위해서는 MIC의 입력값에서 SPK을 출력값을 일정한 간격에 맞춰서 제거해줘야 합니다.
이 간격을 가장 잘 측정할 수 있는 부분은 Hardware 부분입니다.
가장 물리적이고 가장 바깥에 있는 영역으로 이 간격을 일정하게 제거할 수 있습니다. 이 부분은 곧 H/W 전처리 칩이 됩니다.
Echo Cancellation 측면에서 어떻게 제거하는 지에 대한 알고리즘을 빼면 이 곳이 delay를 가장 명확하게 판단할 수 있습니다.
그리고 HW Echo Canncellation을 사용할 수 없는 상황이라면 SW Echo Cancellation을 해야하며 위 그림 중 어느 곳에서 처리할 지를 고민해야 합니다.
보통 App Layer로 갈 수록 Delay를 측정하기 어려워집니다.
위 그림은 pulse audio의 echo cancellation의 동작을 도식으로 표현한 그림입니다.
이전 그림 기준으로는 framework 부분에 해당됩니다.
App Layer에서 수행하는 것보다는 좋지만 이곳에서의 문제는 mic에서 spk로의 delay를 측정하기 어렵다는 문제가 있습니다.
각 박스마다 buffer가 있고, playback과 record는 각각 다른 thread 또는 다른 process에서 동작합니다.
그렇기 때문에 이 시점에 가지고 있는 buffer의 audio data가 speaker에 언제 출력될지 예측하기 힘들고 또 mic를 통해 들어온 audio data가 언제쯤 application에 전달될지 예측하기 힘듭니다.
물론 이를 예측하기 위해 남은 buffer가 언제쯤 나갈지 예측하는 계산을 추가로 하거나 timestamp를 비교하여 서로 sync하기 위해 노력을 하기는 합니다.
SKT AI 음성인식 전처리는 대부분 App layer에서 진행됩니다. 위에서 말씀드려왔던 delay를 가장 측정하기 어려운 곳입니다.
이 이슈를 극복하기 위해 SKT 전처리를 탑재하는 device를 제조하는 제조사에게 요구 사항이 전달됩니다.
여기에서의 제조사는 framework과 hw를 개발하는 제조사입니다.
위 그림과 같이 SKT 전처리를 위해서는 Framework과 App layer에서 여러 요인들도 delay가 예측불가능한 부분을 최소한으로 하고자
KERNEL Layer 부터 전처리 동작 시점에는 MIC data와 SPK data를 병합하여 보내기를 요구하고 있습니다.
일반적인 Recording시의 Audio data는 mic data 뿐이었지만 요구사항으로 작성된 상태에서는 Recording의 Audio data가 mic/ref/mic/ref와 같이 전달되게 됩니다.
이렇게 함으로서 여러 thread 또는 process에서 비동기로 진행되어 발생하는 delay 계산의 어려움을 피하고 있습니다.
이상으로 SKT 전처리를 위한 Audio Path 의 중요성 및 어떻게 처리하고 있는 지에 대해 간략히 살펴보았습니다.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.