/flite-rs

Basic rust bindings for flite c library.

Primary LanguageRust

fliters

rust bindings for the flite c library

Usage

Check out /examples directory for more examples.

// standard example
use fliters;

fn main() {
  fliters::tts("hello, world!").play();
}
// Controlling the output stream. (i.e. playing and pausing)
use fliters;
use rodio::{OutputStream, Sink};

fn main() {
    let (_stream, handle) = OutputStream::try_default().unwrap();
    let sink = Sink::try_new(&handle).unwrap();
    let fwav = fliters::tts("play this audio with some stream controls");
    let decoder = fwav.get_decoder();
    sink.append(decoder);
    sink.play();
    std::thread::sleep(std::time::Duration::from_secs(1));
    sink.pause();
    std::thread::sleep(std::time::Duration::from_secs(3));
    sink.play();
    sink.sleep_until_end();
}

I've only tested on MacOS Sonoma 14.2. xD

Roadmap

  • basic tts api
  • control output stream with play
  • optimize build (include only necessary c files)
  • customize voice (defaults to slt right now)
  • linux arm64 support
  • linux amd64 support

Installation

Add this to your cargo.toml: fliters = "0.1.7"

If you install the crate, but encounter build errors (especially linker errors), try to specify the repo as the dependency. Submit an issue in the meantime so I can investigate.

fliters = { git = "https://github.com/jackycamp/flite-rs" }

Building

# clone the repository
git clone https://github.com/jackycamp/flite-rs.git

# do the build
cd flite-rs && cargo build

# run an example
cargo run --example tts