팔로 돌리는 오프라인 AI — Pi 5 CPU에서 48 tok/s

Pi 5에서 돌리는 Squeez Labs의 손잡이식 오프라인 음성 AI: edge_voice_agent 스택, 부품, 재현 명령어.

팔로 돌리는 오프라인 AI — Pi 5 CPU에서 48 tok/s
Share

손으로 돌리는 크랭크, Raspberry Pi 5, 그리고 인터넷 없음 — CrankGPT는 "전원은 어디서 오나?"라는 질문을 말 그대로의 질문으로 바꿉니다. 직접 만들기 전에, 실제로 작동하는 프로젝트가 무엇이고 단순한 잡음은 무엇인지 구분해 두는 것이 좋습니다.

CrankGPT의 정체와 걸러야 할 것

CrankGPT는 Katrin Tomanek과 Alex Kauffmann이 공동 설립한 Squeez Labs가 만든, 완전 오프라인 방식의 인간 동력 로컬 AI 음성 기기입니다. 실제로 작동하는 프로토타입이자 참고용 빌드이지, 구매할 수 있는 SaaS 제품이나 앱, 완제품 기기는 아닙니다. Squeez Labs는 CrankGPT를 판매하지 않으며, 같은 이름을 쓰는 토큰이나 밈 코인과도 관련이 없다고 명시하고 있으므로, "buy CrankGPT" 같은 목록은 의심해서 봐야 합니다 .

상호작용 흐름은 의도적으로 단순합니다. 크랭크를 돌리면 박스가 깨어나고 전원이 공급됩니다. 계속 돌리는 동안 기기는 살아 있으면서 듣고, 생각하고, 말합니다. Moonshine ASR이 Silero VAD로 발화 끝점을 잡아 요청을 전사하고, llama.cpp를 통해 작은 로컬 LLM이 답변을 생성하며, Piper가 문장 단위로 음성을 합성합니다. 그래서 전체 답변이 끝나기 전부터 기기가 말하기 시작합니다 [1][2].

랜딩 페이지는 장난스러운 전력 티어 세 가지를 제시합니다. Q&A용 20W 손크랭크 "Synapse" 티어, 더 무거운 작업을 위한 150W 페달 "Cortex" 티어, 에이전트 무리를 위한 2000W+ "Singularity" 티어입니다 . 크랭크는 입문 티어 데모입니다. 실제로 배선해 볼 수 있는 것을 찾는다면 진짜 출발점은 오픈소스 ktomanek/edge_voice_agent 저장소입니다. 풍자적인 Squeez Labs 페이지는 개념을 설명하지만, 모든 배선 정보는 저장소에 있습니다.

부품과 전원: Pi 5, ReSpeaker, 그리고 크랭크

An offline AI you power with your arm — 48 tok/s on a Pi 5 CPU

CrankGPT 참고 빌드는 8GB RAM이 달린 기본 Raspberry Pi 5와 냉각 팬 HAT만으로 전체 음성 루프를 실행합니다. GPU도, 가속기도 없고 CPU만 사용합니다 . 오디오는 ReSpeaker 2-Mic Pi HAT(WM8960 코덱, 스테레오 MEMS 마이크)에서 들어오지만, Squeez Labs는 외장 마이크와 스피커를 연결한 USB 사운드 카드도 테스트했으므로 반드시 이 HAT에 묶일 필요는 없습니다 .

전원 쪽에서는 빌드의 성격이 뚜렷해집니다. 발전기는 시중에서 구할 수 있는 전압 전환식 20W 손크랭크 비상용 USB 충전기이지만, Pi만으로는 그 전원을 버티지 못합니다. 부하가 걸리면 레일 전압이 Pi가 요구하는 전압 아래로 처지거나 과전류 보호가 작동하므로, Squeez Labs는 약 20초 분량의 저장 여유를 제공하는 맞춤형 커패시터/슈퍼커패시터 보드를 추가했습니다 . 이 버퍼는 필수로 봐야 합니다. 없으면 크랭크를 잠깐 멈추는 것만으로도 레일이 떨어져 Pi가 문장 중간에 꺼집니다.

소비 전력을 보면 이유가 분명합니다. 유휴 상태는 약 4W(5V/0.8A), Moonshine ASR은 약 8W(5V/1.6A)를 쓰고, LLM+TTS 추론을 함께 돌리면 약 15W(5V/3A)에 이르며, 순간적으로는 최대 약 5A까지 튑니다 . 발전기는 단순히 피크로 15W에 도달하는 것이 아니라, 15W를 지속적으로 유지할 수 있어야 합니다.

