#pragma once #include typedef struct { std::string msg; float snippet_time; }FUNASR_RECOG_RESULT; #ifdef _WIN32 #include inline std::wstring String2wstring(const std::string& str, const std::string& locale) { typedef std::codecvt_byname F; std::wstring_convert strCnv(new F(locale)); return strCnv.from_bytes(str); } inline std::wstring StrToWstr(std::string str) { if (str.length() == 0) return L""; return String2wstring(str, "zh-CN"); } #endif inline void GetInputName(Ort::Session* session, string& inputName,int nIndex=0) { size_t numInputNodes = session->GetInputCount(); if (numInputNodes > 0) { Ort::AllocatorWithDefaultOptions allocator; { auto t = session->GetInputNameAllocated(nIndex, allocator); inputName = t.get(); } } } inline void GetOutputName(Ort::Session* session, string& outputName, int nIndex = 0) { size_t numOutputNodes = session->GetOutputCount(); if (numOutputNodes > 0) { Ort::AllocatorWithDefaultOptions allocator; { auto t = session->GetOutputNameAllocated(nIndex, allocator); outputName = t.get(); } } } template inline static size_t Argmax(ForwardIterator first, ForwardIterator last) { return std::distance(first, std::max_element(first, last)); }