에어팟에 마이크가 2개 있는 이유 – 빔포밍 마이크의 동작

애플의 에어팟(AirPods) 소개페이지에는 아래와 같이 탑재된 Voice Accelerometer가 사람이 말하는 순간을 인식하면 한 쌍의 빔포밍 마이크가 함께 동작하여 주변의 소음은 걸러내고 목소리에 집중한다는 설명이 있습니다. 에어팟에 탑재된 기능중에 관심이가는 부분이라 이번 글에서는 빔포밍 마이크가 어떻게 동작하는지에 대해 다뤄보겠습니다.

에어팟 빔포밍 마이크에 대한 간단한 언급 – Apple AirPods 소개페이지 캡처

먼저 용어에 대해 설명하면, 빔포밍(Beamforming)은 일정한 배열을 이루고 있는 송/수신기를 이용해서 무선 신호를 보내거나 받아들일 때 방향성을 부여하기 위한 신호처리 기술입니다. 신호를 받아들이는 경우에는 각 수신기에 도착하는 신호의 위상차에 의해 특정 방향의 신호는 서로 상쇄되고 다른 방향의 신호는 서로 보강되는 성질을 이용하는데, 여러 수신기에 도착하는 신호들을 그대로 받아들여 합하기만 하는 것이 아니라 가중치와 지연시간을 조절한 후에 합하면 원하는 방향의 신호만을 상대적으로 크게 받아들일 수 있게 됩니다.

2014년 Apple Insider 사이트의 글에서는 이어폰의 연결선을 따라 여러개의 마이크를 탑재하여 빔포밍을 구현하는 애플의 특허를 소개하고 있는데, 애플은 수년 전부터 빔포밍 기능을 염두에 두고 있다가 에어팟을 통해 상용화에 성공한 것으로 보입니다. 사실 빔포밍은 전문 녹음용 마이크에는 널리 쓰이고 있는 기술인데, 에어팟에 빔포밍 기능을 탑재하면서 통화 품질을 높이는 정도의 용도로 대중화 시킨 부분은 역시 애플 답습니다. 다만 에어팟의 크기나 W1칩의 성능/전력소모 등의 제약으로 여러개가 아닌 2개의 마이크만을 사용한 것으로 보이는데, 작년 9월 애플 이벤트에서 필 실러(Phil Schiller) 부사장이 에어팟을 소개하는 장면(아래)에서 탑재된 2개의 마이크 위치를 확인할 수 있습니다. 여러개의 마이크를 사용하면 특정 방향에 조금 더 날카롭게 집중할 수 있는 장점이 있지만 2개의 마이크로도 방향성을 구현하는데는 문제가 없습니다.

에어팟에 탑재된 두개의 마이크 (출처 – 유튜브 영상 “Apple – September Event 2016”, 첨삭추가)

빔 포밍의 개념을 이해하기 위해 먼저 두개의 마이크에서 받아들이는 소리를 단순히 더하는 것 만으로 받아들이는 소리에 방향성이 생기게 되는 상황을 설명하겠습니다. 편의상 특정 주파수의 사인(sine)파가 있고 이 사인파의 1/2 파장 길이만큼 두개의 마이크가 떨어져 놓여있다고 가정하면 마이크가 놓여진 축과 평행한 방향으로 진행하는 사인파의 경우 마이크 A와 B에서 입력되는 신호 사이에 정확히 180 도의 위상차가 발생하여 더할 경우 서로 상쇄되어 0이 되게 됩니다. (아래 그림의 빨간 화살표) 반면 마이크 A와 B가 놓여진 축과 수직 방향으로 진행하는 사인파의 경우 두 마이크에 똑같은 위상이 입력되기 때문에 사인파는 상쇄되지 않습니다.

두 마이크의 Broadside Array 배열

개념 설명이 목적이므로 수식은 생략합니다만 위의 상황에서 마이크 A/B 중간지점을 원점, 마이크 A/B가 놓여진 축에 수직한 윗 방향을 0도로 가정하고 방향에 따라 두 마이크에서 합해지는 신호의 상대적 이득을 계산하면 아래 그래프와 같은 결과를 얻을 수 있습니다. 앞에서 설명한 대로 두 마이크와 수직한 방향(0도/180도)의 소리가 가장 강하게, 평행한 방향(90도/-90도)의 소리가 가장 약하게 받아들여집니다. (자세한 수식이 궁금할 경우 링크를 참조 하시기 바랍니다. 아래 그래프의 출처이기도 합니다.) 간단히 두 마이크의 소리를 더하는 것만으로 마이크에 입력되는 소리에 방향성이 생긴다는 사실은 확인했습니다만 에어팟의 착용시 입의 위치를 생각하면 이런 방식의 빔포밍은 통화에 오히려 방해가되기 때문에 다른 신호처리 방법이 필요함을 알 수 있습니다.

