# Mistral Voxtral Realtime 4B 음성 인식 모델의 순수 C 기반 CPU 전용 추론 구현

> Clean Markdown view of GeekNews topic #26608. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=26608](https://news.hada.io/topic?id=26608)
- GeekNews Markdown: [https://news.hada.io/topic/26608.md](https://news.hada.io/topic/26608.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-02-12T05:33:59+09:00
- Updated: 2026-02-12T05:33:59+09:00
- Original source: [github.com/antirez](https://github.com/antirez/voxtral.c)
- Points: 13
- Comments: 1

## Summary

**Mistral Voxtral Realtime 4B** 모델을 **순수 C 기반으로 구현한 Voxtral.c**는 외부 의존성 없이 동작하는 독립형 음성 인식 엔진입니다. **Metal GPU 가속**과 **BLAS 백엔드**를 지원해 macOS와 Linux 모두에서 효율적으로 실행되며, **스트리밍 API**를 통해 실시간 오디오 입력과 토큰 출력을 처리합니다. 메모리 매핑된 BF16 가중치와 **롤링 KV 캐시** 구조로 긴 오디오 입력에서도 일정한 메모리 사용을 유지하며, Apple M3 Max 기준 실시간보다 약 2.5배 빠른 속도를 달성합니다.

## Topic Body

- **Mistral Voxtral Realtime 4B** 모델을 **C 언어만으로 구현한 추론 파이프라인**으로, 외부 의존성이 전혀 없는 독립 실행형 구조  
- **Metal GPU 가속(MPS)** 과 **BLAS(OpenBLAS/Accelerate)** 백엔드를 지원하며, **스트리밍 API**를 통해 실시간 음성 입력과 토큰 출력을 처리  
- **메모리 매핑된 BF16 가중치**, **슬라이딩 윈도우 기반 인코더**, **롤링 KV 캐시**로 긴 오디오 입력에서도 메모리 사용을 일정하게 유지  
- **마이크 입력**, **stdin 파이프**, **ffmpeg 변환**을 통한 다양한 오디오 입력 방식 지원, **대체 토큰 표시**와 **지연 조절 옵션(-I)** 제공  
- **MIT 라이선스**로 공개되었으며, **Apple M3 Max 기준 실시간보다 약 2.5배 빠른 속도**를 달성해 경량화된 로컬 음성 인식 구현 가능  

---
### Voxtral.c 개요
- **Mistral AI의 Voxtral Realtime 4B 모델**을 위한 **순수 C 기반 추론 엔진**으로, C 표준 라이브러리 외에는 의존성이 없음  
  - **MPS 백엔드**는 빠른 추론 속도를 제공하며, **BLAS(OpenBLAS/Accelerate)** 는 CPU 기반 환경에서 동작  
  - **Python 런타임, CUDA, vLLM** 없이도 완전한 로컬 추론 가능  
- **python_simple_implementation.py** 파일을 통해 단순한 **Python 참조 구현**도 함께 제공  
  - PyTorch, safetensors, soundfile, soxr만 필요  

### 주요 기능
- **Zero dependencies**: 외부 라이브러리 없이 C만으로 실행 가능  
- **Metal GPU 가속**: Apple Silicon 환경에서 자동 활성화, GPU 연산 융합 및 배치된 어텐션 처리  
- **스트리밍 출력**: 생성된 토큰이 즉시 stdout으로 출력  
- **Streaming C API**: 오디오를 순차적으로 입력하고, 토큰 문자열을 실시간으로 수신  
- **메모리 매핑 가중치**: safetensors 파일을 mmap으로 직접 로드, 즉시 사용 가능  
- **마이크 입력 지원(macOS)** : 자동 무음 감지 기능 포함  
- **Chunked Encoder**: 오디오를 겹치는 청크 단위로 처리해 메모리 사용량 일정 유지  
- **Rolling KV Cache**: 8192 포지션 슬라이딩 윈도우로 캐시 자동 압축, 무제한 길이 오디오 처리 가능  

### 사용 방법
- **기본 명령어**
  - `./voxtral -d voxtral-model -i audio.wav` : 파일 기반 음성 인식  
  - `./voxtral -d voxtral-model --from-mic` : 마이크 입력 실시간 인식(macOS)  
  - `ffmpeg` 파이프를 통해 다양한 오디오 포맷 입력 가능  
- **대체 토큰 표시**
  - `--alt &lt;cutoff&gt;` 옵션으로 유사 발음 후보를 함께 표시  
  - `cutoff` 값이 높을수록 더 많은 후보 표시  
- **지연 조절 (-I 옵션)** 
  - 인코더 호출 주기를 초 단위로 설정  
  - 낮은 값(예: 0.5초)은 낮은 지연, 높은 GPU 부하 / 높은 값(예: 5초)은 효율적 처리  
  - 기본값은 2.0초, 실시간 스트리밍에는 1.0~2.0초 권장  

### C API 구조
- **vox_stream_t** 기반 스트리밍 API 제공  
  - `feed()` : 오디오 입력  
  - `get()` : 토큰 수신  
  - `finish()` : 남은 오디오 처리  
  - `flush()` : 버퍼 강제 처리  
- **vox_stream_set_alt()** 로 대체 토큰 수 설정 가능  
- **vox_transcribe()** 함수로 단일 파일 일괄 처리 가능  

### 모델 다운로드 및 구성
- **HuggingFace**에서 약 8.9GB의 모델 가중치 다운로드  
  - `consolidated.safetensors` (BF16 가중치)  
  - `tekken.json` (토크나이저 어휘)  
  - `params.json` (모델 설정)  
- **Apache-2.0 라이선스** 모델, **MIT 라이선스** 코드  

### 성능 벤치마크
- **Apple M3 Max (40코어 GPU, 128GB RAM)** 기준  
  - MPS 백엔드: 인코더 284ms, 디코더 23.5ms/스텝  
  - BLAS 백엔드: 인코더 약 8초, 디코더 335ms/스텝  
- **60초 오디오 기준 평균 31.6ms/스텝**, 실시간보다 약 **2.5배 빠른 속도**  
- 디코더는 **Metal 커맨드 버퍼 단일 호출**로 토큰당 전체 연산 수행  

### 모델 아키텍처
- **총 40억 파라미터(4B)** 규모의 스트리밍 음성-텍스트 모델  
  - **오디오 인코더**: 32층 causal transformer, 1280차원, 32헤드, 윈도우 750  
  - **어댑터**: Linear(5120→3072) → GELU → Linear(3072→3072)  
  - **LLM 디코더**: 26층 transformer (Ministral-3 기반), 3072차원, GQA(32헤드/8KV)  
- **Tekken 토크나이저**, 어휘 크기 131,072  
- **지원 언어**: 영어, 스페인어, 프랑스어, 포르투갈어, 힌디어, 독일어, 네덜란드어, 이탈리아어, 아랍어, 러시아어, 중국어, 일본어, 한국어  

### 메모리 요구사항
- **모델 가중치**: 8.9GB (온디맨드 mmap)  
- **GPU 캐시**: 약 8.4GB (BF16→F16 변환 후)  
- **KV 캐시**: 최대 1.8GB (슬라이딩 윈도우 제한)  
- **작업 버퍼**: 약 200MB  

### 빌드 및 플랫폼
- **macOS Apple Silicon**: `make mps` (가장 빠름)  
- **macOS Intel / Linux(OpenBLAS)** : `make blas`  
- **Ubuntu/Debian**: `sudo apt install libopenblas-dev`  
- **Fedora**: `sudo dnf install openblas-devel`  

### 라이선스
- **코드**: MIT  
- **모델**: Apache-2.0  
- 오픈소스 형태로 누구나 수정 및 재배포 가능

## Comments



### Comment 51025

- Author: neo
- Created: 2026-02-12T05:33:59+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=46954049) 
- 나는 오픈소스 앱 [**Handy**](https://github.com/cjpais/Handy)와 Parakeet V3를 조합해 STT(음성 인식)를 사용하고 있음  
  속도와 정확도 면에서 이 조합을 능가하는 걸 아직 못 봤음. 거의 즉시 전사되고, 약간의 정확도 손실은 AI가 **맥락을 읽는 능력** 덕분에 문제되지 않음  
  Voxtral C 구현체를 Handy에 통합해봤지만, M1 Max MacBook(64GB)에서는 전사가 너무 느렸음. 다른 구현체들도 시도해볼 예정임
  - Handy는 훌륭하지만 STT가 **실시간**이 아니라 배치 처리 방식인 게 아쉬움

- 나는 Salvatore의 **voxtral.c**와 **flux2.c** 프로젝트의 팬임  
  외부 의존성 없이 가볍게 동작하는 옵션으로 계속 최적화되길 바람. 하지만 현재는 실제 사용엔 너무 느림 (AMD 7800X3D/Blas 환경 기준)  
  llms-py의 [Voice Input 기능](https://llmspy.org/docs/features/voice-input)을 추가할 때 Omarchy의 **voxtype.io** 지원이 UX 면에서 가장 좋았고, 그다음이 Whisper.cpp였음  
  OpenAI Whisper는 느리지만 여전히 안정적인 로컬 전사 옵션임  
  또 Mistral의 [**Voxtral Transcription API**](https://docs.mistral.ai/models/voxtral-mini-transcribe-26-02)는 속도와 가격 면에서 인상적이었음 — 분당 $0.003로 매우 빠르고 저렴함. CPU나 디스크 제약이 있는 환경에서 최고의 선택이라 생각함
  - 모델 자체는 훌륭하지만 로컬 추론에는 너무 큼. Whisper medium이 품질은 낮지만 **환경 적합성** 면에서는 더 나음  
    이제 새로 나온 Qwen 0.6 전사 모델을 테스트해보려 함. 벤치마크대로라면 CPU 전용 최적화와 **8bit 양자화**까지 고려한 경량 체인으로 발전할 가능성이 큼  
    Hetzner 같은 서버 임대 환경에서도 설치 가능해야 하므로, Intel·AMD·ARM 세트별 최적화를 시도할 예정임
  - 나는 말하면서 동시에 전사되는 **시각적 피드백**이 필요함. voxtype이 그걸 지원하는지 궁금함  
    Handy는 오버레이 기능이 있다고 하지만 내 시스템에서는 작동하지 않음
  - voxtype과 Whisper-base 모델 조합에 한 표 던짐. 꽤 빠르고 정확함

- Linux에서 설치는 쉬웠지만 Whisper.cpp나 Moonshine처럼 **실시간 전사**는 아직 안 됨  
  `--from-mic` 옵션이 Mac만 지원해서 ffmpeg로 오디오를 캡처해봤지만 마이크 입력 연결은 실패했음  
  내 시스템이 기본 모델을 돌리기엔 사양이 부족한 듯함.  
  [voxtral-q4.gguf 모델](https://huggingface.co/TrevorJS/voxtral-mini-realtime-gguf)을 써보고 싶음
  - Linux에서 테스트해보니 이 모델은 **실시간 전사에는 너무 느림**. 12분짜리 입력 파일을 처리하는 데 반나절이 걸렸음  
  - 마이크뿐 아니라 **모니터 포트 오디오**도 캡처해서 웹 오디오를 실시간 전사로 파이프라인 처리하고 싶음  
    Audacity나 OBS Studio로는 녹음이 되니, 실시간도 가능할 것 같음  
  - ffmpeg로 파일에서 오디오를 읽어 voxtral로 넘기면 작동할지도 모름  
    개인적으로는 file→ffmpeg→voxtral, 그다음 mic→ffmpeg→file, 마지막으로 mic→ffmpeg→voxtral 순으로 시도해볼 것 같음

- 제목에는 CPU 전용이라고 되어 있지만, 실제로는 **GPU 가속**도 지원함. 저장소 설명에 명확히 나와 있음

- 이 프로젝트와 Rust 런타임 구현체가 동시에 HN 메인에 올라와 있음. **흥미로운 경쟁 구도**임

- MLX 버전 구현체도 있음 → [voxmlx](https://github.com/awni/voxmlx)

- 나는 **음성-텍스트(STT)** 분야에 관심이 많음  
  다양한 억양과 전문 용어가 섞인 데이터를 다루고 싶은데, 내가 가진 대규모 음성 샘플 데이터로 모델을 학습하려면 어디서부터 시작해야 할지 모르겠음. 조언을 구함

- 16GB M3 MacBook Pro에서 실행해봤는데, 로딩은 되지만 **멈추거나 너무 느림**

- 20년 전에는 200MB 정도로 가능했던 일을 이제는 **9GB 모델**이 필요하다는 게 이상하게 느껴짐
