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

KonstantinSource codes8c4603c

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