Broadside Array 배열의 두 마이크 신호를 단순히 합할 때의 빔포밍

다음 설명으로 넘어가기 전에 한가지 짚고 넘어갈 부분은 두 마이크 사이의 거리가 파장의 1/2이 되는 주파수에 대해 앞에서 설명한 신호의 상쇄가 일어나므로 빔포밍이 가능한 대역폭은 두 마이크 사이의 거리에 의해 결정된다는 점입니다. 파장의 1/2이 두 마이크의 거리보다 짧은(=주파수가 높은) 신호에 대해서는 방향에 따른 신호의 상쇄가 여러번 일어날 수 있어 원치 않는 방향에서도 신호의 감쇄가 일어나는 aliasing이 발생하게 됩니다. 에어팟의 경우 두 마이크 사이의 간격은 대략 2.5cm 정도인데 빔포밍의 대역폭은 소리의 속력(340m/s)을  파장(2.5cm x 2)으로 나눈 값인 6.8KHz 가 됩니다. 보통 통화시에 필요한 주파수 범위를 300Hz~3.4KHz로 가정하므로 (참고 링크) 사람의 목소리를 빔포밍 하기에는 충분히 여유가 있는 대역폭 입니다.

에어팟을 착용한 상태에서 통화를 할 때 바람직한 빔포밍의 방향은 위의 그림에서 마이크 A쪽의 소리는 받아들이고 나머지 방향의 소리는 억제하는 것인데 이를 위해서는 아래 그림과 같은 신호처리가 필요합니다. 마이크 B의 입력을 소리가 두 마이크 사이를 이동하는 시간(T)만큼 delay시킨 후 마이크 A의 입력에서 빼준 다음 반으로 나눠주면 A->B 방향으로 진행하는 소리는 값이 그대로 유지되지만 B->A 방향으로 진행하는 소리는 완전히 상쇄됩니다. 편의상 앞에서 설명한 빔포밍의 대역폭의 1/2 주파수(파장이 2배)에 해당하는 신호를 가정하면 두 마이크 사이의 거리는 이제 파장의 1/4에 해당하며 두 마이크 사이를 지나는 시간차도 파장의 1/4 이 됩니다. 소리가 A->B 방향으로 진행하는 경우 마이크 A의 신호는 sin(A*x) 마이크 B의 신호는 sin(A*(x-pi/2))로 표현할 수 있는데 이 신호를 다시 소리가 1/4 파장만큼 진행하는 시간동안 delay 시키면 sin(A*(x-pi/2-pi/2)) = -sin(A*x)가 됩니다. 이 신호를 마이크 A의 신호에서 빼준 후 2로 나누면 (sin(A*x) – (-sin(A*x)))/2 = sin(A*x)에 의해 마이크 A에 입력된 신호와 동일한 신호가 되어 A->B 방향의 소리는 무사히 살아 남습니다. 반면 소리가 B->A 방향으로 진행할 경우 B의 신호를 1/4파장 만큼 delay 시킨 신호는 소리가 B->A를 진행하는 시간에 의해 1/4 파장만큼 delay된 마이크 A의 신호와 동일하기 때문에 빼주면 서로 상쇄되어 0이 됩니다.

두 마이크의 differential array 배열

위의 그림과 같이 마이크 A/B가 놓여진 축과 입력되는 소리사이의 각도를 theta로 가정하고 방향별로 상대적인 이득을 계산하는 수식은 “First order differential microphone arrays… (링크) ” 라는 제목의 논문에 자세히 설명되어 있는데 위의 그림도 같은 논문에서 가져온 것입니다. 유도된 식에 따라 방향에 따른 소리의 감쇄량을 계산해서 그래프로 그리면 아래와 같은 cardioid 패턴을 이루면서 사람의 입이 있는 방향으로는 아무런 감쇄가 없고 뒷쪽 방향으로 갈수록 감쇄량이 커져 입의 반대 방향에서는 아무런 소리도 받아들이지 않는 빔포밍을 이루게 되는 것을 알 수 있습니다. (여기까지 따라 오셨다면 에어팟의 빔포밍 마이크가 어떻게 동작하는지 거의 이해하신 겁니다!)

Cardioid pattern 빔포밍

앞에서는 설명의 편의상 마이크 B에 입력된 소리에 가하는 delay를 소리가 마이크 A/B 사이를 이동하는 시간과 동일하다고 가정했는데, 이 delay와 마이크 A와 B에 곱해지는 가중치를 조절하면 위의 Cardioid 패턴 이외에 다양한 패턴을 만들 수 있습니다. 전문 음향기기 회사인 Shure사의 블로그를 보시면 빔포밍 마이크에서 사용되는 다양한 패턴들을 확인하실 수 있는데, 링크글의 맨 아랫 부분에 있는 동영상을 보시면 각 패턴별 빔포밍 마이크의 성능을 간접 체험해 볼 수 있기 때문에 한 번 보시기를 권장 드립니다.

