Skip to content

jackycamp/flite-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Troubleshooting

On linux, sometimes pulseaudio crashes and you might see ALSA messages in your terminal when you try to call the play() fn, e.g.:

...
ALSA lib pcm.c:8570:(snd_pcm_recover) underrun occurred
ALSA lib pcm.c:8570:(snd_pcm_recover) underrun occurred
ALSA lib pcm.c:8570:(snd_pcm_recover) underrun occurred
...

Restarting pulseaudio's (daemon) can sometimes fix this:

pulseaudio -k # kills the deamon, and should automatically restart

About

Basic rust bindings for flite c library.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages