Skip to content
tutorials

10달러짜리 칩에 목소리가 생기다

클라우드 기반 음성 비서에는 네트워크 의존성, 반복되는 비용, 음성을 외부로 전송하는 마이크라는 숨겨진 대가가 따릅니다. 이 실험은 엣지 환경에서 어느 정도의 지능을 구현할 수 있는지, 그리고 메모리가 부족할 때 어떤 문제가 발생하는지를 보여줍니다.

Marcus Lee
10달러짜리 칩에 목소리가 생기다

클라우드 연결이 필요 없는 음성 비서

이것을 확인해 보세요. 인터넷 연결이 끊긴 ESP32-S3 마이크로컨트롤러가 여러분의 목소리에 반응합니다. 최근 데모에서 10달러짜리 작은 칩이 영어 또는 프랑스어 음성 명령을 인식하고 온보드 LED 색상을 변경했습니다. 버튼을 누르고 말하면 보드가 로컬에서 요청을 처리합니다. Wi-Fi도, Bluetooth도, 클라우드 연결도 필요 없습니다.

하드웨어는 놀라울 정도로 간단합니다. 16MB 플래시 스토리지와 8MB 메모리를 갖춘 약 10달러 상당의 ESP32-S3 마이크로컨트롤러가 전부입니다. 여기에 작은 디지털 마이크, 녹음 활성화를 위한 푸시 버튼, RGB LED를 추가하면 됩니다. 데모에 표시된 노트북은 단순히 출력 결과만 보여줄 뿐, 음성 인식부터 실행까지 모든 무거운 작업은 보드 자체에서 직접 수행됩니다.

이러한 로컬 음성 인식은 클라우드 기반 음성 비서의 일반적인 문제를 우회할 수 있다는 점에서 중요합니다. 네트워크 지연 시간을 없애고, 음성 녹음 파일을 원격 서버로 전송하지 않아 개인정보를 보호하며, 완전히 오프라인 상태에서 작동합니다. 이 데모는 '조명을 보라색으로 깜빡여라'와 같은 제한된 명령 인터페이스를 보여주지만, 이는 범용 스마트 스피커가 아닌 작고 저렴한 하드웨어에서 완전히 독립적인 음성 제어를 구현하기 위한 강력한 첫걸음입니다.

모델이 칩보다 컸습니다

Cactus Compute의 음성 인식 모델인 Whistle은 즉각적인 과제를 제시했습니다. 단일 모델 파일의 크기가 16.9MB였기 때문입니다. 이는 장치 펌웨어를 고려하기 전에도 ESP32-S3의 전체 16MB 플래시 스토리지보다 큽니다. 참고로 OpenAI의 Whisper 기본 모델은 145MB에 달하며, Whistle은 그보다 9배 가까이 작지만 여전히 작은 칩에 담기에는 너무 컸습니다.

컴팩트한 크기에도 불구하고 Whistle은 놀라운 성능을 발휘합니다. 다음 7개 언어를 지원합니다:

  • 영어
  • 프랑스어
  • 독일어
  • 스페인어
  • 이탈리아어
  • 네덜란드어
  • 폴란드어

말하는 언어를 자동으로 감지하고 정확한 단어 타임스탬프를 제공하며, 단순한 전사를 넘어 음성에서 직접 오디오 임베딩을 생성할 수도 있습니다.

Whistle을 칩에 담는 핵심은 고유한 '지능 사다리(intelligence ladder)' 아키텍처에 있습니다. 원시 오디오를 처리하는 인코더는 8개의 레이어를 모두 사용하여 실행되지만, 텍스트 전사를 담당하는 디코더는 가지치기(pruning)가 가능합니다. Cactus Compute는 디코더의 깊이를 선택할 수 있도록 설계하여 레이어 수가 적어도 올바르게 작동하도록 했습니다.

제작자는 4레이어 디코더를 선택했으며, 모델 파티션을 플래시 칩의 끝까지 신중하게 확장한 결과 98KB의 플래시 여유 공간만 남았습니다. 2레이어 옵션을 선택했다면 더 쉽게 들어갔겠지만 전사 오류가 눈에 띄게 증가했을 것이며, 이는 추가 레이어의 가치를 입증하는 결과입니다.

작은 보드가 소리를 행동으로 바꾸는 방법

작은 칩은 어떻게 실제로 여러분의 목소리를 '들을'까요? 과정은 마이크가 16kHz로 여러분의 목소리를 캡처하면서 시작됩니다. 이 원시 오디오는 시간 경과에 따른 목소리의 높낮이와 에너지를 시각화한 '히트맵'인 Mel spectrogram으로 변환되어 10밀리초 단위로 분할됩니다.

다음으로, 일련의 합성곱(convolutional) 레이어가 이 히트맵을 압축합니다. 각 조각은 이제 약 80밀리초의 오디오를 나타내며, 2초짜리 명령을 단 25개의 프레임으로 변환합니다. 이러한 효율적인 표현은 자원이 제한된 ESP32-S3에 매우 중요합니다.

그런 다음 Whistle의 encoder가 작업을 이어받습니다. 8개의 레이어로 구성되어 있어 80밀리초 길이의 각 프레임이 클립 내의 다른 모든 프레임을 동시에 "볼" 수 있습니다. 이는 모델이 단어를 단순히 개별적으로 인식하는 것이 아니라 전체 문맥 속에서 이해한다는 것을 의미합니다.