마지막으로 짚고 넘어갈 부분은 빔포밍 구현을 위해서는 받아들이려는 주파수에 비해 꽤나 높은 sampling rate가 필요하다는 점 입니다. 에어팟의 경우 두 마이크 사이의 거리가 2.5cm이고 소리가 이 거리를 이동하는데 걸리는 시간은 73.5us 인데 이정도의 시간차를 구분하려면 최소 13.6KHz의 sampling rate가 필요하게 됩니다. 앞에서 설명한 Cardioid 패턴이 아니라 Hyper-Cardioid 패턴의 빔포밍을 구현하려면 73.5us의 1/3에 해당하는 시간을 구분해야 되기 때문에 필요한 최소 sampling rate는 40.8KHz로 껑충 뛰게 됩니다. 3.4KHz 정도의 대역폭을 가지는 목소리를 잘 받아들이기 위한 것 치고는 꽤나 비싼 대가를 치뤄야 하지요. 소모전력이 중요한 에어팟에서는 sampling rate를 낮춰서 Cardioid 패턴 정도의 빔포밍을 구현하는 것으로 만족하지 않았을까 하고 개인적으로 추측해 봅니다.

지금은 이미 사용하고 있는 블루투스 이어폰이 있어 에어팟의 구입을 서두르고 있지는 않습니다만 글을 쓰고나니 조만간 에어팟을 사서 통화를 해보고 싶네요. 긴 글 읽어 주셔서 감사합니다.

You may also like...

8 Responses

  1. 영디비 댓글:

    안녕하세요! 상세히 좋은 글 잘 봤습니다.
    저희 사이트로 글을 좀 퍼가고 싶은데, 가능할까요?
    물론 출처 및 링크는 눈에 잘 보이도록 기입하겠습니다.

  2. 쉭쉭 댓글:

    좋은 글 잘 읽었습니다. 다만 몇가지 설명에 의문점이 있어 댓글로 문의드려요~
    마이크 간 거리 2.5cm / 파장 / 빔포밍 대역폭을 설명한 부분에서 sample rate 으로 설명한 부분이 이해가 잘 안가는데요,

    계산결과인 6.8kHz 에 해당하는 대역의 소리만 정확히 보강과 상쇄가 발생하는 것이라, 설계 시 특정 대역을 타겟으로 했다면 3.4kHz가 아니라, 6.8kHz 이 타겟인거 아닌지요?
    (아날로그 형태의 소리가 전달되는 air 구간에서 sample rate을 고려할 필요가 있는지 모르겠습니다.., 3.4kHz에 해당하는 소리는 두 mic의 sum 진행 시 절반의 상쇄/절반의 보강이 되겠지요)

    sample rate 이라는 것은 결국 아날로그 마이크를 썼다면, 별도의 ADC블록에서, 디지털 마이크를 썼다면 마이크 내부에서의 ADC 시 고려되어야하는 것이고, 이에 따라 최대 대역을 narrow band 음성인 8kHz 정도로 고려했다고 가정하면 일반적으로 16kHz의 sample rate을 사용하여 왜곡을 없애는 것이지, 6.8kHz의 원음 대역이 3.4kHz 가 되거나, 3,4kHz의 원음 소리가 6.8kHz 가 되는 것은 아니지 않나요?

    제가 잘못알고 있는 부분이 있다면 설명 부탁드립니다. 2mic Solution 과 Beamforming 기술이 헷갈려서 참고하러 들어왔는데, 덕분에 Beamforming 관련 원리는 설명을 통해 거의 이해해서 유익했는데, 이 부분 때문에, 오히려 좀더 혼란스러운 부분이 생긴 것 같습니다.

    • 골수공돌이 댓글:

      지적 감사드립니다. 6.8KHz가 빔포밍의 타겟 대역폭이 맞으며 이 때는 sample rate나 nyquist 주파수를 고려할 필요가 없습니다. 본문의 관련 내용도 수정하였습니다.
      쓰다보니 저도 헷갈렸네요 ^^

      • 쉭쉭 댓글:

        빠른 피드백 감사합니다:)

        에어팟 쓰고있는데 가속센서+빔포밍이 궁금해서 테스트 해봤는데,
        움직임이 있다고 바로 빔포밍이 켜지고, 멈춰있다고 안켜지고.. 그렇게 칼 같이 반응하지는 않는 것 같네요
        어떤 다른 알고리즘에 의해 동작 on/off 가 되는듯한데.. 궁금해서 찾다보니 이곳까지 왔습니다~
        내용 이해하기 쉽게 잘 풀어주셔서 도움 많이 되었습니다~

        • 골수공돌이 댓글:

          슬슬 읽히는 글이 아닌데도 꼼꼼히 읽어주시고 잘못된 점을 지적도 해주셔서 제가 더 감사드립니다. ^^

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다