# Mistral의 Voxtral Mini 4B Realtime 모델을 Rust로 구현해 브라우저에서 실행

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

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=26595](https://news.hada.io/topic?id=26595)
- GeekNews Markdown: [https://news.hada.io/topic/26595.md](https://news.hada.io/topic/26595.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-02-11T10:04:12+09:00
- Updated: 2026-02-11T10:04:12+09:00
- Original source: [github.com/TrevorS](https://github.com/TrevorS/voxtral-mini-realtime-rs)
- Points: 4
- Comments: 1

## Topic Body

- **스트리밍 음성 인식**을 네이티브 환경과 브라우저 모두에서 실행할 수 있는 **Rust 기반 구현체**로, Burn ML 프레임워크를 사용  
- 모델은 **Mistral의 Voxtral Mini 4B Realtime**을 기반으로 하며, **WASM + WebGPU**를 통해 브라우저 탭에서 완전한 클라이언트 측 추론 수행  
- **Q4 GGUF 양자화 모델(2.5GB)** 은 브라우저에서 실행 가능하며, **SafeTensors 기반 F32 모델(9GB)** 은 네이티브 환경에서 동작  
- 브라우저 제약(2GB 할당, 4GB 주소 공간, GPU 읽기 제한 등)을 해결하기 위해 **샤딩, 2단계 로딩, 비동기 텐서 처리** 등의 기술 적용  
- Apache-2.0 라이선스로 공개되어 있으며, **HuggingFace Spaces**에서 실시간 데모를 체험할 수 있음  
  
---  
### Voxtral Mini 4B Realtime (Rust) 개요  
- **Mistral의 Voxtral Mini 4B Realtime 모델**을 **Rust와 Burn ML 프레임워크**로 완전 구현  
  - 스트리밍 음성 인식을 **로컬 및 브라우저 환경**에서 실행 가능  
  - 브라우저 버전은 **WASM(WebAssembly)** 과 **WebGPU**를 활용해 클라이언트 측에서 동작  
- **Q4 GGUF 양자화 모델(약 2.5GB)** 은 브라우저에서 실행되며, **F32 SafeTensors 모델(약 9GB)** 은 네이티브 환경에서 사용  
- HuggingFace Spaces에서 **실시간 데모** 제공  
  
### 아키텍처  
- 입력 오디오(16kHz mono)는 **Mel 스펙트로그램**으로 변환된 후, **인코더(32층)** 와 **디코더(26층)** 를 거쳐 텍스트로 변환  
- 주요 처리 단계  
  - Mel 스펙트로그램 → 인코더(32층, 1280차원) → Conv 4x 다운샘플 → 어댑터(3072차원) → 디코더(GQA 32Q/8KV)  
- **두 가지 추론 경로** 제공  
  - F32(native): SafeTensors 기반, Burn 텐서 연산 사용  
  - Q4 GGUF(native + browser): GGUF Q4_0 양자화, 커스텀 WGSL 셰이더 사용  
  
### 브라우저 실행을 위한 기술적 해결  
- 브라우저 내 4B 모델 실행을 위해 **5가지 제약 조건**을 해결  
  1. **2GB 할당 제한** → `ShardedCursor`로 다중 버퍼 읽기  
  2. **4GB 주소 공간 제한** → 2단계 로딩(파싱 후 리더 해제, 이후 최종화)  
  3. **1.5GiB 임베딩 테이블** → GPU Q4 임베딩 + CPU 행 조회  
  4. **GPU 동기 읽기 금지** → `into_data_async().await` 사용  
  5. **256 워크그룹 제한** → cubecl-wgpu 패치로 커널 크기 제한  
  
### Q4 패딩 보정  
- 기본 mistral-common은 오디오를 **32개의 무음 토큰**으로 패딩하지만, 이는 디코더의 38개 프리픽스 중 절반만 커버  
- Q4_0 양자화 모델은 이로 인해 **음성이 바로 시작되는 입력에서 오류 발생**  
- 이를 해결하기 위해 **패딩을 76 토큰(=38 디코더 토큰)** 으로 확장해 전체 프리픽스를 무음으로 채움  
  
### 빌드 및 테스트  
- **빌드 옵션**  
  - 기본: `cargo build --release` (wgpu + native-tokenizer)  
  - 브라우저용: `wasm-pack build --target web --features wasm`  
- **테스트**  
  - GPU 기반 단위 및 통합 테스트 지원  
  - E2E 브라우저 테스트는 **Playwright + 실제 GPU 환경**에서 수행  
  - CI에서는 GPU가 없어 관련 테스트는 생략  
  
### 모델 준비 및 샤딩  
- 브라우저의 `ArrayBuffer` 제한(512MB 이하)을 위해 **GGUF 파일을 샤드 단위로 분할**  
  ```  
  split -b 512m models/voxtral-q4.gguf models/voxtral-q4-shards/shard-  
  ```  
- 개발 서버와 E2E 테스트는 자동으로 샤드를 탐색  
  
### 라이선스 및 리소스  
- **Apache-2.0 라이선스**  
- HuggingFace Spaces에서 **브라우저 데모** 제공: [TrevorJS/voxtral-mini-realtime](https://huggingface.co/spaces/TrevorJS/voxtral-mini-realtime)

## Comments



### Comment 50975

- Author: neo
- Created: 2026-02-11T10:04:12+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=46954136) 
- 사람들이 관심 있다면, @antirez가 **Voxtral Mini 4B의 C 구현체**를 공개했음  
  [antirez/voxtral.c](https://github.com/antirez/voxtral.c)에서 확인 가능함  
  나는 [내 포크 버전](https://github.com/HorizonXP/voxtral.c)을 만들어 **CUDA 구현**과 몇 가지 개선 기능을 추가 중임  
  꽤 잘 작동하지만 아직 Mistral AI의 API 엔드포인트 속도에는 미치지 못함
  - 이런 **추론 코드나 CUDA 구현** 같은 걸 시작하려면 어떻게 공부를 시작해야 하는지 궁금함  
    바로 코드를 짜는 게 아니라 관련 자료를 읽고 배워야 할 것 같은데, 참고할 만한 가이드가 있으면 좋겠음
  - 또 다른 Mistral 구현체로 [mistral.rs](https://github.com/EricLBuehler/mistral.rs)가 있음  
    차이는 잘 모르겠지만 커뮤니티 반응은 이쪽이 더 좋은 듯함

- 데모를 써보니 **Mic 버튼을 눌러 녹음 후 “Stop and transcribe”** 를 눌러야 결과가 나옴  
  사용자가 말한 뒤 1~2초 내에 바로 자막이 뜨는 **진짜 실시간 모드**로 만들 수 있을까 궁금함  
  [Hugging Face의 서버 데모](https://huggingface.co/spaces/mistralai/Voxtral-Mini-Realtime)는 GPU 기반의 8.5GB 모델로 그걸 구현하고 있음
  - 지금 속도로는 완전한 실시간은 어려움  
    다만 **링 버퍼 기반 UI**를 만들면 비슷하게 구현 가능함  
    나는 Flutter에서 Whisper를 이렇게 쓰고 있고, llama.cpp의 GGUF 추론도 Dart로 돌림  
    M4 Max에서도 실시간은 아니고, Whisper는 2022년 이후 기기에서 ONNX로 거의 실시간임  
    소비자 하드웨어에서는 정확도(WER) 향상보다 **추론 속도**가 더 중요하다고 생각함

- 이런 **온프레미스 오픈 모델**이야말로 진짜 필요한 방향임  
  사용자와 기업 모두 이런 형태를 선호함. Mistral이 그걸 잘 잡은 듯함
  - Mistral이 **RedHat의 전환점** 같은 순간을 맞을 수도 있음  
    오픈 모델의 시대는 이제 더 흥미로워질 것 같음

- 멋진 작업임. **handy.computer**와 연동되면 좋겠고, **스트리밍 지원** 계획이 있는지도 궁금함
  - 이걸 **transcribe-rs**로 포팅해서 Handy에서 쓸 수 있게 하려 함  
    첫 버전은 아마 스트리밍은 지원하지 않을 듯함
  - Handy를 써봤는데 이전 솔루션보다 훨씬 **가볍고 깔끔한 UI**였음  
    덕분에 좋은 툴을 알게 되었고, 이제는 Voxtral 지원이 정말 필요하다고 느낌

- 나는 모델에 대해 잘 모르지만 **Nvidia Parakeet**을 써봤는데 아주 잘 작동함  
  이런 9GB짜리 모델은 실시간으로 쓰려면 GPU 메모리에 계속 올려둬야 하는지, 아니면 매번 로드해도 되는지 궁금함
  - 나도 Parakeet V3를 쓰는데, **속도와 정확도 밸런스**가 최고임  
    짧은 문장은 거의 즉시, 긴 문장은 1~3초 내에 변환됨  
    약간의 정확도 손실은 AI와 대화하는 용도에서는 무의미함  
    Handy라는 오픈소스 앱([링크](https://github.com/cjpais/Handy))에서 Parakeet V3를 사용 중인데, C 구현체는 훨씬 느렸음  
    STT에서는 **속도**가 UX의 핵심임
  - 나는 **ollama 서버**를 돌리는데 모델 로딩은 꽤 빠름  
    지연은 새 모델을 불러올 때나 큰 컨텍스트를 교체할 때 생김  
    대부분은 이미 모델이 로드되어 있어서 **tokens per second**가 주요 변수임  
    여러 에이전트를 쓰는 복잡한 구조에서는 컨텍스트 교체 때문에 느려짐  
    ik_llama의 **프롬프트 캐싱**이 이런 상황에서 속도를 높여줌  
    요약하자면, 자주 모델이나 컨텍스트를 바꾸지 않는 한 **가중치 로딩 지연은 큰 문제 아님**임

- 브라우저 탭 하나가 **2.5GB 모델을 다운로드**하고 곧 삭제되는 구조가 효율적인지 의문임  
  인터넷 속도나 저장공간이 싸졌다고 해도, 이런 방식은 낭비처럼 느껴짐  
  클라이언트 측 연산은 좋지만, 이 정도 크기의 모델은 **서버에서 돌리는 게 맞는 것 같음**
  - 현재 브라우저 환경에서는 로컬 모델이 대중화되기 어려움  
    하지만 **LLM용 웹 API 표준**이 생기면 달라질 수 있음  
    브라우저가 사용자의 선호 모델과 통신해 로컬/원격 추론을 추상화하면, 사이트마다 모델을 공유할 수 있음
  - 새로운 기술에는 항상 불만이 따름  
    2026년에 2.5GB 로컬 모델이 문제라면, 이제 안전하다고 할 게 뭐가 있을까 싶음  
    불가능→중앙집중→로컬로 발전했는데, 그 대가가 2.5GB라면 충분히 감당 가능한 수준임

- 브라우저에서 돌아가는 건 멋지지만, **웹사이트가 백그라운드에서 2.5GB를 다운로드**하는 세상은 원치 않음
  - 나는 **Gemini Nano**(Chrome 내장 AI 모델)와 서버 기반 솔루션을 비교해봤음  
    Nano는 **로컬 스토리지에 저장되어 사이트 간 공유**되므로 한 번만 다운로드하면 됨  
    Mistral은 그렇지 않은 듯함  
    관련 통계는 [이 블로그 글](https://sendcheckit.com/blog/ai-powered-subject-line-alternatives#the-numbers)에 정리되어 있음
  - 물론 웹페이지 방문 시 자동으로 다운로드되는 건 원치 않지만,  
    **패키지 설치나 실행파일 다운로드**보다 브라우저 샌드박스 환경이 더 안전하다고 생각함
  - 이미 정적 랜딩 페이지 하나 띄우는 데도 수십 MB를 로드하는 세상임  
    곧 이런 것도 익숙해질 것임 :-)

- 내 환경(Firefox, Asahi Linux, M1 Pro)에서는 **오작동**함  
  “hello”를 말했더니 1분쯤 후에 이상한 단어들이 반복 출력됨

- 단순한 질문인데, **Mistral 같은 오픈모델**이 OpenAI나 Anthropic과 비교하면 어느 정도 수준인지 궁금함  
  개인용 머신에서 **프라이빗하게 LLM 기능**을 쓸 수 있을 정도인지,  
  아니면 아직 상용 모델보다 한참 부족한 단계인지 알고 싶음

- 흥미로운 프로젝트고, **burn 프레임워크**가 쓰인 것도 반가움  
  하지만 Chromium 최신 버전에서 실행했더니 시스템이 멈추고 OS가 강제 종료함  
  모델 다운로드 직후 VPN 연결도 끊겼는데, 대역폭 제한이 없어서 이유를 모르겠음
