{"id":43813022,"url":"https://github.com/altunenes/parakeet-rs","last_synced_at":"2026-02-06T00:00:26.528Z","repository":{"id":318911374,"uuid":"1076931447","full_name":"altunenes/parakeet-rs","owner":"altunenes","description":"very fast speech-to-text, diarization, streaming (even in CPU) with NVIDIA Parakeet in Rust","archived":false,"fork":false,"pushed_at":"2026-01-22T13:18:00.000Z","size":197,"stargazers_count":135,"open_issues_count":7,"forks_count":17,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-01-23T00:55:56.373Z","etag":null,"topics":["asr","automatic-speech-recognition","onnx","parakeet","speaker-diarization","speaker-identification","speech","speech-recognition","speech-to-text"],"latest_commit_sha":null,"homepage":"https://huggingface.co/altunenes/parakeet-rs","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/altunenes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-15T14:39:10.000Z","updated_at":"2026-01-22T16:32:35.000Z","dependencies_parsed_at":"2025-10-17T06:23:44.459Z","dependency_job_id":"064fe05b-138b-4491-ac9d-d7763569b4dd","html_url":"https://github.com/altunenes/parakeet-rs","commit_stats":null,"previous_names":["altunenes/parakeet-rs"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/altunenes/parakeet-rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/altunenes%2Fparakeet-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/altunenes%2Fparakeet-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/altunenes%2Fparakeet-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/altunenes%2Fparakeet-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/altunenes","download_url":"https://codeload.github.com/altunenes/parakeet-rs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/altunenes%2Fparakeet-rs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29140014,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T23:14:48.546Z","status":"ssl_error","status_checked_at":"2026-02-05T23:14:35.724Z","response_time":65,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asr","automatic-speech-recognition","onnx","parakeet","speaker-diarization","speaker-identification","speech","speech-recognition","speech-to-text"],"created_at":"2026-02-06T00:00:24.030Z","updated_at":"2026-02-06T00:00:26.446Z","avatar_url":"https://github.com/altunenes.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# parakeet-rs\n[![Rust](https://github.com/altunenes/parakeet-rs/actions/workflows/rust.yml/badge.svg)](https://github.com/altunenes/parakeet-rs/actions/workflows/rust.yml)\n[![crates.io](https://img.shields.io/crates/v/parakeet-rs.svg)](https://crates.io/crates/parakeet-rs)\n\nFast speech recognition with NVIDIA's Parakeet models via ONNX Runtime.\nNote: CoreML doesn't stable with this model - stick w/ CPU (or other GPU EP). But its incredible fast in my Mac M3 16gb' CPU compared to Whisper metal! :-)\n\n## Models\n\n**CTC (English-only)**:\n```rust\nuse parakeet_rs::{Parakeet, Transcriber, TimestampMode};\n\nlet mut parakeet = Parakeet::from_pretrained(\".\", None)?;\n\n// Load and transcribe audio (see examples/raw.rs for full example)\nlet result = parakeet.transcribe_samples(audio, 1600, 1, Some(TimestampMode::Words))?;\nprintln!(\"{}\", result.text);\n\n// Token-level timestamps\nfor token in result.tokens {\n    println!(\"[{:.3}s - {:.3}s] {}\", token.start, token.end, token.text);\n}\n```\n\n**TDT (Multilingual)**: 25 languages with auto-detection\n```rust\nuse parakeet_rs::{ParakeetTDT, Transcriber, TimestampMode};\n\nlet mut parakeet = ParakeetTDT::from_pretrained(\"./tdt\", None)?;\nlet result = parakeet.transcribe_samples(audio, 16000, 1, Some(TimestampMode::Sentences))?;\nprintln!(\"{}\", result.text);\n\n// Token-level timestamps\nfor token in result.tokens {\n    println!(\"[{:.3}s - {:.3}s] {}\", token.start, token.end, token.text);\n}\n```\n\n**EOU (Streaming)**: Real-time ASR with end-of-utterance detection\n```rust\nuse parakeet_rs::ParakeetEOU;\n\nlet mut parakeet = ParakeetEOU::from_pretrained(\"./eou\", None)?;\n\n// Prepare your audio (Vec\u003cf32\u003e, 16kHz mono, normalized)\nlet audio: Vec\u003cf32\u003e = /* your audio samples */;\n\n// Process in 160ms chunks for streaming\nconst CHUNK_SIZE: usize = 2560; // 160ms at 16kHz\nfor chunk in audio.chunks(CHUNK_SIZE) {\n    let text = parakeet.transcribe(chunk, false)?;\n    print!(\"{}\", text);\n}\n```\n\n**Nemotron (Streaming)**: Cache-aware streaming ASR with punctuation\n```rust\nuse parakeet_rs::Nemotron;\n\nlet mut model = Nemotron::from_pretrained(\"./nemotron\", None)?;\n\n// Process in 560ms chunks for streaming\nconst CHUNK_SIZE: usize = 8960; // 560ms at 16kHz\nfor chunk in audio.chunks(CHUNK_SIZE) {\n    let text = model.transcribe_chunk(chunk)?;\n    print!(\"{}\", text);\n}\n```\n\n**Sortformer v2 \u0026 v2.1 (Speaker Diarization)**: Streaming 4-speaker diarization\n```toml\nparakeet-rs = { version = \"0.2\", features = [\"sortformer\"] }\n```\n```rust\nuse parakeet_rs::sortformer::{Sortformer, DiarizationConfig};\n\nlet mut sortformer = Sortformer::with_config(\n    \"diar_streaming_sortformer_4spk-v2.onnx\", // or v2.1.onnx\n    None,\n    DiarizationConfig::callhome(),  // or dihard3(),custom()\n)?;\nlet segments = sortformer.diarize(audio, 16000, 1)?;\nfor seg in segments {\n    println!(\"Speaker {} [{:.2}s - {:.2}s]\", seg.speaker_id, seg.start, seg.end);\n}\n```\nSee `examples/diarization.rs` for combining with TDT transcription.\n\n## Setup\n\n**CTC**: Download from [HuggingFace](https://huggingface.co/onnx-community/parakeet-ctc-0.6b-ONNX/tree/main/onnx): `model.onnx`, `model.onnx_data`, `tokenizer.json`\n\n**TDT**: Download from [HuggingFace](https://huggingface.co/istupakov/parakeet-tdt-0.6b-v3-onnx): `encoder-model.onnx`, `encoder-model.onnx.data`, `decoder_joint-model.onnx`, `vocab.txt`\n\n**EOU**: Download from [HuggingFace](https://huggingface.co/altunenes/parakeet-rs/tree/main/realtime_eou_120m-v1-onnx): `encoder.onnx`, `decoder_joint.onnx`, `tokenizer.json`\n\n**Nemotron**: Download from [HuggingFace](https://huggingface.co/altunenes/parakeet-rs/tree/main/nemotron-speech-streaming-en-0.6b): `encoder.onnx`, `encoder.onnx.data`, `decoder_joint.onnx`, `tokenizer.model` (*[int8](https://huggingface.co/lokkju/nemotron-speech-streaming-en-0.6b-int8) / [int4](https://huggingface.co/lokkju/nemotron-speech-streaming-en-0.6b-int4)*)\n\n**Diarization (Sortformer v2 \u0026 v2.1)**: Download from [HuggingFace](https://huggingface.co/altunenes/parakeet-rs/tree/main): `diar_streaming_sortformer_4spk-v2.onnx` or `v2.1.onnx`.\n\nQuantized versions available (int8). All files must be in the same directory.\n\nGPU support (auto-falls back to CPU if fails):\n```toml\nparakeet-rs = { version = \"0.3\", features = [\"cuda\"] }  # or tensorrt, webgpu, directml, migraphx or other ort supported EPs (check cargo features)\n```\n\n```rust\nuse parakeet_rs::{Parakeet, ExecutionConfig, ExecutionProvider};\n\nlet config = ExecutionConfig::new().with_execution_provider(ExecutionProvider::Cuda);\nlet mut parakeet = Parakeet::from_pretrained(\".\", Some(config))?;\n```\n\nAdvanced session configuration via [ort SessionBuilder](https://docs.rs/ort/latest/ort/session/builder/struct.SessionBuilder.html):\n```rust\nlet config = ExecutionConfig::new()\n    .with_custom_configure(|builder| builder.with_memory_pattern(false));\n```\n\n## Features\n\n- [CTC: English with punctuation \u0026 capitalization](https://huggingface.co/nvidia/parakeet-ctc-0.6b)\n- [TDT: Multilingual (auto lang detection)](https://huggingface.co/nvidia/parakeet-tdt-0.6b-v3)\n- [EOU: Streaming ASR with end-of-utterance detection](https://huggingface.co/nvidia/parakeet_realtime_eou_120m-v1)\n- [Nemotron: Cache aware streaming ASR (600M params,EN only)](https://huggingface.co/nvidia/nemotron-speech-streaming-en-0.6b)\n- [Sortformer v2 \u0026 v2.1: Streaming speaker diarization (up to 4 speakers)](https://huggingface.co/nvidia/diar_streaming_sortformer_4spk-v2) NOTE: you can also download v2.1 model same way.\n- Token-level timestamps (CTC, TDT)\n\n## Notes\n\n- Audio: 16kHz mono WAV (16-bit PCM or 32-bit float)\n- CTC/TDT models have ~4-5 minute audio length limit. For longer files, use streaming models or split into chunks\n\n## License\n\nCode: MIT OR Apache-2.0\n\nFYI: The Parakeet ONNX models (downloaded separately from HuggingFace) by NVIDIA. This library does not distribute the models.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faltunenes%2Fparakeet-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faltunenes%2Fparakeet-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faltunenes%2Fparakeet-rs/lists"}