데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      음성 전처리를 위한 Audio Path의 중요성

      천둥과번개 24.12.12
      1,158 3 1
      DEVOTEE 요약
      음성 인식을 위한 전처리 과정에서는 Echo Cancellation이 중요하며, 이는 녹음 시에 마이크에 잡히는 소리와 스피커에서 나오는 소리 간의 딜레이를 정확하게 측정하고 제거하는 과정을 포함합니다. HW 전처리 칩들은 이러한 딜레이를 측정하고 제거하는 데 있어 가장 효율적이지만, 이를 사용할 수 없는 상황에서는 SW Echo Cancellation이 필요하며, SW에서는 딜레이 측정이 더 어려워지기 때문에 추가적인 계산이나 동기화가 필요합니다. SKT AI 음성인식 전처리는 주로 App Layer에서 수행되며, 이로 인해 제조사에게 MIC와 SPK 데이터를 KERNEL Layer부터 병합하여 전달하도록 요구하여 딜레이 계산의 어려움을 최소화하고 있습니다.

      음성 전처리가 원할히 동작하기 위한 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 의 중요성 및 어떻게 처리하고 있는 지에 대해 간략히 살펴보았습니다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      천둥과번개 님의 최신 블로그

      더보기
      동영상 기고하기