2023-11-25 10:16:48 +02:00

40 lines
1.2 KiB
C++

#pragma once
#include "Chessboard.h"
#include "whisper.h"
#include <string>
#include <vector>
class Chess {
public:
using StatusSetter = void (*)(const std::string & status);
using ISRunning = bool (*)();
using AudioGetter = void (*)(int, std::vector<float>&);
using MovesSetter = void (*)(const std::string & moves);
Chess( whisper_context * ctx,
const whisper_full_params & wparams,
StatusSetter status_setter,
ISRunning running,
AudioGetter audio,
MovesSetter moveSetter);
void run();
std::string stringifyBoard();
private:
void get_audio(int ms, std::vector<float>& pcmf32);
void set_status(const char* msg);
void set_moves(const std::string& moves);
bool check_running();
std::string transcribe(
const std::vector<float> & pcmf32,
float & logprob_min,
float & logprob_sum,
int & n_tokens,
int64_t & t_ms);
whisper_context * m_ctx;
whisper_full_params m_wparams;
StatusSetter m_status_setter;
ISRunning m_running;
AudioGetter m_audio;
MovesSetter m_moveSetter;
Chessboard m_board;
};