mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
DirtySDK (EA's Dirty Sockets library) will be used for the LiveAPI implementation, and depends on: EABase, EAThread.
147 lines
7.0 KiB
C
147 lines
7.0 KiB
C
/*H********************************************************************************/
|
|
/*!
|
|
\File voiptranscribe.h
|
|
|
|
\Description
|
|
Voip transcription API wrapping Cloud-based speech-to-text services, supporting
|
|
IBM Watson, Microsoft Speech Service, Google Speech, and Amazon Transcribe.
|
|
|
|
\Copyright
|
|
Copyright 2018 Electronic Arts
|
|
|
|
\Version 08/30/2018 (jbrookes) First Version
|
|
*/
|
|
/********************************************************************************H*/
|
|
|
|
#ifndef _voiptranscribe_h
|
|
#define _voiptranscribe_h
|
|
|
|
/*!
|
|
\Moduledef VoipTranscribe VoipTranscribe
|
|
\Modulemember Voip
|
|
*/
|
|
//@{
|
|
|
|
/*** Include files ****************************************************************/
|
|
|
|
#include "DirtySDK/platform.h"
|
|
|
|
/*** Defines **********************************************************************/
|
|
|
|
//! maximum length of transcription text, null termination included
|
|
#define VOIPTRANSCRIBE_OUTPUT_MAX (1024)
|
|
|
|
/*
|
|
Transcription profiles
|
|
*/
|
|
|
|
// [......xx] transport (1=http, 2=http/2, 3=websockets)
|
|
// [....xx..] audio format (1=li16, 2=wav16, 3=opus)
|
|
// [..xx....] provider (1=watson, 2=bing)
|
|
// [xx......] reserved
|
|
|
|
//! construct a transcription profile identifier
|
|
#define VOIPTRANSCRIBE_PROFILE_CONSTRUCT(_eProvider, _eAudioFormat, _eTransport) ((_eTransport)|((_eAudioFormat)<<8)|((_eProvider<<16)))
|
|
#define VOIPTRANSCRIBE_PROFILE_PROVIDER(_uProfile) (VoipTranscribeProviderE)(((_uProfile)>>16)&0xff)
|
|
#define VOIPTRANSCRIBE_PROFILE_FORMAT(_uProfile) (VoipTranscribeFormatE)(((_uProfile)>>8)&0xff)
|
|
#define VOIPTRANSCRIBE_PROFILE_TRANSPORT(_uProfile) (VoipTranscribeTransportE)((_uProfile)&0xff)
|
|
|
|
// disabled profile
|
|
#define VOIPTRANSCRIBE_PROFILE_DISABLED VOIPTRANSCRIBE_PROFILE_CONSTRUCT(VOIPTRANSCRIBE_PROVIDER_NONE, VOIPTRANSCRIBE_FORMAT_NONE, VOIPTRANSCRIBE_TRANSPORT_NONE)
|
|
// watson profiles
|
|
#define VOIPTRANSCRIBE_PROFILE_IBMWATSON_HTTP_LI16 VOIPTRANSCRIBE_PROFILE_CONSTRUCT(VOIPTRANSCRIBE_PROVIDER_IBMWATSON, VOIPTRANSCRIBE_FORMAT_LI16, VOIPTRANSCRIBE_TRANSPORT_HTTP)
|
|
#define VOIPTRANSCRIBE_PROFILE_IBMWATSON_HTTP_WAV16 VOIPTRANSCRIBE_PROFILE_CONSTRUCT(VOIPTRANSCRIBE_PROVIDER_IBMWATSON, VOIPTRANSCRIBE_FORMAT_WAV16, VOIPTRANSCRIBE_TRANSPORT_HTTP)
|
|
#define VOIPTRANSCRIBE_PROFILE_IBMWATSON_HTTP_OPUS VOIPTRANSCRIBE_PROFILE_CONSTRUCT(VOIPTRANSCRIBE_PROVIDER_IBMWATSON, VOIPTRANSCRIBE_FORMAT_OPUS, VOIPTRANSCRIBE_TRANSPORT_HTTP)
|
|
#define VOIPTRANSCRIBE_PROFILE_IBMWATSON_WEBSOCKETS_LI16 VOIPTRANSCRIBE_PROFILE_CONSTRUCT(VOIPTRANSCRIBE_PROVIDER_IBMWATSON, VOIPTRANSCRIBE_FORMAT_LI16, VOIPTRANSCRIBE_TRANSPORT_WEBSOCKETS)
|
|
#define VOIPTRANSCRIBE_PROFILE_IBMWATSON_WEBSOCKETS_WAV16 VOIPTRANSCRIBE_PROFILE_CONSTRUCT(VOIPTRANSCRIBE_PROVIDER_IBMWATSON, VOIPTRANSCRIBE_FORMAT_WAV16, VOIPTRANSCRIBE_TRANSPORT_WEBSOCKETS)
|
|
#define VOIPTRANSCRIBE_PROFILE_IBMWATSON_WEBSOCKETS_OPUS VOIPTRANSCRIBE_PROFILE_CONSTRUCT(VOIPTRANSCRIBE_PROVIDER_IBMWATSON, VOIPTRANSCRIBE_FORMAT_OPUS, VOIPTRANSCRIBE_TRANSPORT_WEBSOCKETS)
|
|
// bing profiles
|
|
#define VOIPTRANSCRIBE_PROFILE_MICROSOFT_HTTP_WAV16 VOIPTRANSCRIBE_PROFILE_CONSTRUCT(VOIPTRANSCRIBE_PROVIDER_MICROSOFT, VOIPTRANSCRIBE_FORMAT_WAV16, VOIPTRANSCRIBE_TRANSPORT_HTTP)
|
|
#define VOIPTRANSCRIBE_PROFILE_MICROSOFT_HTTP_OPUS VOIPTRANSCRIBE_PROFILE_CONSTRUCT(VOIPTRANSCRIBE_PROVIDER_MICROSOFT, VOIPTRANSCRIBE_FORMAT_OPUS, VOIPTRANSCRIBE_TRANSPORT_HTTP)
|
|
// google profiles
|
|
#define VOIPTRANSCRIBE_PROFILE_GOOGLE_HTTP_LI16 VOIPTRANSCRIBE_PROFILE_CONSTRUCT(VOIPTRANSCRIBE_PROVIDER_GOOGLE, VOIPTRANSCRIBE_FORMAT_LI16, VOIPTRANSCRIBE_TRANSPORT_HTTP)
|
|
#define VOIPTRANSCRIBE_PROFILE_GOOGLE_HTTP_OPUS VOIPTRANSCRIBE_PROFILE_CONSTRUCT(VOIPTRANSCRIBE_PROVIDER_GOOGLE, VOIPTRANSCRIBE_FORMAT_OPUS, VOIPTRANSCRIBE_TRANSPORT_HTTP)
|
|
#define VOIPTRANSCRIBE_PROFILE_GOOGLE_HTTP2_LI16 VOIPTRANSCRIBE_PROFILE_CONSTRUCT(VOIPTRANSCRIBE_PROVIDER_GOOGLE, VOIPTRANSCRIBE_FORMAT_LI16, VOIPTRANSCRIBE_TRANSPORT_HTTP2)
|
|
#define VOIPTRANSCRIBE_PROFILE_GOOGLE_HTTP2_OPUS VOIPTRANSCRIBE_PROFILE_CONSTRUCT(VOIPTRANSCRIBE_PROVIDER_GOOGLE, VOIPTRANSCRIBE_FORMAT_OPUS, VOIPTRANSCRIBE_TRANSPORT_HTTP2)
|
|
// amazon profiles
|
|
#define VOIPTRANSCRIBE_PROFILE_AMAZON_HTTP2 VOIPTRANSCRIBE_PROFILE_CONSTRUCT(VOIPTRANSCRIBE_PROVIDER_AMAZON, VOIPTRANSCRIBE_FORMAT_LI16, VOIPTRANSCRIBE_TRANSPORT_HTTP2)
|
|
|
|
/*** Macros ***********************************************************************/
|
|
|
|
/*** Type Definitions *************************************************************/
|
|
|
|
//! possible transcription providers
|
|
typedef enum VoipTranscribeProviderE
|
|
{
|
|
VOIPTRANSCRIBE_PROVIDER_NONE,
|
|
VOIPTRANSCRIBE_PROVIDER_IBMWATSON, //!< IBM Watson
|
|
VOIPTRANSCRIBE_PROVIDER_MICROSOFT, //!< Microsoft Cognitive Services
|
|
VOIPTRANSCRIBE_PROVIDER_GOOGLE, //!< Google Speech
|
|
VOIPTRANSCRIBE_PROVIDER_AMAZON, //!< Amazon Transcribe
|
|
VOIPTRANSCRIBE_NUMPROVIDERS
|
|
} VoipTranscribeProviderE;
|
|
|
|
//! possible transcription audio formats
|
|
typedef enum VoipTranscribeFormatE
|
|
{
|
|
VOIPTRANSCRIBE_FORMAT_NONE,
|
|
VOIPTRANSCRIBE_FORMAT_LI16, //!< 16bit linear PCM audio with no framing
|
|
VOIPTRANSCRIBE_FORMAT_WAV16, //!< 16bit linear PCM in a WAV wrapper
|
|
VOIPTRANSCRIBE_FORMAT_OPUS, //!< Opus codec
|
|
VOIPTRANSCRIBE_NUMFORMATS
|
|
} VoipTranscribeFormatE;
|
|
|
|
//! possible transport protocols
|
|
typedef enum VoipTranscribeTransportE
|
|
{
|
|
VOIPTRANSCRIBE_TRANSPORT_NONE,
|
|
VOIPTRANSCRIBE_TRANSPORT_HTTP, //!< HTTPS
|
|
VOIPTRANSCRIBE_TRANSPORT_HTTP2, //!< HTTP2
|
|
VOIPTRANSCRIBE_TRANSPORT_WEBSOCKETS, //!< WebSockets
|
|
VOIPTRANSCRIBE_NUMTRANSPORTS
|
|
} VoipTranscribeTransportE;
|
|
|
|
//! opaque module state
|
|
typedef struct VoipTranscribeRefT VoipTranscribeRefT;
|
|
|
|
/*** Variables ********************************************************************/
|
|
|
|
/*** Functions ********************************************************************/
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
// create the module
|
|
DIRTYCODE_API VoipTranscribeRefT *VoipTranscribeCreate(int32_t iBufSize);
|
|
|
|
// configure the transcribe module
|
|
DIRTYCODE_API void VoipTranscribeConfig(uint32_t uProfile, const char *pUrl, const char *pKey);
|
|
|
|
// destroy the module
|
|
DIRTYCODE_API void VoipTranscribeDestroy(VoipTranscribeRefT *pVoipTranscribe);
|
|
|
|
// submit voice data to be transcribed
|
|
DIRTYCODE_API int32_t VoipTranscribeSubmit(VoipTranscribeRefT *pVoipTranscribe, const uint8_t *pBuffer, int32_t iBufLen);
|
|
|
|
// get a transcription
|
|
DIRTYCODE_API int32_t VoipTranscribeGet(VoipTranscribeRefT *pVoipTranscribe, char *pBuffer, int32_t iBufLen);
|
|
|
|
// get module status
|
|
DIRTYCODE_API int32_t VoipTranscribeStatus(VoipTranscribeRefT *pVoipTranscribe, int32_t iStatus, int32_t iValue, void *pBuffer, int32_t iBufSize);
|
|
|
|
// set control options
|
|
DIRTYCODE_API int32_t VoipTranscribeControl(VoipTranscribeRefT *pVoipTranscribe, int32_t iControl, int32_t iValue, int32_t iValue2, void *pValue);
|
|
|
|
// update module
|
|
DIRTYCODE_API void VoipTranscribeUpdate(VoipTranscribeRefT *pVoipTranscribe);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
//@}
|
|
|
|
#endif // _voiptranscribe_h
|
|
|