본문으로 건너뛰기

© 2026 Molayo

HN요약2026. 05. 01. 14:26

Show HN: C/C++ 기반 OpenAI Whisper 모델 포트

요약

OpenAI의 Whisper ASR 모델을 C/C++ 기반으로 포팅하여 고성능, 저지연 추론이 가능한 라이브러리를 공개했습니다. 이 구현은 의존성이 없고 다양한 아키텍처(Apple Silicon, x86, POWER 등)와 하드웨어 가속기(Metal, Vulkan, OpenVINO, NPU 등)를 지원하며, 정수 양자화 및 메모리 할당 최적화를 통해 온디바이스 환경에 최적화되었습니다. 이를 통해 개발자는 다양한 플랫폼에서 오프라인 음성 비서나 전사 애플리케이션을 쉽게 구축할 수 있습니다.

핵심 포인트

  • 순수 C/C++ 구현으로 의존성을 최소화하고 이식성을 극대화했습니다.
  • Apple Silicon (Metal), x86 (AVX), POWER 등 광범위한 아키텍처와 하드웨어 가속기를 지원합니다.
  • 정수 양자화, 메모리 할당 최적화 등을 통해 온디바이스 및 엣지 디바이스에 적합한 고성능 추론을 제공합니다.
  • Mac OS, iOS, Android, Linux 등 다양한 플랫폼에서 오프라인으로 작동하는 애플리케이션 개발이 가능합니다.

Show HN: C/C++ 기반 OpenAI Whisper 모델 포트

OpenAI 의 자동 음성 인식 (Automatic Speech Recognition, ASR) 모델인 Whisper 에 대한 고성능 추론:

  • 의존성 없는 순수 C/C++ 구현
  • Apple Silicon 을 위한 1 차 시민 - ARM NEON, Accelerate framework, Metal 및 Core ML 을 통한 최적화
  • x86 아키텍처를 위한 AVX 인트린시크 (intrinsics) 지원
  • POWER 아키텍처를 위한 VSX 인트린시크 (intrinsics) 지원
  • 혼합 F16 / F32 정밀도
  • 정수 양자화 (Integer quantization) 지원
  • 런타임 시 메모리 할당 없음
  • Vulkan 지원
  • CPU 전용 추론 지원
  • NVIDIA GPU 를 위한 효율적인 지원
  • OpenVINO 지원
  • Ascend NPU 지원
  • Moore Threads GPU 지원
  • C 스타일 API
  • 음성 활동 감지 (Voice Activity Detection, VAD)

지원되는 플랫폼:

  • Mac OS (Intel 및 Arm)
  • iOS
  • Android
  • Java
  • Linux / FreeBSD
  • WebAssembly
  • Windows (MSVC 및 MinGW)
  • Raspberry Pi
  • Docker

모델의 전체 고수준 구현은 whisper.hwhisper.cpp 에 포함되어 있습니다.
나머지 코드는 ggml 머신러닝 라이브러리 일부입니다.

이처럼 경량화된 모델 구현은 다양한 플랫폼 및 애플리케이션에 쉽게 통합할 수 있게 합니다. 예를 들어, iPhone 13 기기에서 완전히 오프라인, 온-디바이스로 모델을 실행하는 영상입니다: whisper.objc

whisper-iphone-13-mini-2.mp4

또한 쉽게 자체 오프라인 음성 비서 애플리케이션을 만들 수 있습니다: command

command-0.mp4

Apple Silicon 에서는 추론이 Metal 을 통해 완전히 GPU 에서 실행됩니다:

metal-base-1.mp4

먼저 저장소를 복제 (clone) 합니다:

git clone https://github.com/ggml-org/whisper.cpp.git

디렉토리로 이동합니다:

cd whisper.cpp

그런 다음 ggml 형식으로 변환된 Whisper 모델 중 하나를 다운로드합니다. 예를 들어:

sh ./models/download-ggml-model.sh base.en

이제 whisper-cli 예제를 빌드하고 다음과 같이 오디오 파일을 전사 (transcribe) 합니다:

# 프로젝트 빌드
cmake -B build
cmake --build build -j --config Release
# 오디오 파일 전사
./build/bin/whisper-cli -f samples/jfk.wav

간단한 데모를 위해 make base.en 을 실행하면 됩니다.
이 명령은 samples 폴더 내의 모든 .wav 샘플에서 추론을 수행하며, base.en 모델을 사용자 정의 ggml 형식으로 변환하여 다운로드합니다.

상세한 사용법 지침은 다음을 실행하세요: ./build/bin/whisper-cli -h

참고로, whisper-cli 예제는 현재 16 비트 WAV 파일과만 작동하므로, 도구를 실행하기 전에 입력 파일을 변환해야 합니다.
예를 들어 다음과 같이 ffmpeg 를 사용할 수 있습니다:

ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav

추가 오디오 샘플을 플레이하고 싶다면 다음을 실행하면 됩니다:

make -j samples

이 명령은 Wikipedia 에서 몇 가지 더 많은 오디오 파일을 다운로드하고 ffmpeg 를 통해 16 비트 WAV 형식으로 변환합니다.

다른 모델을 다운로드하고 실행하는 방법은 다음과 같습니다:

make -j tiny.en
make -j tiny
make -j base.en
make -j base
make -j small.en
make -j small
make -j medium.en
make -j medium
make -j large-v1
make -j large-v2
make -j large-v3
make -j large-v3-turbo
모델디스크메모리
tiny75 MiB

AI 자동 생성 콘텐츠

본 콘텐츠는 HN AI Research의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
2

댓글

0