| | |
| | | return mm; |
| | | } |
| | | |
| | | _FUNASRAPI FUNASR_HANDLE FunOfflineInit(std::map<std::string, std::string>& model_path, int thread_num) |
| | | _FUNASRAPI FUNASR_HANDLE FunOfflineInit(std::map<std::string, std::string>& model_path, int thread_num, bool use_gpu) |
| | | { |
| | | funasr::OfflineStream* mm = funasr::CreateOfflineStream(model_path, thread_num); |
| | | funasr::OfflineStream* mm = funasr::CreateOfflineStream(model_path, thread_num, use_gpu); |
| | | return mm; |
| | | } |
| | | |
| | |
| | | return p_result; |
| | | } |
| | | if(offline_stream->UseVad()){ |
| | | audio.Split(offline_stream); |
| | | audio.CutSplit(offline_stream); |
| | | } |
| | | |
| | | float* buff; |
| | | int len; |
| | | int flag = 0; |
| | | |
| | | int n_step = 0; |
| | | int n_total = audio.GetQueueSize(); |
| | | float start_time = 0.0; |
| | | std::string cur_stamp = "["; |
| | | std::string lang = (offline_stream->asr_handle)->GetLang(); |
| | |
| | | cur_stamp += "["+std::to_string((int)(1000*begin))+","+std::to_string((int)(1000*end))+"],"; |
| | | } |
| | | } |
| | | n_step++; |
| | | if (fn_callback) |
| | | fn_callback(n_step, n_total); |
| | | } |
| | | if(cur_stamp != "["){ |
| | | cur_stamp.erase(cur_stamp.length() - 1); |
| | |
| | | return p_result; |
| | | } |
| | | if(offline_stream->UseVad()){ |
| | | audio.Split(offline_stream); |
| | | audio.CutSplit(offline_stream); |
| | | } |
| | | |
| | | float* buff; |
| | |
| | | funasr::WfstDecoder* mm = nullptr; |
| | | if (asr_type == ASR_OFFLINE) { |
| | | funasr::OfflineStream* offline_stream = (funasr::OfflineStream*)handle; |
| | | funasr::Paraformer* paraformer = (funasr::Paraformer*)offline_stream->asr_handle.get(); |
| | | if (paraformer->lm_) |
| | | mm = new funasr::WfstDecoder(paraformer->lm_.get(), |
| | | paraformer->GetPhoneSet(), paraformer->GetLmVocab(), glob_beam, lat_beam, am_scale); |
| | | auto paraformer = dynamic_cast<funasr::Paraformer*>(offline_stream->asr_handle.get()); |
| | | if(paraformer !=nullptr){ |
| | | if (paraformer->lm_){ |
| | | mm = new funasr::WfstDecoder(paraformer->lm_.get(), |
| | | paraformer->GetPhoneSet(), paraformer->GetLmVocab(), glob_beam, lat_beam, am_scale); |
| | | } |
| | | return mm; |
| | | } |
| | | #ifdef USE_GPU |
| | | auto paraformer_torch = dynamic_cast<funasr::ParaformerTorch*>(offline_stream->asr_handle.get()); |
| | | if(paraformer_torch !=nullptr){ |
| | | if (paraformer_torch->lm_){ |
| | | mm = new funasr::WfstDecoder(paraformer_torch->lm_.get(), |
| | | paraformer_torch->GetPhoneSet(), paraformer_torch->GetLmVocab(), glob_beam, lat_beam, am_scale); |
| | | } |
| | | return mm; |
| | | } |
| | | #endif |
| | | |
| | | } else if (asr_type == ASR_TWO_PASS){ |
| | | funasr::TpassStream* tpass_stream = (funasr::TpassStream*)handle; |
| | | funasr::Paraformer* paraformer = (funasr::Paraformer*)tpass_stream->asr_handle.get(); |
| | | if (paraformer->lm_) |
| | | mm = new funasr::WfstDecoder(paraformer->lm_.get(), |
| | | paraformer->GetPhoneSet(), paraformer->GetLmVocab(), glob_beam, lat_beam, am_scale); |
| | | auto paraformer = dynamic_cast<funasr::Paraformer*>(tpass_stream->asr_handle.get()); |
| | | if(paraformer !=nullptr){ |
| | | if (paraformer->lm_){ |
| | | mm = new funasr::WfstDecoder(paraformer->lm_.get(), |
| | | paraformer->GetPhoneSet(), paraformer->GetLmVocab(), glob_beam, lat_beam, am_scale); |
| | | } |
| | | return mm; |
| | | } |
| | | #ifdef USE_GPU |
| | | auto paraformer_torch = dynamic_cast<funasr::ParaformerTorch*>(tpass_stream->asr_handle.get()); |
| | | if(paraformer_torch !=nullptr){ |
| | | if (paraformer_torch->lm_){ |
| | | mm = new funasr::WfstDecoder(paraformer_torch->lm_.get(), |
| | | paraformer_torch->GetPhoneSet(), paraformer_torch->GetLmVocab(), glob_beam, lat_beam, am_scale); |
| | | } |
| | | return mm; |
| | | } |
| | | #endif |
| | | } |
| | | return mm; |
| | | } |