마지막으로 decoder가 한 번에 한 부분씩 전사 내용을 생성합니다. 먼저 language token을 사용하여 언어(예: 영어 또는 프랑스어)를 식별합니다. 각 단어를 생성할 때마다 "cross-attention"을 사용하여 encoder의 출력값을 다시 확인하며, 들은 내용과의 일관성을 보장합니다.

Needle이 아닌 소형 파서가 전사된 텍스트를 해석하여 "빨간색" 또는 "5초"와 같은 단어를 특정 LED 색상 및 점멸 패턴으로 매핑합니다. Whistle의 기능에 대한 자세한 내용은 Whistle: Speech to Text in 16.9 MB - Cactus Compute에서 확인하세요.

2초짜리 명령어를 처리하려는 초기 시도에는 거의 24초가 걸렸는데, 이는 음성 비서로 사용하기에는 너무 느린 속도였습니다. 상당한 최적화가 필요했습니다. Cactus Compute 엔지니어들은 패스당 여러 프레임을 처리하고, ESP32-S3의 두 코어에 작업 부하를 분산하며, 칩의 벡터 유닛에서 8비트 정수 연산을 사용하여 속도를 높였습니다. 이러한 변경으로 일반적인 응답 시간이 훨씬 실용적인 10초 수준으로 단축되었습니다.

이 글이 마음에 드셨나요? 매일 아침 이런 글을 메일로 받아보세요.

하루 한 통 · 두 번의 클릭으로 구독 취소 · 제3자 추적 없음

흥미로운 데모, 받아쓰기 대체재는 아님

Whistle의 정확도에 대한 주장은 인상적이지만, 맥락이 중요합니다. Cactus Compute는 "flash the light blue"와 같은 합성 영어 색상 명령에 대해 약 78%의 성공률을 보고했습니다. 이러한 테스트에 녹음된 마이크 노이즈를 추가해도 결과에 큰 변화가 없었으며, 이는 제한된 통제 환경에서 강력한 성능을 보여줍니다.

실제 결과는 특정 문구에 대한 모델의 강점을 강조합니다. "make it red" 또는 "turn it green"과 같은 짧은 문구는 테스트에서 82~93%의 성공률을 보였습니다. 그러나 단일 색상 단어의 경우 44%의 낮은 정확도를 보였습니다. 키워드 바이어싱(Keyword biasing)과 프랑스어와 같은 다른 언어로 재시도하는 방식은 고정된 명령어 세트에 대한 결과를 개선했습니다.

Whistle의 Apache 2.0 릴리스와 Needle과의 공유 런타임 설계는 엣지 디바이스에서 개인정보가 보호되는 음성-도구 시스템의 미래를 제시합니다. 그러나 현재 ESP32-S3 보드는 약 24MB의 플래시 메모리가 필요하기 때문에 두 모델을 동시에 탑재할 수 없습니다. 또한 약 10초의 지연 시간과 명령어 정확도에 집중하는 특성은 더 넓은 애플리케이션 적용을 제한합니다.

이 흥미로운 데모는 받아쓰기 대체재가 아닌, 로컬 음성 제어를 위한 중요한 단계를 보여줍니다. GitHub 저장소에서 프로젝트를 더 자세히 살펴보고 모델 카드를 검토할 수 있습니다.

자주 묻는 질문

Whistle이란 무엇인가요?

Whistle은 7개 언어에 걸쳐 오디오를 로컬에서 전사하도록 설계된 Cactus Compute의 소형 음성-텍스트 변환 모델입니다.

Whistle을 ESP32-S3에서 실행할 수 있나요?

네, 커스텀 빌드와 가지치기(pruned)된 decoder를 사용하면 가능합니다. 시연된 보드는 16MB 플래시 제한 내에서 4레이어 버전을 실행합니다.

ESP32-S3 음성 프로젝트에 Wi-Fi가 필요한가요?

아니요. 음성 캡처, 전사, LED 명령 로직은 Wi-Fi나 블루투스 없이 보드에서 실행됩니다.

데모의 정확도와 속도는 어느 정도인가요?

제작자는 합성 영어 색상 명령에 대해 약 78%의 정확도를 보고하며, 명령어당 평균 처리 시간은 약 10초입니다.

이 보드에서 Whistle을 Needle과 함께 실행할 수 있나요?

시연된 설정에서는 불가능합니다. 두 모델을 합치면 약 24MB가 필요한데, 이는 보드의 16MB 플래시 용량을 초과하기 때문입니다.

Found this useful? Share it.

For builders

Want Stork to write one of these about your product?

Send us a URL. We use the product, form a view, and publish what we actually think — in 8 languages, labeled Sponsored, with no copy approval on your side. That last part is what makes it worth quoting.

See how it works$199 · AI tools & software only

빌더를 위해

이 페이지는 지금 다른 사람의 도구를 위해 일하고 있습니다.

AI 에이전트가 읽고, 구매자가 도착합니다. 8개 언어와 MCP로 답합니다. 당신의 도구도 가질 수 있습니다 — 24시간 안에 공개.