블루투스 LE를 사용한 ‘Half-duplex’ 음성 통신 (1)블루투스 LE의 개요
블루투스 LE를 사용한 ‘Half-duplex’ 음성 통신 (2)BlueVoice 애플리케이션
블루투스 LE를 사용한 ‘Half-duplex’ 음성 통신 (3)실제 하드웨어 구현
3. 실제 하드웨어 구현
블루투스 LE 통신을 지원하는 간단한 무선 센서 네트워크 플랫폼에서 BlueVoice를 실제로 평가하기 위해서 앞서 설명한 전체 애플리케이션을 실제 하드웨어로 구현했다. 이를 위해서 STMicroelectronics의 80MHz 32비트 Cortex-M4 마이크로컨트롤러 STM32L476을 기반으로 한 오픈 개발 플랫폼인 STM32 Nucleo L476 보드를 사용했다.
이 시스템은 무선 센서 네트워크 애플리케이션에 사용되는 일반 플랫폼과 비교하면 매우 강력한 마이크로컨트롤러를 포함하고 있는데, STM32 Nucelo를 선택한 것은 유연성과 범용성이 뛰어나기 때문이다.
이 보드는 일련의 커넥티비티 지원 및 확장 헤더가 제공되기 때문에 특수 확장 보드를 적용해 기능을 얹기가 용이하다. 그러므로 새로운 아이디어를 시도하고, 프로토타입 제작 및 검증을 하는데 편리하다.
또한 STM32L4를 특별히 선택한 것은 이 마이크로컨트롤러가 저전력 기능이 뛰어나고 시그마-델타 변조기(DFSDM) 주변장치를 위한 온보드 디지털 필터를 제공하므로 그림 4에서 말한 PDM 대 PCM 변환 필터를 구현할 수 있기 때문이다. 이러한 기능들은 BlueVoice 애플리케이션에 매우 적합하다.
반이중 통신 채널을 구현하기 위해 BlueVoice 중앙 및 주변장치 모듈은 STM32 Nucleo를 기반으로 대칭적 하드웨어를 구성하며 블루투스 LE 커넥티비티 보드와 마이크 확장 보드를 사용한다. BLE 커넥티비티 보드는 STMicroelectronics의 BlueNRG를 기반으로 하고 있다.
BlueNRG는 블루투스 표준 v4.0을 충족하는 극저전력 블루투스 LE 단일 모드 네트워크 프로세서이다. BlueNRG는 마스터와 슬레이브 모드로 구성할 수 있으며, 전송 시의 최대 전류는 8.2mA이고 블루투스 LE 스택이 작동하지 않을 때는 1.7µA까지 낮출 수 있다. 사람의 말소리는 추가적인 마이크 확장 보드를 사용해서 포착한다.
이 보드는 STMicroelectronics의 MP34DT01을 기반으로 하고 있으며, MP34DT01은 음향 과부하 지점이 120dBSPL이고 신호대 잡음비가 63dB이며, 감도가 -26dBFS인 디지털 전방향성 MEMS 마이크이다. 또한 MP34DT01은 커패시티브 센싱 소자를 탑재하고 있으며 시그마-델타 변조기 및 잡음 쉐이핑 메커니즘을 내장하여 1∼3.25MHz의 주파수로 PDM 출력을 제공한다.
그림 6은 이 중 한 모듈의 아키텍처를 보여준다. STM32 마이크로컨트롤러가 DMA 주변장치로 연결된 DFSDM 주변장치를 통해서 마이크에서 PDM 샘플을 획득한다. BlueNRG 소자와의 통신은 일련의 API(application programming interface)를 사용해서 SPI(Serial Peripheral Interface)를 통해 이루어진다. 이러한 모듈 아키텍처는 중앙과 주변장치 디바이스가 대칭적이며 PC로 복원된 오디오를 제공하기 위해서 USB 오디오 인터페이스를 갖추고 있다. 그림 7은 실제 프로토타입을 보여준다.
그림 6: BlueVoice 모듈 아키텍처
그림 7: Tx 및 Rx 프로토타입
4. 성능
위에서 설명한 실제 시스템을 테스트벤치로 사용해서 전력 소모, 메모리 풋프린트, 프로세싱 요구량, ASR 인식율 측면으로 BlueVoice 애플리케이션의 성능을 평가했다.
특히 현장에서 초소형 무선 마이크 모듈을 구현하는 경우와 블루투스 LE의 근본적인 비대칭성(슬레이브-주변장치를 되도록이면 소형화하고 전력이 낮게 설계해야 하는 등)을 고려해 성능 평가는 8kHz 및 16kHz 구성일 때 슬레이브 주변장치 모듈의 전력 소모, 메모리 풋프린트, 프로세싱 요구량에 중점을 두었다.
이와 함께 또한 Rx 측에서 측정한 ASR 성능을 포함하고 있다. 실제로 이 파라미터는 음성 통신에서 음성 품질을 나타내는 중요한 지표이며 빠르게 부상하는 음성 제어 애플리케이션(리모컨, IoT 등)에서 중요한 요소이기 때문이다.
(1) 전력 소모, 메모리, 프로세싱 요구량
위와 같이 BlueVoice 애플리케이션을 실제 하드웨어로 구현했다. 이 하드웨어는 호스트 디바이스로 동작하는 STMicroelectronics STM32 Nucleo 보드와 컨트롤러 디바이스로 동작하는 블루투스 LE 네트워크 모듈로 이루어진다. 표 1에서는 BlueVoice 주변장치 모듈이 동작할 수 있는 3가지 상태(애드버타이징, 접속, 스트리밍)로 호스트와 컨트롤러 디바이스(STM32와 BlueNRG)의 전력 소모를 보여준다. 8kHz와 16kHz 구성을 비교하고 있으며, 3.3V로 동작하면서 측정한 것이다.
표 1: BlueVoice의 전력 소모
여기서 중요한 것은 마이크로컨트롤러의 전력 소모가 하드웨어의 특성과 저전력 구성에 달렸다는 것이다. 따라서 이 표에서 제시하는 수치는 단지 참고용으로서 실제 전력 소모는 애플리케이션의 특성에 따라서 달라질 것이다.
블루투스 LE 표준을 보면 두 노드 간에 접속을 이루기 전 슬레이브 디바이스는 애드버타이징 모드이고 마스터 디바이스는 스캐닝 모드이다. 그러다가 마스터가 애드버타이징 패킷을 발견하고 슬레이브가 존재한다는 것을 감지하면 접속을 시도한다. BlueVoice 솔루션에서는 주변장치-대-중앙 통신일 때 주변장치 노드가 트랜스미터(서버)로 동작하고 중앙 노드가 리시버(클라이언트)로 동작한다. 그리고 서버에서 클라이언트로 주기적인 알림(notification)을 전송한다.
8kHz 구성의 경우에는 애드버타이징 모드일 때 Tx 주변장치 모듈(STM32 + BlueNRG)의 총 평균 전력 소모는 3.50mW로 극히 낮다. 그리고 접속이 이루어졌을 때 전력 소모는 3.98mW에 이른다. 16kHz 구성의 경우, 애드버타이징 모드일 때는 전력 소모가 8.22mW이고 접속이 이루어졌을 때는 9.48mW이다. 특히 고려해야 할 점은 접속 시의 전력 소모는 접속 간격(interval)의 설계에 크게 좌우된다는 것이다.
이 점이 8kHz냐 16kHz 구성이냐의 가장 큰 차이점이다(각각 20ms 및 10ms). 두 경우 모두 접속 간격을 표준에서 허용하고 있는 최소값(7.5ms)에 가깝게 설정하고 있다. 그래야 전송 시의 지연시간을 최소화할 수 있다. 접속이 이루어졌으면 BlueVoice 애플리케이션이 스트리밍 상태가 되는데, 이 상태일 때는 평균 전력 소모가 8kHz 구성은 10.07mW이고 16kHz 구성은 19.84mW이다.
그러므로 용량이 200mAh인 배터리를 사용한다면 연속적인 스트리밍 모드일 때 STM32 + BlueNRG로 이루어진 IoT 노드의 수명은 각기 대략 65시간 및 33시간이 될 것이다. 이와 같은 전력 소모 수치는 BlueVoice 애플리케이션이 BLE를 통한 오디오 스트리밍용으로 적합하다는 것을 보여주는 것이며, 특히 8kHz 구성은 전력 소모를 더욱 크게 낮출 수 있다.
전력 소모 분석과 함께 메모리 풋프린트 요구량 측면에서 BlueVoice의 타당성을 평가했다. BlueVoice 애플리케이션의 실제 구현은 표 2에서 보는 것과 같이 두 구성 모두 동일한 양의 플래시를 필요로 하고(21.85kB), RAM 메모리는 8kHz 구성은 13.32kB를, 16kHz 구성은 7.86kB를 필요로 하는 것으로 나타났다.
이러한 수치는 오버헤드와 전력 소모를 낮추기 위해서 8kHz 및 16kHz 구성으로 각기 20ms 및 10ms마다 오디오 처리 스텝(PDM-PCM 변환 및 ADPCM 압축)을 실시하는 점 때문에 비롯되는 것이다. 이 때문에 8kHz 구성은 2개 프로세싱 스텝 사이에 더 많은 데이터를 저장해야 하는 것이다. 두 경우 모두, 자원 제약이 심한 시스템에 사용하기에 적합하다.
표 2: 트랜스미터 측에서 BlueVoice의 메모리 풋프린트
(2) ASR 성능
BlueVoice가 전력 소모, 프로세싱 요구량, 메모리 풋프린트 측면에서 적당하다고 해서 리시버 측 음성 신호의 품질을 보장하는 것은 아니다. 그러므로 웹 기반 ASR 서비스를 활용해서 집중적인 전송 테스트를 실시함으로써 리시버 측 ASR 성능을 측정해야 한다. 16kHz USB 마이크(준거용)와 8kHz 및 16kHz BlueVoice 시스템을 사용해서 잘 알려진 영어 단어가 포함된 오디오 샘플 몇 개를 녹음하고 ASR 엔진으로 전달하였다. 표 3은 솔루션 별 단어 인식율을 비교한 테스트 결과이다.
표3: BlueVoice의 ASR 성능
이 결과를 보면 ADPCM 압축이 신호 품질을 떨어트리지 않기 때문에 ASR 애플리케이션에 적합하다는 것을 알 수 있다. BlueVoice 16kHz 구성은 USB 마이크에 거의 근접하는 성능을 보여주고 있으며, 8kHz 시스템은 다소의 저하(18%)가 있지만 저전력 소모가 매우 중요한 애플리케이션이라면 허용 가능한 수준이라는 것을 알 수 있다. 사실 16kHz 구성에 필요한 전력의 50퍼센트만을 사용하여 이 정도의 ASR 성능을 보인 것이다.
맺음말
이 글에서는 블루투스 저-에너지 기술을 사용해 음성을 스트리밍하는 솔루션을 소개했다. 먼저 반이중 음성 통신을 위한 ‘vendor specific’ 블루투스 LE 프로파일을 정의하고, 그 다음에는 연관된 디바이스들의 통신 역할, 오디오 처리와 압축 선택, 패킷화 문제, 대역폭 요구량 측면에서의 BlueVoice 설계를 설명했다.
BlueVoice 애플리케이션은 중앙 노드와 주변장치 노드로 이루어지며 통신 방향 선택에 따라서 블루투스LE 서버와 클라이언트로 동작한다. 서버에서 클라인트로 접속이 된 후에는 주기적으로 알림을 전송한다. 8kHz와 16kHz 오디오 샘플링 속도로 두 가지 구성을 비교해 보았다.
트랜스미터로 동작하는 노드에서 PDM 형식으로 MEMS 마이크 디지털 출력을 포착하고, PCM으로 변환하고, ADPCM으로 압축하여 블루투스LE 링크로 각기 32kbps 또는 64kbps의 통신 대역폭을 달성했다. 이 프로파일은 낮은 주파수로 부가 정보를 정의하기 때문에 대역폭이 추가적으로 필요하다.
이 솔루션의 성능을 평가하기 위해서 BlueVoice 애플리케이션을 실제 하드웨어로 구현했다. 이 시스템은 MEMS 마이크, 호스트로 동작하는 STM32 마이크로컨트롤러, 블루투스LE 컨트롤러로 동작하는 네트워크 모듈로 이루어졌다. 성능 평가 결과를 보면 이 솔루션이 전력 소모, 프로세싱 요구량, 메모리 풋프린트 측면에서 저전력 음성 스트리밍 애플리케이션용으로 적합하다는 것을 알 수 있다.
특히 8kHz 및 16kHz 구성으로 오디오 스트리밍 시 센서 디바이스로 측정된 전력 소모가 10.07mW 및 19.84mW인 것으로 나타났으며, 메모리 및 프로세싱 요구량 또한 충분히 허용 가능한 수치로 나타났다. 오디오 품질 지표를 위해 ASR 성능도 평가했다.
이 평가에서 인식한 단어의 비율이 16kHz USB 마이크로 85퍼센트인 것과 비교해서 8kHz 구성은 67%에 달하고 16kHz 구성은 82%인 것으로 나타났다. 따라서 BlueVoice 애플리케이션은 리시버 측에서 지극히 높은 음성 품질 수치를 달성할 수 있으며 저전력 성능 또한 뛰어나다는 것을 알 수 있다.
마우리지오 젠틸리, 로베르토 산니노 _ STMicroelectronics
마테오 페트라카 _ Scuola Superiore Sant’Anna di Pisa and National Inter-University Consortium for Telecommunications





