soloud
Rust bindings for the soloud audio engine library.
Supported formats: wav, mp3, ogg. The library also comes with a speech synthesizer.
Still pre-alpha.
Usage
[dependencies]
soloud = "0.1"
Or to use the latest developments:
[dependencies]
soloud = { git = "https://!github.com/moalyousef/soloud-rs" }
To play audio:
use soloud::*;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut sl = Soloud::default()?;
let mut wav = audio::Wav::default();
wav.load(&std::path::Path::new("sample.wav"))?;
sl.play(&wav);
while sl.voice_count() > 0 {
std::thread::sleep(std::time::Duration::from_millis(100));
}
wav.load(&std::path::Path::new("Recording.mp3"))?;
sl.play(&wav);
while sl.voice_count() > 0 {
std::thread::sleep(std::time::Duration::from_millis(100));
}
sl
Ok(())
}
To play speech:
use soloud::*;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut sl = Soloud::default()?;
let mut speech = audio::Speech::default();
speech.set_text("Hello World")?;
sl.play(&speech);
while sl.active_voice_count() > 0 {
std::thread::sleep(std::time::Duration::from_millis(100));
}
speech.set_text("1 2 3")?;
sl.play(&speech);
while sl.active_voice_count() > 0 {
std::thread::sleep(std::time::Duration::from_millis(100));
}
speech.set_text("Can you hear me?")?;
sl.play(&speech);
while sl.active_voice_count() > 0 {
std::thread::sleep(std::time::Duration::from_millis(100));
}
sl
Ok(())
}
To add a filter:
use soloud::*;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut sl = Soloud::default()?;
let mut wav = audio::Wav::default();
let mut filt = filter::EchoFilter::default();
filt.set_params(0.2)?;
wav.load(&std::path::Path::new("sample.wav"))?;
wav.set_filter(0, Some(&filt));
sl.play(&wav);
while sl.voice_count() > 0 {
std::thread::sleep(std::time::Duration::from_millis(100));
}
sl
Ok(())
}