MQTT VoiceCon 은 원격에서 음성인식으로 장치를 제어하는데 사용하기 위한 안드로이드 앱입니다.

VoiceCon 앱은 메시지 전송을 위해 MQTT 프로토콜을 사용합니다. 따라서 라즈베리파이 같은 서버에 MQTT broker(server) 프로그램이 실행중이어야 합니다. 일단 MQTT broker 만 준비된다면 다양한 장치를 MQTT broker에 연결하고 VoiceCon 앱으로 음성으로 제어할 수 있습니다.

MQTT 프로토콜과 서버 구성에 대해서는 아래 링크를 참고하세요.

MQTT VoiceCon 앱은 Paho MQTT android service library 를 일부 수정해서 사용하고 있습니다. Paho 라이브러리에 대한 상세 내용은 아래 링크를 참고하세요.

MQTT VoiceCon 앱은 소스가 모두 공개되어 있으니 문서 하단의 GitHub 링크에서 확인하세요.

화면 구성

01_drawer앱 실행 후 왼쪽 모서리를 드래그하면 Drawer 메뉴가 열립니다. 여기에 보면 4개의 탭과 1개의 설정 화면이 있습니다. 4개의 탭 중 하나를 선택하면 해당 탭으로 이동하고, 설정을 선택하면 다이얼로그가 뜹니다.

4개의 탭은 각 화면에서 좌-우로 드래그 동작을 해도 이동할 수 있습니다.

각각의 탭이 하는 일은 다음과 같습니다.

  • Controller :
    각종 컨트롤 버튼, 위젯을 제공. 마이크 이미지를 클릭하면 음성인식을 시작. 마이크 아래에서 [Switch/Slide/Keypad/Text/Color picker] 메뉴를 선택하면 해당 위젯 화면이 보여짐. 인식된 음성이나 사용자 컨트롤 결과가 원격 서버로 전송되기 위해서는 MQTT broker(server) 가 연결되어 있어야하고, 명령어가 전송될 topic을 상단에 적어줘야 함. 전송되는 메시지의 형식은 Settings(설정) 다이얼로그에서 지정할 수 있음
  • MQTT History :
    MQTT broker 의 연결 상태나 메시지 송수신 내역이 표시되는 화면. 메시지를 전송(publish) 하거나 특정 topic을 구독(subscribe) 할 수 있음. 메뉴키나 우측 상단의 화살표 아이콘을 클릭하면 publish/subscribe 입력창이 표시됨.
  • MQTT Broker list :
    사용자가 입력한 MQTT broker 정보를 리스트로 표시함. 각 아이템을 클릭하면 [연결/연결중단/삭제] 등의 메뉴를 선택가능. 특정 MQTT 서버에 연결된 경우 해당 아이템의 배경은 푸른색으로 하이라이트 되어 표시됨. 복수개의 MQTT broker에 동시 연결이 가능하며, 이 경우 메시지를 전송(public) 할 때 연결된 모든 broker로 전송됨.
  • Add MQTT Broker :
    서버 ID, URL, Port 를 지정해서 MQTT broker 정보를 저장할 수 있음. 저장된 정보는 MQTT Broker list에 아이템으로 표시됨. [서버 ID, URL, Port] 는 필수이며 그 외의 부가 기능을 선택적으로 추가할 수 있음.
  • Settings 다이얼로그 :
    음성인식 시작을 위한 floating icon 을 show/hide 할 수 있음. Slide bar와 같이 굉장히 빠르게 이벤트를 생성하는 컨트롤의 경우 sending interval을 이용해서 메시지 전송 간격을 조정할 수 있음. 메시지 전송 형식을 [값만/간단한 형식/JSON] 지정할 수 있음.

화면 하단에는 음성인식을 위한 Floating 버튼이 있으며, 상태바에 서버와의 연결 상태가 표시됩니다.

  04_broker_list03_history02_controller 05_add_broker 06_settings

참고자료

Google Play Store 앱 다운로드 (v4.0.3 이상 지원)

소스코드 다운로드 (GitHub)