Lightning-SimulWhisper: Apple Silicon용 초고속 실시간 로컬 음성 인식 엔진 (feat. Whisper)

Lightning-SimulWhisper 소개

Lightning-SimulWhisper는 Apple Silicon(M1, M2, M3, M4 등) 기반 디바이스에서 Whisper 모델을 실시간으로 동작시키기 위해 설계된 초고속 로컬 음성 인식 시스템입니다. 이 프로젝트는 기존 Whisper의 성능 한계를 극복하기 위해 Apple의 머신러닝 프레임워크 MLXCoreML을 결합하여, 전례 없는 속도와 전력 효율을 달성한 것이 특징입니다.

특히 PyTorch 기반의 Whisper보다 최대 18배 빠른 인코딩15배 빠른 디코딩 속도를 자랑하며, Zero PyTorch Dependencies를 선언한 순수 Apple 생태계 친화적 구현체입니다. 이 덕분에 MacBook, iMac 등 Apple Silicon 기반 기기에서 Whisper의 ‘실시간 스트리밍 변환’이 가능해졌습니다.

Lightning-SimulWhisper의 핵심은 “Simultaneous Speech Recognition(동시 음성 인식)”을 지원하는 점입니다. 즉, 사용자가 말을 하는 도중에도 Whisper가 이를 실시간으로 분석하고, 텍스트로 변환해 나가는 구조를 가지고 있습니다. 이러한 방식은 특히 회의 실시간 자막, 통역 시스템, 음성 비서 서비스 등에 활용하기 적합합니다.

Lightning-SimulWhisper는 기존 OpenAI의 Whisper 및 SimulStreaming 프로젝트의 속도와 효율 문제를 개선하기 위해 등장했습니다. 기존 SimulStreaming 프로젝트는 base 모델조차 실시간으로 구동하기 어려웠던 반면, Lightning-SimulWhisper는 medium 혹은 large-v3-turbo 모델까지 실시간으로 구동할 수 있습니다.

비교 결과, PyTorch 기반 Whisper와의 성능 차이는 다음과 같습니다:

  • 인코딩 속도: CoreML 기반 인코더 사용 시 최대 18배 빠름
  • 디코딩 속도: MLX 기반 디코더 사용 시 최대 15배 빠름
  • 전력 효율: CoreML의 Neural Engine 가속 덕분에 CPU/GPU 의존도를 줄여 배터리 소모를 최소화
  • 모델 지원 범위: tiny, base, small, medium, large-v1/v2/v3 등 Whisper의 모든 주요 모델 대응

이로 인해 Lightning-SimulWhisper는 Whisper.cpp나 WhisperX 등과 달리, Apple Silicon 전용의 완전한 최적화 버전이라는 점에서 차별성을 가집니다.

Lightning-SimulWhisper의 주요 기능

Lightning-SimulWhisper는 다음과 같은 핵심 기능을 제공합니다:

  • MLX 기반 구현체: Apple Silicon용 MLX 프레임워크를 활용한 완전 최적화 디코더
  • CoreML 인코더 가속: Apple Neural Engine(ANE)을 활용하여 인코딩 속도 18배 향상
  • AlignAtt 정책 적용: 최첨단 실시간 음성 디코딩 알고리즘을 이용한 자연스러운 스트리밍
  • 다중 모델 지원: Whisper의 모든 크기 모델(tiny~large-v3) 지원
  • Beam Search 디코딩: 빔 탐색 기반의 고품질 텍스트 생성 가능
  • 실시간 스트리밍: 파일 기반 시뮬레이션 및 마이크 입력 기반 실시간 음성 인식 지원
  • 저전력 최적화: CoreML 가속 사용 시 전력 소모가 대폭 감소

Lightning-SimulWhisper 설치

Lightning-SimulWhisper 프로젝트의 GitHub 저장소를 복제(clone)하여 다음과 같이 설치할 수 있습니다:

pip install -r requirements.txt

더 빠르게 사용하기 위해서는 CoreML 가속을 추가로 설치하는 것을 권장합니다:

pip install coremltools ane_transformers

이후, 사용하고자 하는 Whisper 모델을 CoreML을 위한 모델로 변환합니다. 다음과 같은 스크립트에 모델명을 추가하여 실행합니다:

# whisper.cpp 프로젝트를 복제합니다:
git clone https://github.com/ggml-org/whisper.cpp.git

# whisper.cpp 프로젝트 내의 스크립트를 사용하여 모델을 변환합니다:
./scripts/generate_coreml_encoder.sh [WhisperModel]

지원하는 모델은 다음과 같습니다: tiny.en, tiny, base.en, base, small.en, small, medium.en, medium, large-v1, large-v2, large-v3, large-v3-turbo


또한, torchaudio를 제거하면 Silero VAD(음성활성감지) 기능이 비활성화되어 설치가 더욱 가벼워집니다.

Lightning-SimulWhisper 사용 예시

CoreML 가속 기본 실행

python3 simulstreaming_whisper.py audio.wav \
  --model_name base.en \
  --model_path mlx_base \
  --use_coreml \
  --language en

Beam Search와 CIF 모델 적용

python3 simulstreaming_whisper.py audio.wav \
  --model_name medium \
  --model_path mlx_medium \
  --use_coreml \
  --beams 3 \
  --cif_ckpt_path cif_model/medium.npz \
  --language en

한국어 실시간 변환 예시

python simulstreaming_whisper.py test.mp3 \
  --language ko \
  --vac \
  --vad_silence_ms 1000 \
  --beams 3 \
  --cif_ckpt_path cif_model/medium.npz \
  --model_name medium \
  --model_path mlx_medium \
  --use_coreml \
  --coreml_compute_units CPU_AND_NE

Lightning-SimulWhisper 아키텍처 개요

Lightning-SimulWhisper는 MLX 디코더 + CoreML 인코더 구조의 하이브리드 아키텍처로 구성됩니다.

Audio Input (16kHz mono)
    ↓
Mel Spectrogram (MLX)
    ↓
┌─────────────────────┐
│  CoreML Encoder     │ ← Apple Neural Engine (최대 18배 빠름)
└─────────────────────┘
    ↓
Encoder Features (MLX 변환)
    ↓
┌─────────────────────┐
│  MLX Decoder        │ ← Beam Search, AlignAtt 등 고급 디코딩
└─────────────────────┘
    ↓
Transcription Output

이러한 설계 덕분에 인코딩은 Neural Engine이, 디코딩은 MLX 프레임워크가 담당하여 성능과 효율의 균형을 극대화합니다.

라이선스

Lightning-SimulWhisper 프로젝트는 MIT License로 공개되어 있으며, 상업적 사용에도 제약이 없습니다.

:github: Lightning-SimulWhisper 프로젝트 GitHub 저장소

더 읽어보기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck:

1개의 좋아요