Merge pull request #193 from RapidAI/main
Bugfix: correct RTF in tester
| | |
| | | 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(); } |
| | | }; |
| | |
| | | |
| | | _RAPIDASRAPI void RapidAsrUninit(RPASR_HANDLE Handle); |
| | | |
| | | _RAPIDASRAPI const float RapidAsrGetRetSnippetTime(RPASR_RESULT Result); |
| | | |
| | | #ifdef __cplusplus |
| | | |
| | |
| | | speech_len); |
| | | } |
| | | |
| | | float Audio::get_time_len() |
| | | { |
| | | return (float)speech_len / 16000; |
| | | //speech_len); |
| | | } |
| | | |
| | | bool Audio::loadwav(const char *filename) |
| | | { |
| | | |
| | |
| | | typedef struct |
| | | { |
| | | std::string msg; |
| | | |
| | | float snippet_time; |
| | | }RPASR_RECOG_RESULT; |
| | | |
| | | |
| | |
| | | #include "precomp.h" |
| | | #ifdef __cplusplus |
| | | |
| | | |
| | | |
| | | // void __attribute__ ((visibility ("default"))) fun(); |
| | | extern "C" { |
| | | #endif |
| | | |
| | |
| | | _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); |
| | | |
| | |
| | | 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) { |
| | |
| | | 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) { |
| | |
| | | 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) { |
| | |
| | | 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); |
| | |
| | | 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; |
| | |
| | | |
| | | 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 |
| | |
| | | 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); |
| | | |