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