#ifndef EBYROID_H #define EBYROID_H #include #include #include namespace ebyroid { // forward-declaration to avoid including api_adapter.h class ApiAdapter; struct ConvertParams { bool needs_reload; char* base_dir; char* voice; float volume; }; class Ebyroid { public: Ebyroid(const Ebyroid&) = delete; Ebyroid(Ebyroid&&) = delete; ~Ebyroid(); static Ebyroid* Create(const std::string& base_dir, const std::string& dllpath, const std::string& voice, float volume,float speed); int Hiragana(const unsigned char* inbytes, unsigned char** outbytes, size_t* outsize); int Speech(const unsigned char* inbytes, int16_t** outbytes, size_t* outsize, uint32_t mode = 0u); int Convert(const ConvertParams& params, const unsigned char* inbytes, int16_t** outbytes, size_t* outsize); private: Ebyroid(ApiAdapter* api_adapter) : api_adapter_(api_adapter) {} ApiAdapter* api_adapter_; }; class Response { public: Response(ApiAdapter* adapter) : api_adapter_(adapter) {} void Write(char* bytes, uint32_t size); void Write16(int16_t* shorts, uint32_t size); std::vector End(); std::vector End16(); ApiAdapter* api_adapter() { return api_adapter_; }; private: ApiAdapter* api_adapter_; std::vector buffer_; std::vector buffer_16_; }; } // namespace ebyroid #endif // EBYROID_H