yum-archive/TaSTT-Whisper
High-performance GPGPU inference of OpenAI's Whisper automatic speech recognition (ASR) model
git clone https://git.yummers.dev/yum-archive/TaSTT-Whisper
8c4603c
master
1#include "miscUtils.h" 2#define WIN32_LEAN_AND_MEAN 3#include <windows.h> 4 5std::string utf8 (const std::wstring & utf16 ) 6{ 7int count = WideCharToMultiByte (CP_UTF8 ,0 ,utf16 .c_str (), (int )utf16 .length (),nullptr ,0 ,nullptr ,nullptr ); 8 std::string str (count ,0 ); 9WideCharToMultiByte (CP_UTF8 ,0 ,utf16 .c_str (),-1 ,& str [0 ],count ,nullptr ,nullptr ); 10return str ; 11} 12 13std::wstring utf16 (const std::string & u8 ) 14{ 15int count = MultiByteToWideChar (CP_UTF8 ,0 ,u8 .c_str (), (int )u8 .length (),nullptr ,0 ); 16 std::wstring str (count ,0 ); 17MultiByteToWideChar (CP_UTF8 ,0 ,u8 .c_str (), (int )u8 .length (),& str [0 ],count ); 18return str ; 19} 20 21namespace 22{ 23wchar_t * formatMessage (HRESULT hr ) 24 { 25wchar_t * err ; 26if (FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER |FORMAT_MESSAGE_FROM_SYSTEM , 27NULL , 28hr , 29MAKELANGID (LANG_NEUTRAL ,SUBLANG_DEFAULT ), 30 (LPTSTR )& err , 310 , 32NULL ) ) 33return err ; 34return nullptr ; 35 } 36} 37 38void printError (const char * what ,HRESULT hr ) 39{ 40const wchar_t * err = formatMessage (hr ); 41if (nullptr != err ) 42 { 43fwprintf (stderr ,L"%S: %s\n" ,what ,err ); 44LocalFree ( (HLOCAL )err ); 45 } 46else 47fprintf (stderr ,"%s: error code %i (0x%08X)\n" ,what ,hr ,hr ); 48}