From 646edfbd91008d22ae59807ea0209f26cbb57871 Mon Sep 17 00:00:00 2001
From: zhifu gao <zhifu.gzf@alibaba-inc.com>
Date: 星期三, 08 三月 2023 10:50:18 +0800
Subject: [PATCH] Merge pull request #193 from RapidAI/main
---
funasr/runtime/onnxruntime/src/librapidasrapi.cpp | 24 +++++++++++++++---------
funasr/runtime/onnxruntime/include/librapidasrapi.h | 1 +
funasr/runtime/onnxruntime/src/Audio.cpp | 6 ++++++
funasr/runtime/onnxruntime/tester/tester.cpp | 19 ++++++++++++-------
funasr/runtime/onnxruntime/src/commonfunc.h | 2 +-
funasr/runtime/onnxruntime/include/Audio.h | 1 +
6 files changed, 36 insertions(+), 17 deletions(-)
diff --git a/funasr/runtime/onnxruntime/include/Audio.h b/funasr/runtime/onnxruntime/include/Audio.h
index 8b40c4d..da5e82c 100644
--- a/funasr/runtime/onnxruntime/include/Audio.h
+++ b/funasr/runtime/onnxruntime/include/Audio.h
@@ -51,6 +51,7 @@
int fetch(float *&dout, int &len, int &flag);
void padding();
void split();
+ float get_time_len();
int get_queue_size() { return (int)frame_queue.size(); }
};
diff --git a/funasr/runtime/onnxruntime/include/librapidasrapi.h b/funasr/runtime/onnxruntime/include/librapidasrapi.h
index e9ab87a..a83098f 100644
--- a/funasr/runtime/onnxruntime/include/librapidasrapi.h
+++ b/funasr/runtime/onnxruntime/include/librapidasrapi.h
@@ -88,6 +88,7 @@
_RAPIDASRAPI void RapidAsrUninit(RPASR_HANDLE Handle);
+_RAPIDASRAPI const float RapidAsrGetRetSnippetTime(RPASR_RESULT Result);
#ifdef __cplusplus
diff --git a/funasr/runtime/onnxruntime/src/Audio.cpp b/funasr/runtime/onnxruntime/src/Audio.cpp
index d5d0746..43dfb6b 100644
--- a/funasr/runtime/onnxruntime/src/Audio.cpp
+++ b/funasr/runtime/onnxruntime/src/Audio.cpp
@@ -116,6 +116,12 @@
speech_len);
}
+float Audio::get_time_len()
+{
+ return (float)speech_len / 16000;
+ //speech_len);
+}
+
bool Audio::loadwav(const char *filename)
{
diff --git a/funasr/runtime/onnxruntime/src/commonfunc.h b/funasr/runtime/onnxruntime/src/commonfunc.h
index 237df86..11c234e 100644
--- a/funasr/runtime/onnxruntime/src/commonfunc.h
+++ b/funasr/runtime/onnxruntime/src/commonfunc.h
@@ -4,7 +4,7 @@
typedef struct
{
std::string msg;
-
+ float snippet_time;
}RPASR_RECOG_RESULT;
diff --git a/funasr/runtime/onnxruntime/src/librapidasrapi.cpp b/funasr/runtime/onnxruntime/src/librapidasrapi.cpp
index 4e1a457..1f8f7ca 100644
--- a/funasr/runtime/onnxruntime/src/librapidasrapi.cpp
+++ b/funasr/runtime/onnxruntime/src/librapidasrapi.cpp
@@ -1,9 +1,6 @@
#include "precomp.h"
#ifdef __cplusplus
-
-
-// void __attribute__ ((visibility ("default"))) fun();
extern "C" {
#endif
@@ -12,12 +9,6 @@
_RAPIDASRAPI RPASR_HANDLE RapidAsrInit(const char* szModelDir, int nThreadNum)
{
-#ifdef NDEBUG
- QMLIC_BOOL bMatched = QmLicCheckValid(QLFM_ASR);
- if (!bMatched) {
- return nullptr;
- }
-#endif
Model* mm = create_model(szModelDir, nThreadNum);
@@ -42,6 +33,7 @@
int len;
int flag=0;
RPASR_RECOG_RESULT* pResult = new RPASR_RECOG_RESULT;
+ pResult->snippet_time = audio.get_time_len();
int nStep = 0;
int nTotal = audio.get_queue_size();
while (audio.fetch(buff, len, flag) > 0) {
@@ -73,6 +65,7 @@
int len;
int flag = 0;
RPASR_RECOG_RESULT* pResult = new RPASR_RECOG_RESULT;
+ pResult->snippet_time = audio.get_time_len();
int nStep = 0;
int nTotal = audio.get_queue_size();
while (audio.fetch(buff, len, flag) > 0) {
@@ -105,6 +98,7 @@
int len;
int flag = 0;
RPASR_RECOG_RESULT* pResult = new RPASR_RECOG_RESULT;
+ pResult->snippet_time = audio.get_time_len();
int nStep = 0;
int nTotal = audio.get_queue_size();
while (audio.fetch(buff, len, flag) > 0) {
@@ -139,6 +133,7 @@
int nStep = 0;
int nTotal = audio.get_queue_size();
RPASR_RECOG_RESULT* pResult = new RPASR_RECOG_RESULT;
+ pResult->snippet_time = audio.get_time_len();
while (audio.fetch(buff, len, flag) > 0) {
pRecogObj->reset();
string msg = pRecogObj->forward(buff, len, flag);
@@ -162,6 +157,17 @@
return 1;
}
+
+
+ _RAPIDASRAPI const float RapidAsrGetRetSnippetTime(RPASR_RESULT Result)
+ {
+ if (!Result)
+ return 0.0f;
+
+ return ((RPASR_RECOG_RESULT*)Result)->snippet_time;
+
+ }
+
_RAPIDASRAPI const char* RapidAsrGetResult(RPASR_RESULT Result,int nIndex)
{
RPASR_RECOG_RESULT * pResult = (RPASR_RECOG_RESULT*)Result;
diff --git a/funasr/runtime/onnxruntime/tester/tester.cpp b/funasr/runtime/onnxruntime/tester/tester.cpp
index 21b783f..b9a85b7 100644
--- a/funasr/runtime/onnxruntime/tester/tester.cpp
+++ b/funasr/runtime/onnxruntime/tester/tester.cpp
@@ -34,21 +34,24 @@
gettimeofday(&end, NULL);
long seconds = (end.tv_sec - start.tv_sec);
- long micros = ((seconds * 1000000) + end.tv_usec) - (start.tv_usec);
- printf("Model initialization takes %lfs.\n", (double)micros / 1000000);
+ long modle_init_micros = ((seconds * 1000000) + end.tv_usec) - (start.tv_usec);
+ printf("Model initialization takes %lfs.\n", (double)modle_init_micros / 1000000);
- setbuf(stdout, NULL);
- cout << "Result: \"";
+
+
gettimeofday(&start, NULL);
RPASR_RESULT Result=RapidAsrRecogPCMFile(AsrHanlde, argv[2], RASR_NONE, NULL);
gettimeofday(&end, NULL);
-
+ float snippet_time = 0.0f;
if (Result)
{
string msg = RapidAsrGetResult(Result, 0);
+ setbuf(stdout, NULL);
+ cout << "Result: \"";
cout << msg << endl;
cout << "\"." << endl;
+ snippet_time = RapidAsrGetRetSnippetTime(Result);
RapidAsrFreeResult(Result);
}
else
@@ -56,11 +59,13 @@
cout <<("no return data!");
}
+ printf("Audio length %lfs.\n", (double)snippet_time);
+
seconds = (end.tv_sec - start.tv_sec);
long taking_micros = ((seconds * 1000000) + end.tv_usec) - (start.tv_usec);
- printf("Model inference takes %lfs.\n", (double)micros / 1000000);
+ printf("Model inference takes %lfs.\n", (double)taking_micros / 1000000);
- printf("Model inference RTF: %04lf.\n", (double)taking_micros/micros );
+ printf("Model inference RTF: %04lf.\n", (double)taking_micros/ (snippet_time*1000000));
RapidAsrUninit(AsrHanlde);
--
Gitblit v1.9.1