fliters

Crates.iofliters
lib.rsfliters
version0.1.8
created_at2024-01-22 01:05:59.172359+00
updated_at2025-01-20 00:47:38.889977+00
descriptionbasic rust bindings for flite c library
homepage
repository
max_upload_size
id1108144
size17,973,407
jack (jackycamp)

documentation

README

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();
}

Check out the make_waveform example to see how we go from text -> 16-bit samples -> (time, amplitude) pairs -> wave form visualization in your terminal!

cargo run --example make_waveform

image

Tested on

  • MacOS Sonoma 14.2
  • Debian (bookworm)

Roadmap

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

Installation

Linux Dependencies

On linux, rodio relies on cpal and cpal needs alsa development files to build. You can see rodio's repo for more info.

sudo apt install libasound2-dev

crate

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

If you install the crate, but encounter build errors, try to specify the repo as the dependency. Submit an issue in the meantime while I investigate.

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

Building

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

# If you want the git submodules on first clone
git clone --recursive https://github.com/jackycamp/flite-rs.git

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

# run an example
cargo run --example tts
Commit count: 0

cargo fmt