游雁
2023-10-19 b9bcf1f093c3053fdc4e2cf4a1d38e27bbf429fb
funasr/runtime/onnxruntime/src/funasrruntime.cpp
@@ -1,9 +1,6 @@
#include "precomp.h"
#include <vector>
#ifdef __cplusplus
extern "C" {
#endif
   // APIs for Init
   _FUNASRAPI FUNASR_HANDLE  FunASRInit(std::map<std::string, std::string>& model_path, int thread_num, ASR_TYPE type)
@@ -257,11 +254,15 @@
      int n_total = audio.GetQueueSize();
      float start_time = 0.0;
      std::string cur_stamp = "[";
      std::string lang = (offline_stream->asr_handle)->GetLang();
      while (audio.Fetch(buff, len, flag, start_time) > 0) {
         string msg = (offline_stream->asr_handle)->Forward(buff, len, true, hw_emb);
         std::vector<std::string> msg_vec = funasr::split(msg, '|');
         if(msg_vec.size()==0){
            continue;
         }
         if(lang == "en-bpe" and p_result->msg != ""){
            p_result->msg += " ";
         }
         p_result->msg += msg_vec[0];
         //timestamp
@@ -282,13 +283,15 @@
         p_result->stamp += cur_stamp + "]";
      }
      if(offline_stream->UsePunc()){
         string punc_res = (offline_stream->punc_handle)->AddPunc((p_result->msg).c_str());
         string punc_res = (offline_stream->punc_handle)->AddPunc((p_result->msg).c_str(), lang);
         p_result->msg = punc_res;
      }
#if !defined(__APPLE__)
      if(offline_stream->UseITN() && itn){
         string msg_itn = offline_stream->itn_handle->Normalize(p_result->msg);
         p_result->msg = msg_itn;
      }
#endif
      return p_result;
   }
@@ -335,11 +338,15 @@
      int n_total = audio.GetQueueSize();
      float start_time = 0.0;
      std::string cur_stamp = "[";
      std::string lang = (offline_stream->asr_handle)->GetLang();
      while (audio.Fetch(buff, len, flag, start_time) > 0) {
         string msg = (offline_stream->asr_handle)->Forward(buff, len, true, hw_emb);
         std::vector<std::string> msg_vec = funasr::split(msg, '|');
         if(msg_vec.size()==0){
            continue;
         }
         if(lang == "en-bpe" and p_result->msg != ""){
            p_result->msg += " ";
         }
         p_result->msg += msg_vec[0];
         //timestamp
@@ -361,16 +368,19 @@
         p_result->stamp += cur_stamp + "]";
      }
      if(offline_stream->UsePunc()){
         string punc_res = (offline_stream->punc_handle)->AddPunc((p_result->msg).c_str());
         string punc_res = (offline_stream->punc_handle)->AddPunc((p_result->msg).c_str(), lang);
         p_result->msg = punc_res;
      }
#if !defined(__APPLE__)
      if(offline_stream->UseITN() && itn){
         string msg_itn = offline_stream->itn_handle->Normalize(p_result->msg);
         p_result->msg = msg_itn;
      }
#endif
      return p_result;
   }
#if !defined(__APPLE__)
   _FUNASRAPI const std::vector<std::vector<float>> CompileHotwordEmbedding(FUNASR_HANDLE handle, std::string &hotwords, ASR_TYPE mode)
   {
      if (mode == ASR_OFFLINE){
@@ -394,7 +404,7 @@
      }
      
   }
#endif
   // APIs for 2pass-stream Infer
   _FUNASRAPI FUNASR_RESULT FunTpassInferBuffer(FUNASR_HANDLE handle, FUNASR_HANDLE online_handle, const char* sz_buf, 
@@ -450,13 +460,13 @@
               string online_msg = ((funasr::ParaformerOnline*)asr_online_handle)->online_res;
               string msg_punc = punc_online_handle->AddPunc(online_msg.c_str(), punc_cache[0]);
               p_result->tpass_msg = msg_punc;
#if !defined(__APPLE__)
               // ITN
               if(tpass_stream->UseITN() && itn){
                  string msg_itn = tpass_stream->itn_handle->Normalize(msg_punc);
                  p_result->tpass_msg = msg_itn;
               }
#endif
               ((funasr::ParaformerOnline*)asr_online_handle)->online_res = "";
               p_result->msg += msg;
            }else{
@@ -501,10 +511,12 @@
            msg_punc += "。";
         }
         p_result->tpass_msg = msg_punc;
#if !defined(__APPLE__)
         if(tpass_stream->UseITN() && itn){
            string msg_itn = tpass_stream->itn_handle->Normalize(msg_punc);
            p_result->tpass_msg = msg_itn;
         }
#endif
         if(frame != NULL){
            delete frame;
@@ -679,8 +691,4 @@
      delete tpass_online_stream;
   }
#ifdef __cplusplus
}
#endif