ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 음향학 이야기: 능동 소음 제어(active noise control, ANC) 알고리즘 (filtered-x least mean square, FxLMS)
    오피쓴의 음향학라이프/음향학 이야기 2021. 5. 22. 02:15

     

    이전 글에서 능동 소음 제어(active noise control, 이하 ANC)에 관한 배경과 중첩의 원리에 대해 알아보았습니다.

     

    아직 안 보셨다면, 아래에 링크를 드리오니 간단히 보고 오시는 것을 추천드립니다.

     

     

    음향학 이야기: 능동 소음 제어(Active Noise Control, ANC) 개요

    최근 갤럭시 버즈 프로(Galaxy Buds Pro), 에어팟 프로(Airpods pro) 등 대중화된 무선 이어폰에 능동 소음 제어(Active Noise Control, 이하 ANC) 기술이 탑재되면서, ANC는 대중들에게 익숙한 기술이 되었습니..

    opee.tistory.com

     

    이번 글에서는 ANC를 실제로 구현하기 위한 알고리즘에 대해 말씀드리려 합니다.

     

    이어폰, 자동차 등 ANC가 탑재된 제품 대부분은 오늘 소개해드리는 알고리즘을 사용합니다.

     

    내용이 많으니, 어서 시작하겠습니다.

    (약간 음향학 매운맛입니다.)


    능동 소음 제어(ANC) 시스템 개요도

    먼저, ANC 시스템의 전체 구성을 알아보겠습니다.

     

    위 그림은 가장 단순한 형태인 1차원 도관에서의 ANC 시스템 개요도를 나타낸 것입니다.

     

    2개의 스피커와 2개의 마이크로폰, 그리고 하나의 electronic controller가 설치되어 있습니다.

     

    하나씩 알아보겠습니다.

     

    Noise speaker는 말 그대로 소음을 발생시키는 스피커입니다.

     

    ANC의 목표는 nosie speaker가 발생시키는 소리를 제어하는 것입니다.

     

    Cancelling speaker는 소음 제어를 위한 소리를 발생시키는 스피커입니다.

     

    Reference microphone(이하 ref mic)는 제어하고자 하는 소음을 미리 측정하는 마이크로폰입니다.

     

    소음 제어를 위해서는 ref mic가 가장 앞단에 설치되어, 소음 정보를 미리 알아내야 합니다.

    (추가적으로 말씀드리자면, reference signal은 진동, 전기 신호 등 소음에 대한 정보만 갖고 있다면 무엇이든 상관없습니다.)

     

    Error microphone(이하 err mic)는 소음 제어 결과를 측정하는 마이크로폰입니다.

     

    따라서, err mic가 설치된 곳이 소음을 제어하고자 하는 목표 지점이 됩니다.

     

    Electronic controller는 각 마이크로폰의 측정값을 입력받아, 알고리즘을 통해 소음 제어를 위한 적절한 신호를 만들어 cancelling speaker에 입력합니다.

     

    Electronic controller는 컴퓨터, DAQ 등으로 이루어져 있습니다.

     

    정리하자면, ANC를 구현하기 위해서는 2개의 마이크로폰과 1개의 스피커가 필요합니다.

    (Noise speaker는 소음을 만들고자 하는 것으로, ANC의 기본 구성에 포함되지 않습니다.)

     

    2개의 마이크로폰으로부터 측정값을 받아 특정한 알고리즘을 통해 소음 제어를 위한 신호를 만듭니다.

     

    그리고 이를 cancelling speaker에 입력하여 소리를 제어합니다.

     

    소음 제어의 결과를 err mic를 통해 확인하고, 이를 다시 알고리즘에 입력하여 소음 제어를 위한 신호를 다시 만듭니다.

     

    계속 반복하여, 소음 제어의 효과를 극대화합니다.

    능동 소음 제어(ANC) 블록 다이어그램

    ANC 시스템의 전체 개요도가 이해되셨다면, 이제 electronic controller 속을 살펴보겠습니다.

     

    위 그림은 electronic controller를 명료하게 나타내기 위해 블록 다이어그램을 사용한 것입니다.

     

    x(n)은 ref mic가,  e(n)은 err mic가 측정한 신호입니다.

     

    d(n)은 ANC를 통해 제어되어야 하는 소음입니다.

    (제거 대상)

     

    W(z)는 adaptive filter(적응형 필터)로, 첫 번째 그림에 보이듯이 cancelling speaker에 입력할 y(n)을 만들어 줍니다.

     

    하지만, 블록 다이어그램 그림을 잘 보시면 이상한 것이 있습니다.

     

    Cancelling speaker에는 y(n)을 입력하지만, 실제로 소음 d(n)과 더해지는 것은 S(z)를 거친 c(n)입니다.

     

    그 이유는 y(n)은 단순히 스피커에 입력하는 전기 신호이지, 실제 소리가 아니기 때문입니다.

     

    S(z)로 나타나 있는 secondary-path transfer function은 cancelling speaker와 err mic 간의 거리, 스피커 및 컴퓨터와 같은 장비의 성능 등을 의미합니다.

     

    정리하자면, cancelling speaker에 y(n)을 입력하면 실제로 err mic에 측정되는 소리는 c(n)이 됩니다.

     

    c(n)과 소음 d(n)이 더해져 ANC 결과값으로 볼 수 있는 e(n)이 측정되고, 이를 다시 알고리즘에 입력 후 W(z)를 업데이트합니다.

     

    업데이트를 반복하여 W(z)를 잘 정의하고, ANC의 효과를 극대화합니다.

     

    그렇다면, W(z)를 어떻게 업데이트할까요?

     

    이것이 ANC 알고리즘의 핵심 filtered-x least mean square, FxLMS입니다.

     

    이제부터 약간의 수학적 기술을 통해, FxLMS을 알아보고 위 그림의 '???' 박스를 제대로 그려보겠습니다.

    능동 소음 제어(ANC) adaptive filter(적응형 필터)

    W(z) 업데이트 방법을 알기 위해서는 최소화하고자 하는 e(n)을 수학적으로 잘 정의해야 합니다.

     

    e(n)은 c(n)과 d(n)의 합으로 구해지기 때문에, c(n)을 잘 정의하면 자동적으로 e(n)이 정의될 것입니다.

     

    지금부터 x(n)이 W(z)와 S(z)를 거쳐 c(n)이 되는 것을 수학적으로 나타내겠습니다.

     

    단순합니다. 합성곱(convolution)을 이용하면 됩니다.

     

    위 그림은 x(n)이 W(z)를 거쳐 y(n)이 되는 것을 수학적으로 나타낸 것입니다.

     

    합성곱의 정의에 따라 위와 같이 나타내 주면 됩니다.

    (이때, W(z)의 길이는 M입니다.)

    능동 소음 제어(ANC) secondar path transfer function

    이제 y(n)이 S(z)를 거쳐 c(n)이 될 차례입니다.

     

    이 역시 위 그림에서 단계별로 잘 표현했습니다.

     

    먼저, y(n)이 c(n)이 되려면 S(z)와 합성곱을 수행해야 합니다.

     

    그런 뒤, y(n)을 앞서 구한대로 x(n)과 W(z)의 합성곱으로 나타내 줍니다.

     

    그리고 선형 시스템이기 때문에, W(z)와 S(z)의 순서로 바꿔줄 수 있습니다.

     

    그러면 마치 S(z)와 x(n)이 합성곱이 되는 것처럼 나타나 집니다.

     

    이를 x'(n)으로 정의하고, c(n)을 W(z)와 x'(n)의 합성곱으로 나타냅니다.

     

    이로써, c(n)이 수학적으로 정의되었습니다.

    능동 소음 제어(ANC) error signal

    잘 따라오고 계신가요?

     

    c(n)이 정의되었기 때문에, 간단히 e(n)을 정의할 수 있습니다.

     

    위 그림을 보시면 단순한 덧셈으로 e(n)이 정의되는 것을 알 수 있습니다.

     

    이때, 합성곱을 행렬로 나타낸 부분이 있습니다. 굵은 글씨는 행렬입니다.

     

    Adaptive filter는 W(n), W(n+1), W(n+2) 이런 식으로 업데이트됩니다.

     

    능동 소음 제어(ANC) 경사하강법(gradient descent)

     e(n)이 수학적으로 정의되었으니, 모든 준비가 끝났습니다.

     

    본격적으로 W(z)를 어떻게 업데이트할지 살펴보겠습니다.

     

    W(z)를 업데이트하는 기법은 머신러닝 등에서 흔히 사용되는 경사하강법(gradient descent)입니다.

     

    경사하강법은 최솟값을 찾기 위해서 단순히 기울기가 음수인 곳으로 이동하는 것입니다.

     

    자세한 설명은 제가 좋아하는 블로그 중 하나인 공돌이의 수학노트에 잘 나와 있습니다.

    (아래 링크드립니다. 개인적으로 많은 도움을 받고 있습니다.)

     

    먼저, 경사하강법을 e(n)에 적용하기 위해, 제곱하여 볼록한 산 모양으로 만들어 줍니다.

     

    그리고 e(n)^2과 W(z)를 위 그림에 나타나 있는 경사하강법 식에 넣어 줍니다.

     

    참 쉽죠?

     

    결과적으로 위 그림의 마지막 식을 보면 W(z)는 e(n)와 x'(n), 그리고 적당한 값의 step size의 곱을 빼줌으로써 업데이트됩니다.

     

     

    경사하강법(gradient descent) - 공돌이의 수학정리노트

     

    angeloyeo.github.io

    능동 소음 제어(ANC) FxLMS(filtered-x least mean square)

    앞서 알아낸 것들을 이용하여 블록 다이어그램을 다시 그려보겠습니다.

     

    W(z)의 업데이트를 위해서는 x'(n)이 필요하지만, 우리가 마이크로폰(ref mic)으로 측정하는 것은 x(n)입니다.

     

    따라서, x'(n)을 FxLMS에 입력하기 위해 secondary-path transfer function을 미리 측정하여 electronic controller 입력해두어야 합니다.

    (ANC가 실제 적용을 위해서 넘어야 하는 큰 고비입니다.)

     

    이러한 특징 때문에 filtered-x가 이름 앞에 붙습니다.

     

    오늘은 여기까지입니다.

     

    [참고문헌]

    1. E. Noh, S. Woo, D. J. Lee, M.-H. Song, J.-W. Lee, H. Lee, W.-S. Ohm, H. Jang, K. Lee, Y. Park, and Y. Seo, “Active control of low-frequency noise in bubbly water-filled pipes,” J. Mech. Sci. Technol. 33, 3127-­3135 (2019).

    2. S. M. Kuo and D. R. Morgan, Active noise control: A tuto- rial review, Proc. IEEE, 87 (6) (1999) 943-973.

     


    이번 글은 많이 힘들었습니다.

     

    논문을 볼 때보다 블로그를 할 때, 저의 능력 부족이 절실히 느껴집니다.

     

    중간중간 ANC에 관하여 더 깊숙이 알려드리고 싶은 부분이 많았으나, 글이 복잡해져 모두 지웠습니다.

     

    아쉬우니, ANC 관련하여 하나 더 써볼까 계획 중입니다.

    (미루다 안 하겠죠)

     

    아! 참고로 저는 ANC 코드를 LabVIEW에 기반하여 작성했고, 첫 번째 그림과 같은 시스템을 성공적으로 만든 바 있습니다.

     

    자랑입니다.

     

    아주 순식간에 소음이 줄어듭니다. 하하

     

    감사합니다.

     

    오피쓴 올림

    댓글

Copyright 2022 Seonghun Im All rights reserved.