| Crates.io | fluidaudio-rs |
| lib.rs | fluidaudio-rs |
| version | 0.1.0 |
| created_at | 2026-01-15 03:31:43.638197+00 |
| updated_at | 2026-01-15 03:31:43.638197+00 |
| description | Rust bindings for FluidAudio - ASR, VAD, Speaker Diarization, and TTS on Apple platforms |
| homepage | |
| repository | https://github.com/FluidInference/fluidaudio-rs |
| max_upload_size | |
| id | 2044495 |
| size | 30,594 |
Rust bindings for FluidAudio - a Swift library for ASR, VAD, Speaker Diarization, and TTS on Apple platforms.
Add to your Cargo.toml:
[dependencies]
fluidaudio-rs = "0.1"
use fluidaudio_rs::FluidAudio;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let audio = FluidAudio::new()?;
// Check system info
let info = audio.system_info();
println!("Running on: {} ({})", info.chip_name, info.platform);
println!("Apple Silicon: {}", audio.is_apple_silicon());
// Initialize ASR (downloads models on first run)
audio.init_asr()?;
// Transcribe an audio file
let result = audio.transcribe_file("audio.wav")?;
println!("Text: {}", result.text);
println!("Confidence: {:.2}%", result.confidence * 100.0);
println!("Processing speed: {:.1}x realtime", result.rtfx);
Ok(())
}
use fluidaudio_rs::FluidAudio;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let audio = FluidAudio::new()?;
// Initialize VAD with threshold (0.0-1.0)
audio.init_vad(0.85)?;
println!("VAD available: {}", audio.is_vad_available());
Ok(())
}
First initialization downloads and compiles ML models (~500MB total). This can take 20-30 seconds as Apple's Neural Engine compiles the models. Subsequent loads use cached compilations (~1 second).
| Platform | Status |
|---|---|
| macOS (Apple Silicon) | Full support |
| macOS (Intel) | Limited (no ASR) |
| iOS | Full support |
| Linux/Windows | Not supported |
This crate uses a C FFI bridge to communicate between Rust and Swift:
FluidAudioBridge) wraps the FluidAudio library@_cdeclextern "C" declarationsMIT