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.h 와 whisper.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
| 모델 | 디스크 | 메모리 |
|---|---|---|
| tiny | 75 MiB |
AI 자동 생성 콘텐츠
본 콘텐츠는 HN AI Research의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기