#pragma once
#include "ggml.h"
struct ggml_context;
struct ggml_tensor;
struct ggml_cgraph;
namespace transcribe::funasr_nano {
struct FunAsrNanoHParams;
struct FunAsrNanoWeights;
struct EncoderDumps {
ggml_tensor * frontend_out = nullptr; ggml_tensor * embed_out = nullptr; ggml_tensor * encoders0_0_out = nullptr;
ggml_tensor * encoders_first = nullptr;
ggml_tensor * encoders_mid = nullptr;
ggml_tensor * encoders_last = nullptr;
ggml_tensor * after_norm_out = nullptr;
ggml_tensor * tp_encoders_first = nullptr;
ggml_tensor * tp_encoders_mid = nullptr;
ggml_tensor * tp_encoders_last = nullptr;
ggml_tensor * tp_norm_out = nullptr;
};
struct EncoderBuild {
ggml_tensor * frontend_in = nullptr; ggml_tensor * pe_in = nullptr; ggml_tensor * out = nullptr; EncoderDumps dumps {};
ggml_cgraph * graph = nullptr;
};
EncoderBuild build_encoder_graph(ggml_context * compute_ctx,
const FunAsrNanoWeights & weights,
const FunAsrNanoHParams & hp,
int n_lfr_frames);
}