long set_voice( const char* aName, const char* aLang=NULL, unsigned char aGender=0, unsigned char aAge=0, unsigned char aVariant = 0 ) { long result = 0; if (aLang || aGender || aAge || aVariant) { espeak_VOICE props = { 0 }; props.name = aName; props.languages = aLang; props.gender = aGender; props.age = aAge; props.variant = aVariant; result = espeak_SetVoiceByProperties(&props); } else { result = espeak_SetVoiceByName(aName); } // This way we don't need to allocate the name/lang strings to the heap. // Instead, we store the actual global voice. current_voice = espeak_GetCurrentVoice(); return result; }
void QGCAudioWorker::init() { #if defined Q_OS_LINUX && !defined __android__ && defined QGC_SPEECH_ENABLED espeak_Initialize(AUDIO_OUTPUT_SYNCH_PLAYBACK, 500, NULL, 0); // initialize for playback with 500ms buffer and no options (see speak_lib.h) espeak_VOICE *espeak_voice = espeak_GetCurrentVoice(); espeak_voice->languages = "en-uk"; // Default to British English espeak_voice->identifier = NULL; // no specific voice file specified espeak_voice->name = "klatt"; // espeak voice name espeak_voice->gender = 2; // Female espeak_voice->age = 0; // age not specified espeak_SetVoiceByProperties(espeak_voice); #endif #if defined _MSC_VER && defined QGC_SPEECH_ENABLED if (FAILED(::CoInitialize(NULL))) { qDebug() << "ERROR: Creating COM object for audio output failed!"; } else { HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice); if (FAILED(hr)) { qDebug() << "ERROR: Initializing voice for audio output failed!"; } } #endif }
espeak_VOICE* PlatformSpeechSynthesisProviderEfl::currentVoice() const { return espeak_GetCurrentVoice(); }