# Leopard Binding for Rust ## Leopard Speech-to-Text Engine Made in Vancouver, Canada by [Picovoice](https://picovoice.ai) Leopard is an on-device speech-to-text engine. Leopard is: - Private; All voice processing runs locally. - [Accurate](https://picovoice.ai/docs/benchmark/stt/) - [Compact and Computationally-Efficient](https://github.com/Picovoice/speech-to-text-benchmark#rtf) - Cross-Platform: - Linux (x86_64), macOS (x86_64, arm64), Windows (x86_64) - Android and iOS - Chrome, Safari, Firefox, and Edge - Raspberry Pi (5, 4, 3) and NVIDIA Jetson Nano ## Compatibility - Rust 1.54+ - Runs on Linux (x86_64), macOS (x86_64, arm64), Windows (x86_64), Raspberry Pi (5, 4, 3), and NVIDIA Jetson Nano. ## Installation First you will need [Rust and Cargo](https://rustup.rs/) installed on your system. To add the leopard library into your app, add `pv_leopard` to your apps `Cargo.toml` manifest: ```toml [dependencies] pv_leopard = "*" ``` If you prefer to clone the repo and use it locally, first run `copy.sh`. (**NOTE:** on Windows, Git Bash or another bash shell is required, or you will have to manually copy the libs into the project). Then you can reference the local binding location: ```toml [dependencies] pv_leopard = { path = "/path/to/rust/binding" } ``` ## AccessKey Leopard requires a valid Picovoice `AccessKey` at initialization. `AccessKey` acts as your credentials when using Leopard SDKs. You can get your `AccessKey` for free. Make sure to keep your `AccessKey` secret. Signup or Login to [Picovoice Console](https://console.picovoice.ai/) to get your `AccessKey`. ## Usage Create an instance of the engine and transcribe an audio file: ```rust use leopard::LeopardBuilder; fn main() { let access_key = "${ACCESS_KEY}"; // AccessKey obtained from Picovoice Console (https://console.picovoice.ai/) let leopard: Leopard = LeopardBuilder::new() .access_key(access_key) .init() .expect("Unable to create Leopard"); if let Ok(leopard_transcript) = leopard.process_file("${AUDIO_FILE_PATH}") { println!("{}", leopard_transcript.transcript); } } ``` Replace `${ACCESS_KEY}` with yours obtained from [Picovoice Console](https://console.picovoice.ai/) and `${AUDIO_FILE_PATH}` to the path an audio file. The model file contains the parameters for the Leopard engine. You may create bespoke language models using [Picovoice Console](https://console.picovoice.ai/) and then pass in the relevant file. ### Language Model The Leopard Rust SDK comes preloaded with a default English language model (`.pv` file). Default models for other supported languages can be found in [lib/common](../../lib/common). Create custom language models using the [Picovoice Console](https://console.picovoice.ai/). Here you can train language models with custom vocabulary and boost words in the existing vocabulary. Pass in the `.pv` file via the `.model_path()` Builder argument: ```rust let leopard: Leopard = LeopardBuilder::new() .access_key("${ACCESS_KEY}") .model_path("${MODEL_FILE_PATH}") .init() .expect("Unable to create Leopard"); ``` ### Word Metadata Along with the transcript, Leopard returns metadata for each transcribed word. Available metadata items are: - **Start Time:** Indicates when the word started in the transcribed audio. Value is in seconds. - **End Time:** Indicates when the word ended in the transcribed audio. Value is in seconds. - **Confidence:** Leopard's confidence that the transcribed word is accurate. It is a number within `[0, 1]`. - **Speaker Tag:** If speaker diarization is enabled on initialization, the speaker tag is a non-negative integer identifying unique speakers, with `0` reserved for unknown speakers. If speaker diarization is not enabled, the value will always be `-1`. ## Demos The [Leopard Rust demo project](https://github.com/Picovoice/leopard/tree/master/demo/rust) is a Rust console app that allows for processing real-time audio (i.e. microphone) and files using Leopard.