transcribe.cpp v0.1.0: 고성능, 크로스 플랫폼 ASR 추론 엔진

transcribe.cpp v0.1.0: 고성능, 크로스 플랫폼 ASR 추론 엔진

transcribe.cpp v0.1.0은 로컬 자동 음성 인식(ASR)을 위한 통합된 하드웨어 가속 엔진을 제공합니다

transcribe.cpp v0.1.0은 ggml을 기반으로 구축된 C/C++ 전사 라이브러리로, 광범위한 모델에 대해 고성능 로컬 ASR 추론을 가능하게 합니다. 이 라이브러리는 다양한 하드웨어 백엔드를 지원하고 수치적으로 검증된 방대한 모델 라이브러리를 제공하는 단일 엔진을 제공함으로써, 크로스 플랫폼 음성-텍스트 변환 애플리케이션의 배포 문제를 해결하도록 설계되었습니다.

핵심 기술 역량

광범위한 모델 지원 및 수치적 검증

transcribe.cpp는 16개의 서로 다른 ASR 제품군에 걸쳐 60개 이상의 모델을 지원합니다. 신뢰성을 보장하기 위해, handy-computer Hugging Face 조직 아래에 게시된 모든 모델은 참조 구현체와 비교하여 수치적으로 검증되었으며, 수천 개의 발화에 대해 단어 오류율(WER) 스윕을 거쳤습니다. 이 프로세스는 로컬 추론 출력이 참조 구현체의 정확도와 일치하도록 보장합니다.

하드웨어 가속

이 라이브러리는 다양한 하드웨어 구성에서 빠른 추론을 보장하기 위해 폭넓은 가속 지원을 제공합니다:

  • Vulkan: 로컬 추론 배포를 위한 베이스라인으로 타겟팅되었습니다.
  • Metal: Apple Silicon (M-series chips)에 최적화되었습니다.
  • CUDA: NVIDIA GPU에 최적화되었습니다.
  • TinyBLAS: CPU 기반 가속을 위해 사용됩니다.

성능을 검증하기 위해 M4 Max와 Fedora의 Ryzen 4750U(CPU + Vulkan 사용)에서 벤치마크가 수행되었습니다.

통합 및 배포

whisper.cpp보다 더 유연한 대안으로 설계된 transcribe.cpp는 whisper.cpp에서 사용되는 인기 있는 .bin 파일과 호환성을 유지하므로, 많은 사용 사례에서 거의 즉시 교체 가능한(drop-in replacement) 솔루션이 됩니다. 데스크톱 및 모바일 애플리케이션 통합을 용이하게 하기 위해, 유지 관리자는 네 가지 언어에 대한 퍼스트 파티 바인딩을 제공합니다:

  • Python
  • JavaScript/TypeScript
  • Rust
  • Objective-C/Swift

설계 동기: ASR 배포 문제 해결

transcribe.cpp의 개발은 파편화된 추론 스택에 의존하지 않고 Handy 애플리케이션을 배포하려는 필요성에 의해 추진되었습니다. 저자는 현재의 환경이 개발자들로 하여금 whisper.cpp와 ONNX 중 하나를 선택하거나, 서로 다른 플랫폼(예: Apple 기기를 위한 MLX)을 위해 별도의 엔진을 관리하도록 강요하는 경우가 많다고 언급합니다.

ggml을 활용함으로써, transcribe.cpp는 PyTorch와 같은 대형 프레임워크의 오버헤드를 피하면서 GPU 가속을 유지하는 동시에 Mac, Windows, Linux에서 추론을 실행할 수 있는 일관된 배포 환경을 제공하는 것을 목표로 합니다.

커뮤니티 인사이트 및 기술적 고려 사항

커뮤니티 토론에서는 라이브러리에 대한 몇 가지 주요 관심 분야와 잠재적인 미래 개발 사항이 강조되었습니다:

  • 성능 격차: 사용자들이 백엔드 간의 상당한 성능 차이를 언급했으며, 일부는 특정 환경에서 Metal이 Vulkan보다 실질적으로 더 빠르다고 관찰했습니다.
  • Diarization 및 Speaker ID: 여러 사용자가 라이브러리에 speaker separation(diarization) 및 speaker identification을 추가하는 가장 쉬운 방법이 무엇인지 문의했으며, 이는 로컬 STT 워크플로우에서 이러한 기능에 대한 수요가 있음을 시사합니다.
  • 배포: Python 바인딩이 존재하지만, 커뮤니티 멤버들은 아직 PyPI에 의존성이 포함된 binary wheels 형태로 제공되지 않는다는 점을 점검했습니다. 다만, 이는 향후 출시될 예정입니다.
  • ONNX 비교: 저자는 ONNX 배포의 어려움을 강조했지만, 일부 사용자는 ONNX Runtime이 NVIDIA GPU를 위해 TensorRT로 디스패치할 수 있다고 지적했습니다. 이는 ggml을 ONNX 대신 선택한 이유가 특정하고 통합된 경량 크로스 플랫폼 경험을 위한 필요성에 의한 것임을 시사합니다.

"I think as we look forward to the future, more inference will start happening locally for one reason or other. This brings the distribution story front and center. In order to have more applications running inference locally, we need to make running inference easier."

프로젝트 지원

transcribe.cpp는 Mozilla AI (via the BiR program), Modal (for CUDA WER testing), Blacksmith (for CI/CD), 그리고 Hugging Face (for model storage)의 지원을 받으며 개발되었습니다.

Sources