From 8e449d676d4f06ba3de02c451c3b4fa3433a3792 Mon Sep 17 00:00:00 2001
From: lyblsgo <lyblsgo@163.com>
Date: 星期二, 11 四月 2023 10:35:29 +0800
Subject: [PATCH] debug onnxruntime multithread bugs
---
funasr/runtime/onnxruntime/src/librapidasrapi.cpp | 60 ++++++++++++++++--------------------------------------------
1 files changed, 16 insertions(+), 44 deletions(-)
diff --git a/funasr/runtime/onnxruntime/src/librapidasrapi.cpp b/funasr/runtime/onnxruntime/src/librapidasrapi.cpp
index 1f8f7ca..b9169bd 100644
--- a/funasr/runtime/onnxruntime/src/librapidasrapi.cpp
+++ b/funasr/runtime/onnxruntime/src/librapidasrapi.cpp
@@ -4,30 +4,23 @@
extern "C" {
#endif
-
// APIs for qmasr
- _RAPIDASRAPI RPASR_HANDLE RapidAsrInit(const char* szModelDir, int nThreadNum)
+ _RAPIDASRAPI RPASR_HANDLE RapidAsrInit(const char* szModelDir, int nThreadNum, bool quantize)
{
-
-
- Model* mm = create_model(szModelDir, nThreadNum);
-
+ Model* mm = create_model(szModelDir, nThreadNum, quantize);
return mm;
}
-
_RAPIDASRAPI RPASR_RESULT RapidAsrRecogBuffer(RPASR_HANDLE handle, const char* szBuf, int nLen, RPASR_MODE Mode, QM_CALLBACK fnCallback)
{
-
-
Model* pRecogObj = (Model*)handle;
-
if (!pRecogObj)
return nullptr;
Audio audio(1);
- audio.loadwav(szBuf,nLen);
- audio.split();
+ if (!audio.loadwav(szBuf, nLen))
+ return nullptr;
+ //audio.split();
float* buff;
int len;
@@ -37,29 +30,27 @@
int nStep = 0;
int nTotal = audio.get_queue_size();
while (audio.fetch(buff, len, flag) > 0) {
- pRecogObj->reset();
+ //pRecogObj->reset();
string msg = pRecogObj->forward(buff, len, flag);
pResult->msg += msg;
nStep++;
if (fnCallback)
fnCallback(nStep, nTotal);
}
-
return pResult;
}
_RAPIDASRAPI RPASR_RESULT RapidAsrRecogPCMBuffer(RPASR_HANDLE handle, const char* szBuf, int nLen, RPASR_MODE Mode, QM_CALLBACK fnCallback)
{
-
Model* pRecogObj = (Model*)handle;
-
if (!pRecogObj)
return nullptr;
Audio audio(1);
- audio.loadpcmwav(szBuf, nLen);
- audio.split();
+ if (!audio.loadpcmwav(szBuf, nLen))
+ return nullptr;
+ //audio.split();
float* buff;
int len;
@@ -69,7 +60,7 @@
int nStep = 0;
int nTotal = audio.get_queue_size();
while (audio.fetch(buff, len, flag) > 0) {
- pRecogObj->reset();
+ //pRecogObj->reset();
string msg = pRecogObj->forward(buff, len, flag);
pResult->msg += msg;
nStep++;
@@ -77,22 +68,19 @@
fnCallback(nStep, nTotal);
}
-
return pResult;
-
}
_RAPIDASRAPI RPASR_RESULT RapidAsrRecogPCMFile(RPASR_HANDLE handle, const char* szFileName, RPASR_MODE Mode, QM_CALLBACK fnCallback)
{
-
Model* pRecogObj = (Model*)handle;
-
if (!pRecogObj)
return nullptr;
Audio audio(1);
- audio.loadpcmwav(szFileName);
- audio.split();
+ if (!audio.loadpcmwav(szFileName))
+ return nullptr;
+ //audio.split();
float* buff;
int len;
@@ -102,7 +90,7 @@
int nStep = 0;
int nTotal = audio.get_queue_size();
while (audio.fetch(buff, len, flag) > 0) {
- pRecogObj->reset();
+ //pRecogObj->reset();
string msg = pRecogObj->forward(buff, len, flag);
pResult->msg += msg;
nStep++;
@@ -110,22 +98,19 @@
fnCallback(nStep, nTotal);
}
-
return pResult;
-
}
_RAPIDASRAPI RPASR_RESULT RapidAsrRecogFile(RPASR_HANDLE handle, const char* szWavfile, RPASR_MODE Mode, QM_CALLBACK fnCallback)
{
Model* pRecogObj = (Model*)handle;
-
if (!pRecogObj)
return nullptr;
Audio audio(1);
if(!audio.loadwav(szWavfile))
return nullptr;
- audio.split();
+ //audio.split();
float* buff;
int len;
@@ -135,7 +120,7 @@
RPASR_RECOG_RESULT* pResult = new RPASR_RECOG_RESULT;
pResult->snippet_time = audio.get_time_len();
while (audio.fetch(buff, len, flag) > 0) {
- pRecogObj->reset();
+ //pRecogObj->reset();
string msg = pRecogObj->forward(buff, len, flag);
pResult->msg+= msg;
nStep++;
@@ -143,9 +128,6 @@
fnCallback(nStep, nTotal);
}
-
-
-
return pResult;
}
@@ -155,7 +137,6 @@
return 0;
return 1;
-
}
@@ -165,7 +146,6 @@
return 0.0f;
return ((RPASR_RECOG_RESULT*)Result)->snippet_time;
-
}
_RAPIDASRAPI const char* RapidAsrGetResult(RPASR_RESULT Result,int nIndex)
@@ -175,33 +155,25 @@
return nullptr;
return pResult->msg.c_str();
-
}
_RAPIDASRAPI void RapidAsrFreeResult(RPASR_RESULT Result)
{
-
if (Result)
{
delete (RPASR_RECOG_RESULT*)Result;
-
}
}
_RAPIDASRAPI void RapidAsrUninit(RPASR_HANDLE handle)
{
-
Model* pRecogObj = (Model*)handle;
-
if (!pRecogObj)
return;
delete pRecogObj;
-
}
-
-
#ifdef __cplusplus
--
Gitblit v1.9.1