Adding warm up for Zipformer2 (#766)

Signed-off-by: manickavela1998@gmail.com <manickavela1998@gmail.com>
This commit is contained in:
Manix
2024-04-16 06:46:55 +05:30
committed by GitHub
parent 5981adf454
commit fb4aee83ac
9 changed files with 99 additions and 6 deletions

View File

@@ -95,6 +95,11 @@ void OnlineWebsocketDecoder::InputFinished(std::shared_ptr<Connection> c) {
c->eof = true;
}
void OnlineWebsocketDecoder::Warmup() const {
recognizer_->WarmpUpRecognizer(config_.recognizer_config.model_config.warm_up,
config_.max_batch_size);
}
void OnlineWebsocketDecoder::Run() {
timer_.expires_after(std::chrono::milliseconds(config_.loop_interval_ms));
@@ -242,6 +247,24 @@ void OnlineWebsocketServer::Run(uint16_t port) {
server_.set_reuse_addr(true);
server_.listen(asio::ip::tcp::v4(), port);
server_.start_accept();
auto recognizer_config = config_.decoder_config.recognizer_config;
int32_t warm_up = recognizer_config.model_config.warm_up;
const std::string &model_type = recognizer_config.model_config.model_type;
if (0 < warm_up && warm_up < 100) {
if (model_type == "zipformer2") {
decoder_.Warmup();
SHERPA_ONNX_LOGE("Warm up completed : %d times.", warm_up);
} else {
SHERPA_ONNX_LOGE("Only Zipformer2 has warmup support for now.");
SHERPA_ONNX_LOGE("Given: %s", model_type.c_str());
exit(0);
}
} else if (warm_up == 0) {
SHERPA_ONNX_LOGE("Starting without warmup!");
} else {
SHERPA_ONNX_LOGE("Invalid Warm up Value!. Expected 0 < warm_up < 100");
exit(0);
}
decoder_.Run();
}