extern crate self as svod_model;
use snafu::ResultExt;
use svod_ir::SInt;
use svod_macros::jit_wrapper;
use crate::gigaam::error::TensorSnafu;
use crate::gigaam::model::GigaAm;
jit_wrapper! {
CtcHeadJit(GigaAm) {
encoded: Tensor,
vars {
b: (1, model.config.max_batch_size),
t_sub: (1, model.encoder.subsampling_output_length(model.config.max_mel_frames)),
}
build(encoded, b, t_sub) {
let head = model.head.expect_ctc("CtcHeadJit")?;
let encoded = encoded.try_shrink([
Some((SInt::Const(0), b.as_sint())),
None,
Some((SInt::Const(0), t_sub.as_sint())),
]).context(TensorSnafu)?;
head.forward(&encoded)
}
}
}