INNER CODE UNIT · Rust
to_mono
EricLBuehler/mistral.rs · mistralrs-audio/src/lib.rs:93
pub fn to_mono(&self) -> Vec<f32> {
if self.channels <= 1 {
return self.samples.clone();
}
let mut mono = vec![0.0; self.samples.len() / self.channels as usize];
for (i, sample) in self.samples.iter().enumerate() {
mono[i / self.channels as usize] += *sample;
}
for s in &mut mono {
*s /= self.channels as f32;
}
mono
}
/// Normalize audio to prevent clipping
pub fn normalize(&mut self) -> &mut Self {
let max_amplitude = self.samples.iter().map(|s| s.abs()).fold(0.0f32, f32::max);
if max_amplitude > 0.0 && max_amplitude != 1.0 {