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

KonstantinGUI to force specific version of the compute shaders670f889

master
2.0 KiB72 linesraw
1#pragma once
2#include "AppState.h"
3#include "Utils/WTL/atlddx.h"
4#include "Utils/miscUtils.h"
5
6class LoadModelDlg:
7	public CDialogImpl<LoadModelDlg>,
8	public CWinDataExchange<LoadModelDlg>,
9	public iThreadPoolCallback
10{
11	AppState& appState;
12public:
13	static constexpr UINT IDD = IDD_OPEN_MODEL;
14	static constexpr UINT WM_CALLBACK_STATUS = WM_APP + 1;
15
16	LoadModelDlg( AppState& app ) : appState( app ) { }
17
18	HRESULT show();
19
20	BEGIN_MSG_MAP( LoadModelDlg )
21		MESSAGE_HANDLER( WM_INITDIALOG, OnInitDialog )
22		ON_BUTTON_CLICK( IDC_CONSOLE, cbConsole.click )
23		COMMAND_ID_HANDLER( IDCANCEL, OnCommand )
24		COMMAND_ID_HANDLER( IDOK, OnOk )
25		COMMAND_ID_HANDLER( IDC_BROWSE, OnBrowse )
26		MESSAGE_HANDLER( WM_CALLBACK_STATUS, OnCallbackStatus )
27		NOTIFY_ID_HANDLER( IDC_HYPERLINKS, OnHyperlink )
28		ON_BUTTON_CLICK( IDC_MODEL_ADV, onModelAdvanced )
29	END_MSG_MAP()
30
31	BEGIN_DDX_MAP( LoadModelDlg )
32		DDX_CONTROL_HANDLE( IDC_PATH, modelPath )
33		DDX_CONTROL_HANDLE( IDC_MODEL_TYPE, cbModelType )
34		DDX_CONTROL_HANDLE( IDC_PROGRESS, progressBar );
35	END_DDX_MAP()
36	
37private:
38	std::vector<HWND> editorsWindows;
39	std::vector<HWND> pendingWindows;
40	void setPending( bool nowPending );
41
42	LRESULT OnInitDialog( UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL& bHandled );
43	LRESULT OnCallbackStatus( UINT, WPARAM wParam, LPARAM, BOOL& bHandled );
44
45	LRESULT OnCommand( UINT, INT nIdentifier, HWND, BOOL& bHandled )
46	{
47		ATLVERIFY( EndDialog( nIdentifier ) );
48		return 0;
49	}
50	LRESULT OnBrowse( UINT, INT, HWND, BOOL& bHandled );
51	LRESULT OnOk( UINT, INT, HWND, BOOL& bHandled );
52
53	ConsoleCheckbox cbConsole;
54	CComboBox cbModelType;
55	CEdit modelPath;
56	CProgressBarCtrl progressBar;
57
58	LRESULT validationError( LPCTSTR message );
59	LRESULT validationError( LPCTSTR message, HRESULT hr );
60
61	ThreadPoolWork work;
62	CString path;
63	Whisper::eModelImplementation impl;
64	CString loadError;
65	void __stdcall poolCallback() noexcept override final;
66
67	LRESULT OnHyperlink( int idCtrl, LPNMHDR pnmh, BOOL& bHandled );
68
69	static HRESULT __stdcall progressCallback( double val, void* pv ) noexcept;
70
71	void onModelAdvanced();
72};