INNER CODE UNIT · Rust
read_wav
EricLBuehler/mistral.rs · mistralrs-audio/src/lib.rs:23
pub fn read_wav(wav_path: &str) -> Result<Self> {
let mut reader = hound::WavReader::open(wav_path)?;
let spec = reader.spec();
let samples: Vec<f32> = match spec.sample_format {
hound::SampleFormat::Float => reader
.samples::<f32>()
.collect::<std::result::Result<_, _>>()?,
hound::SampleFormat::Int => reader
.samples::<i16>()
// Match libsndfile/soundfile normalization for PCM16 by
// dividing by the full signed range, not by `i16::MAX`.
.map(|s| s.map(|v| v as f32 / 32768.0))
.collect::<std::result::Result<_, _>>()?,
};
Ok(Self {
samples,
sample_rate: spec.sample_rate,
channels: spec.channels,