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에서 직접 가져왔으며, 추가 기능은 추측되지 않았습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트