OS 선택도 같은 부팅 시간 논리를 따릅니다. CrankGPT는 가벼운 Debian 변형인 DietPi를 사용하며 Bluetooth와 Wi-Fi 라디오 서비스를 비활성화합니다. Linux는 기본 Raspberry Pi OS보다 대략 10초 빠른, 약 3초 만에 사용 가능한 유저스페이스에 도달합니다 . 사람이 직접 크랭크를 돌리는 상황에서는 부팅 1초가 곧 팔의 피로 1초입니다.

edge_voice_agent를 받아 음성 파이프라인 실행하기

An offline AI you power with your arm — 48 tok/s on a Pi 5 CPU

제어 레이어는 Tomanek의 오픈소스 ktomanek/edge_voice_agent 저장소입니다. 일반 하드웨어에서 파이프라인을 돌리고 싶다면 풍자 스타일의 랜딩 페이지가 아니라 여기서 시작해야 합니다 . ASR 백엔드로 Moonshine, FasterWhisper, Nemo FastConformer, Vosk를 지원하고, TTS는 Piper 또는 Kokoro를 사용할 수 있으며, llama.cpp로 호스팅되는 어떤 LLM이든 붙일 수 있습니다. 기본 Pi 5 구성은 Moonshine tiny + Piper + Gemma3:1b입니다 .

1단계 — llama.cpp 빌드. 서버 타깃을 켠 상태로 컴파일하고 llama-server가 PATH에 잡히는지 확인합니다.

cmake -B build -DLLAMA_BUILD_SERVER=ON
cmake --build build --config Release
# confirm it resolves
which llama-server

2단계 — 클론 후 설정 실행. setup.py 스크립트가 Piper, Moonshine, Silero, 기본 LLM을 자동으로 다운로드합니다.

git clone https://github.com/ktomanek/edge_voice_agent
cd edge_voice_agent
python -m venv .venv && source .venv/bin/activate
python setup.py

3단계 — 두 프로세스를 수동으로 시작. 한 터미널에서 LLM 서버를 실행하고, 두 번째 터미널에서 에이전트 CLI를 실행합니다 .

# terminal 1
llama-server -m models/llms/LFM2-350M-Q4_K_M.gguf --port 8080

# terminal 2
python voice_agent_cli.py --platform rpi5 --prompt_file prompts.json

노트북용 단축 실행(물리 버튼 없음). 로터리 다이얼과 인터럽트 버튼 없이 테스트한다면 키보드로 제어할 수 있습니다. python voice_agent_cli.py --enable_keyboard_control을 사용하세요. Enter는 현재 음성을 끊고, Space는 마이크 음소거를 토글하며, g/s/f는 세 개의 프롬프트 슬롯 사이를 전환합니다 .

Pi 5에서는 Q4_K_M 형식의 LFM2.5 350M이 권장 기본값입니다. 354MiB로 로드되고, 48.86 tokens/s를 생성하며, 첫 바이트 응답은 약 0.8초입니다 . 아래의 더 큰 옵션을 쓰면 메모리를 더 쓰는 대신 품질을 높일 수 있습니다.

모델(Q4_K_M)RAMTokens/s평균 TTFB
LFM2.5 350M354 MiB48.86~0.8s
LFM2.5 1.2B762 MiB15.01~1.5s
Gemma3 1B762 MiB14.31~2.9s

수치는 벤더가 보고한 값(llama.cpp pp512/tg128, 4 threads)이며, 독립적으로 벤치마크된 결과는 아닙니다 .

전력 급증, ASR 한계, 그리고 다음 단계

약 30초의 콜드 스타트는 모든 것을 로컬에서 실행하는 대가이며, 세 가지 측정 가능한 단계로 나뉩니다. Raspberry Pi 5 펌웨어 부팅 10~15초, Linux 커널에서 사용 가능한 사용자 공간까지 약 3초, Python 임포트와 모델 로딩에 다시 10~15초가 걸립니다 . 소프트웨어 스택은 ONNX Runtime 위에서 실행되며, 가능한 곳에서는 PyTorch 의존성을 제거해 RAM 사용량과 마지막 로딩 단계를 눈에 띄게 줄입니다 . 시작이 느리게 느껴진다면, 먼저 최적화할 곳은 이 임포트 및 로딩 구간입니다.

Moonshine은 CPU에서 빠르지만 그만큼 견고성이 떨어집니다. 크랭크의 기계적 소음이나 비원어민 억양이 섞이면 Whisper-base급 모델이나 NVIDIA FastConformer보다 신뢰도가 낮습니다 . 전사 품질이 떨어진다면 edge_voice_agent에서 ASR 백엔드를 FasterWhisper로 바꾸면 됩니다. 이 저장소는 Moonshine과 함께 Nemo FastConformer, Vosk도 지원합니다 .

