Vosk

Latest release on crates.io Documentation on docs.rs GitHub

Safe FFI bindings around the Vosk API Speech Recognition library.

Usage

```rust // Simplified version of examples/read_wav.rs

// Normally you would not want to hardcode the audio samples let samples = vec![100, -2, 700, 30, 4, 5]; let model_path = "/path/to/model";

let model = Model::new(model_path).unwrap(); let mut recognizer = Recognizer::new(&model, 16000.0).unwrap();

recognizer.setmaxalternatives(10); recognizer.setwords(true); recognizer.setpartial_words(true);

for sample in samples.chunks(100) { recognizer.acceptwaveform(sample); println!("{:#?}", recognizer.partialresult()); }

println!("{:#?}", recognizer.final_result().multiple().unwrap()); ```

Setup

Compilation

The Vosk-API dynamic libraries have to be discoverable by the rust linker (static libraries are not available). Download the zip file for your platform here and:

Windows and Linux (Recommended)

Do either of the following:

Although both approaches are equivalent, the latter is more practical as it does not require the developer to remember a terminal command.

Windows-only

Linux-only

Do either of the following:

Execution

The libraries also have to be discoverable by the executable at runtime. You will have to follow one of the approaches in the same section you chose in compilation

Windows and Linux (Recommended)

For both approaches, you will need to copy the libraries to the root of the executable (target/<cargo profile name> by default). It is recommended that you use a tool such as cargo-make to automate moving the libraries from another, more practical, directory to the destination during build.

Windows-only

If you added your libraries to a directory in your PATH, no extra steps are needed as long as that is also the case for the target machine.

Linux-only