altunenes/parakeet-rs

very fast speech-to-text, diarization, streaming (even in CPU) with NVIDIA Parakeet in Rust

parakeet‑rs – Rust에서 빠른 음성 인식

무엇인가요parakeet‑rs는 ONNX Runtime을 통해 NVIDIA의 Parakeet 음성 인식 모델(CTC, TDT, 스트리밍, 다국어, 발화자 분리 등)을 실행할 수 있는 Rust 라이브러리입니다. ONNX 파일을 로드하고, 16kHz 단일 채널 오디오를 입력받아, 선택적 타임스탬프와 발화자 레이블을 포함한 텍스트로 변환하는 직관적인 API를 제공합니다.

왜 중요한가요 – 원본 Parakeet 모델은 대규모이고 고품질의 ASR 모델이며 GPU에서 실행됩니다. parakeet‑rs는 Python이나 무거운 딥러닝 프레임워크를 포함하지 않고도 네이티브 Rust 프로그램에서 이러한 모델을 사용할 수 있게 해주며, CUDA, TensorRT, WebGPU, DirectML, MIGraphX, CPU 등 다양한 실행 제공자(execution provider)를 지원합니다. 이는 데스크톱, 서버, 임베디드 Rust 애플리케이션에서 저지연, 온디바이스 음성 인식을 가능하게 합니다.

주요 기능

  • CTC (영어 전용) – 단어 수준 타임스탬프가 있는 빠른 오프라인 인식.
  • TDT (다국어) – 25개 언어 자동 감지 모델, 문장 수준 타임스탬프.
  • EOU (발화 종료 감지) – 음성이 끝날 때 멈추는 실시간 스트리밍 ASR.
  • Nemotron 스트리밍 – 캐시 인식 스트리밍, 구두점 포함; 영어 전용(0.6B) 및 다국어(3.5B) 버전.
  • Cohere Transcribe – 선택적 오프라인 다국어 모델(14개 언어), 선택적 구두점 및 역 텍스트 정규화 지원.
  • 멀티타커 – 실시간 멀티발화자 인식; 각 청크는 (speaker_id, text) 쌍의 리스트를 반환.
  • Sortformer 발화자 분리 – 최대 4명의 발화자 분리 모델로, 오프라인 또는 청크 단위로 실시간 사용 가능.
  • 토큰 수준 타임스탬프 – CTC/TDT 모델에서는 각 토큰의 시작/종료 시간을 별도로 추출 가능.
  • GPU/CPU 유연성 – Cargo 기능(cuda, tensorrt, webgpu, directml, migraphx 등)을 통해 ONNX Runtime 실행 제공자를 선택하거나, 기본적으로 CPU로 자동 전환 가능.

일반적인 사용 예시 (간단화)

use parakeet_rs::{Parakeet, Transcriber, TimestampMode};

// 로컬 디렉터리에서 사전 훈련된 CTC 모델 로드
let mut model = Parakeet::from_pretrained("./ctc", None)?;

// `audio` = 16kHz 단일 채널 샘플의 Vec<f32>
let result = model.transcribe_samples(audio, 16000, 1, Some(TimestampMode::Words))?;
println!("Transcribed: {}", result.text);

// 선택적 토큰 수준 타임스탬프
for token in result.tokens {
    println!(["{:.3}s – {:.3}s] {}", token.start, token.end, token.text);
}

이 라이브러리는 각 모델 유형, 스트리밍 루프, 발화자 분리 파이프라인을 보여주는 예제 프로그램(examples/*.rs)을 함께 제공합니다.

모델 다운로드 방법 라이브러리는 ONNX 가중치를 포함하지 않습니다. 링크된 Hugging Face 리포지토리에서 다운로드해야 합니다 (예: parakeet-ctc-0.6b-ONNX, parakeet-tdt-0.6b-v3-onnx, nemotron‑3.5‑asr‑streaming‑0.6b). README에는 직접 URL과 해시 검증 및 로컬 캐시를 위한 작은 Python 헬퍼(scripts/download_orukeet.py)가 제공됩니다.

설치 방법

# Cargo.toml
parakeet-rs = { version = "0.3", features = ["cuda"] }   # 또는 "webgpu", "tensorrt" 등.

기본 CPU 외의 실행 제공자를 사용하려면 다음처럼 구성합니다:

use parakeet_rs::{Parakeet, ExecutionConfig, ExecutionProvider};
let cfg = ExecutionConfig::new().with_execution_provider(ExecutionProvider::Cuda);
let mut model = Parakeet::from_pretrained("./model", Some(cfg))?;

고급 사용자는 ExecutionConfig::with_custom_configure를 통해 하위 ONNX Runtime SessionBuilder를 맞춤 설정할 수 있습니다.

라이선스 – 코드는 MIT 또는 Apache‑2.0 이중 라이선스입니다. ONNX 모델 파일은 포함되어 있지 않으며, NVIDIA 또는 각 모델 소유자의 라이선스(예: Orukeet 미세조정 모델은 CC BY‑SA 4.0)에 따라 사용됩니다.


위의 모든 정보는 리포지토리의 README에서 직접 가져왔으며, 추가 기능은 추측되지 않았습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트