-
스트리밍 음성 인식을 네이티브 환경과 브라우저 모두에서 실행할 수 있는 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가지 제약 조건을 해결
-
2GB 할당 제한 → ShardedCursor로 다중 버퍼 읽기
-
4GB 주소 공간 제한 → 2단계 로딩(파싱 후 리더 해제, 이후 최종화)
-
1.5GiB 임베딩 테이블 → GPU Q4 임베딩 + CPU 행 조회
-
GPU 동기 읽기 금지 → into_data_async().await 사용
-
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 테스트는 자동으로 샤드를 탐색
프로젝트 구조
-
src/audio: Mel 스펙트로그램, 리샘플링, 패딩
-
src/models: F32 모델(인코더, 디코더, 어텐션 등)
-
src/gguf: Q4 GGUF 로더, 텐서, WGSL 셰이더
-
src/web: WASM 바인딩 및 비동기 디코드 루프
-
web/: 브라우저 데모(UI, worker.js 등)
-
tests/: 통합 및 브라우저 E2E 테스트
라이선스 및 리소스