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
- MacOS Sonoma 14.2
- Debian (bookworm)
- 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
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" }
# 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
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