// sherpa-onnx/csrc/offline-transducer-modified-beam-search-decoder.h // // Copyright (c) 2023 Xiaomi Corporation #ifndef SHERPA_ONNX_CSRC_OFFLINE_TRANSDUCER_MODIFIED_BEAM_SEARCH_DECODER_H_ #define SHERPA_ONNX_CSRC_OFFLINE_TRANSDUCER_MODIFIED_BEAM_SEARCH_DECODER_H_ #include #include "sherpa-onnx/csrc/offline-lm.h" #include "sherpa-onnx/csrc/offline-transducer-decoder.h" #include "sherpa-onnx/csrc/offline-transducer-model.h" namespace sherpa_onnx { class OfflineTransducerModifiedBeamSearchDecoder : public OfflineTransducerDecoder { public: OfflineTransducerModifiedBeamSearchDecoder(OfflineTransducerModel *model, OfflineLM *lm, int32_t max_active_paths, float lm_scale) : model_(model), lm_(lm), max_active_paths_(max_active_paths), lm_scale_(lm_scale) {} std::vector Decode( Ort::Value encoder_out, Ort::Value encoder_out_length, OfflineStream **ss = nullptr, int32_t n = 0) override; private: OfflineTransducerModel *model_; // Not owned OfflineLM *lm_; // Not owned; may be nullptr int32_t max_active_paths_; float lm_scale_; // used only when lm_ is not nullptr }; } // namespace sherpa_onnx #endif // SHERPA_ONNX_CSRC_OFFLINE_TRANSDUCER_MODIFIED_BEAM_SEARCH_DECODER_H_