25 个版本 (5 个稳定版)
1.0.5 | 2023年8月7日 |
---|---|
1.0.3 | 2023年7月30日 |
1.0.2 | 2022年2月17日 |
1.0.0 | 2021年10月17日 |
0.2.2 | 2020年11月22日 |
#30 在 音频
1,063 每月下载量
用于 10 crates
7.5MB
75K SLoC
soloud-rs
soloud 音频引擎库的跨平台 Rust 绑定。
支持的格式:wav、mp3、ogg、flac。该库还包含语音合成器。
使用方法
[dependencies]
soloud = "1"
或者使用 git 仓库
[dependencies]
soloud = { git = "https://github.com/moalyousef/soloud-rs" }
播放音频
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); // calls to play are non-blocking, so we put the thread to sleep
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));
}
Ok(())
}
播放语音
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));
}
Ok(())
}
添加过滤器
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)?; // sets the delay
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));
}
Ok(())
}
示例可以在 soloud/examples 目录中找到。它们可以使用以下方式运行
cargo run --example simple
cargo run --example speech
cargo run --example filter
cargo run --example load_mem
您需要在项目根目录中拥有有效的 "sample.wav" 和 "Recording.mp3" 音频文件。或者您可以将路径更改为指向任何支持的音频文件。
还有一个使用 fltk 的演示 GUI 应用程序(在此)。
依赖项
Rust 编译器、C++ 编译器、Cargo、CMake 和 git(所有这些都需要在您的 PATH 中)。推荐使用 Ninja,但不是必需的,如果找到,则会使用。此 crate 默认使用 miniaudio 后端,该后端假设默认声音驱动程序是可用的。
后端
默认后端是 miniaudio,但 Soloud 支持几个后端,程度不同。要启用对某个后端的支持,例如 alsa
[dependencies]
soloud = { version = "1", default-features = false, features = ["alsa"] }
这也假设这些库的头文件在您的包含路径中,CMake 可以找到它们,否则您可以通过命令行(posix)设置它
export CXXFLAGS="-I /path/to/include"
或者对于 Windows
set CXXFLAGS="-I C:\\path\\to\\include"
如果需要,也可以对 CFLAGS 执行相同的操作。
支持的后端
- miniaudio
- oss
- alsa
- sdl2
- sdl2-static
- portaudio
- openal
- xaudio2
- winmm
- wasapi
- opensles
- coreaudio
- jack
Android 支持
需要设置 ANDROID_SDK_ROOT 和 ANDROID_NDK_ROOT。