여유 성능이 더 필요하다면 Orange Pi 5 Pro가 DDR5 RAM 덕분에 Pi 5보다 생성 속도를 29~58% 높입니다. 이는 자기회귀 디코딩의 병목이 순수 연산력이 아니라 메모리 대역폭임을 보여줍니다 . 사용하려면 --platform opi5를 넘기면 됩니다. 그다음에는 두 가지 실험을 해볼 만합니다. 여전히 쓸 만한 지연 시간 안에서 더 풍부한 답변을 얻기 위해 LFM2.5 1.2B Q4_K_M(762 MiB, 최초 바이트까지 약 1.5초)으로 올려 보고 , 3단 로터리 다이얼을 오프라인 독일어, 스페인어, 프랑스어 번역에 매핑하는 voice_translate_cli.py도 시도해 보세요 . 핵심은 이렇습니다. 먼저 기본 350M 모델로 전체 루프를 검증한 뒤, 하드웨어와 인내심이 허락하는 범위에서만 메모리 대역폭을 답변 품질과 맞바꾸면 됩니다.

자주 묻는 질문

CrankGPT 소프트웨어를 써보려면 실제 손잡이 크랭크 하드웨어가 필요한가요?

아니요. 크랭크는 전원일 뿐입니다. 실제 지능은 오픈소스 edge_voice_agent 저장소에 있으며, Raspberry Pi 5나 일반 노트북 어디서든 실행됩니다. 하드웨어를 만들지 않고 전체 ASR→LLM→TTS 루프를 시험하려면 python voice_agent_cli.py --enable_keyboard_control을 실행하세요. Enter는 음성을 중단하고, Space는 마이크 음소거를 전환하며, g/s/f는 세 가지 프롬프트 또는 번역 위치를 전환합니다 .

Raspberry Pi 5에서 품질과 속도의 균형이 가장 좋은 GGUF 모델은 무엇인가요?

가장 낮은 지연 시간을 원한다면 Q4_K_M 양자화의 LFM2.5 350M을 사용하세요. Pi 5(llama.cpp, 4스레드)에서 48.86 tokens/s를 생성했고, 최초 바이트까지 약 0.8초, 메모리는 354.48 MiB만 사용했습니다 . 더 풍부한 답변이 필요하면 LFM2.5 1.2B(762.49 MiB, TTFB 약 1.5초, 15.01 tok/s)로 올리면 됩니다. Gemma3 1B는 비슷한 메모리를 차지하지만 프리필이 약 5배 느리고(46.12 대 222.65 prefill), TTFB도 약 2.9초까지 올라갑니다 .

크랭크를 멈추면 Raspberry Pi가 꺼지는 이유는 무엇인가요?

Pi 5는 LLM+TTS 추론을 함께 수행하는 동안 짧은 전류 급증 구간에서 최대 약 5A를 끌어쓰며, 정상 상태에서도 약 15W를 사용합니다 . 20W 손잡이 크랭크 발전기는 버퍼가 없으면 필요한 전압 아래로 처지거나 과전류 보호가 걸립니다. Squeez Labs의 커스텀 커패시터/슈퍼커패시터 보드는 이런 하강을 완화하기 위해 약 20초 분량의 저장 전력을 제공합니다. 이 장치가 없으면 크랭킹을 잠깐 멈추는 것만으로도 브라운아웃 리셋이 발생하므로, 이 전력 완충 층은 선택 사항이 아닙니다 .

이 파이프라인에서 Moonshine ASR을 Whisper로 바꿀 수 있나요?

네. edge_voice_agent는 ASR을 교체 가능한 백엔드로 다루며, Moonshine의 드롭인 대안으로 FasterWhisper를 지원합니다. Nemo FastConformer와 Vosk도 함께 지원됩니다 . Whisper 계열 모델은 소음과 다양한 억양에 더 강합니다. 이는 Moonshine의 알려진 약점입니다. 다만 Pi 5 CPU에서는 더 느리게 실행됩니다. LLM과 Piper TTS 단계는 그대로 유지되므로, 지연 시간을 전사 정확도와 맞바꾸는 셈입니다 .

CrankGPT를 완성된 앱으로 구매하거나 다운로드할 수 있나요?

둘 다 아닙니다. Squeez Labs는 CrankGPT를 판매하지 않으며, 이 이름을 쓰는 어떤 토큰이나 밈 코인과도 관련이 없다고 명시합니다. 따라서 "buy CrankGPT" 목록은 의심스럽게 봐야 합니다 . 사전 빌드된 앱, 공개 가격, 전체 부품 명세서는 없습니다. 구성 요소가 되는 오픈소스 프로젝트들만 제공됩니다 . 사용하려면 edge_voice_agent를 클론하고, 부품을 따로 조달한 뒤, 원한다면 참고 설계를 바탕으로 크랭크 인클로저를 직접 만들면 됩니다.