use crate::{Graph, NodeId, Op};
impl Graph {
pub fn log_mel(&mut self, spectrum: NodeId, filters: NodeId) -> NodeId {
let spec_shape = self.shape(spectrum).clone();
let filt_shape = self.shape(filters).clone();
let out = crate::audio::log_mel_output_shape(&spec_shape, &filt_shape)
.unwrap_or_else(|e| panic!("log_mel shape error: {e}"));
self.push(Op::LogMel, vec![spectrum, filters], out, None)
}
pub fn log_mel_backward(&mut self, spectrum: NodeId, filters: NodeId, dy: NodeId) -> NodeId {
let spec_shape = self.shape(spectrum).clone();
self.push(
Op::LogMelBackward,
vec![spectrum, filters, dy],
spec_shape,
None,
)
}
pub fn welch_peaks(&mut self, spectrum: NodeId, k: usize, n_segments: usize) -> NodeId {
let spec_shape = self.shape(spectrum).clone();
let out = crate::audio::welch_peaks_output_shape(&spec_shape, k, n_segments)
.unwrap_or_else(|e| panic!("welch_peaks shape error: {e}"));
self.push(Op::WelchPeaks { k, n_segments }, vec![spectrum], out, None)
}
}