espeak.bac
'
' eSpeak definitions based on libespeak 1.47 - http://espeak.sourceforge.net/
'
' Ported to BaCon INCLUDE file by Peter van Eerten - MIT License 2016.
'
' Version 1.0: Initial release - thanks to vovchik for his groundbreaking work.
' Version 1.1: Allow SSML tags in text.
'
'-----------------------------------------------------------------------------------
'
' API by vovchik - 2015
'
' ESPEAK_INIT(voice$)
' => Initialize eSpeak on default sound device. Voice can be empty, or NULL, or "en", "en-us",
' "nl", "de", "ru", etc. or a common ISO 639-1 code. See http://espeak.sourceforge.net/languages.html
'
' ESPEAK_INFO
' => Print some information about the eSpeak version
'
' ESPEAK_SET(parameter, value)
' => Set properties of the eSpeak voice:
'
' espeakRATE: speaking speed in word per minute, values 80 to 450.
' espeakVOLUME: volume in range 0-200 or more.
' 0=silence, 100=normal full volume, greater values may produce amplitude compression or distortion
' espeakPITCH: base pitch, range 0-100, value 50=normal
' espeakRANGE: pitch range, range 0-100. 0-monotone, 50=normal
' espeakPUNCTUATION: which punctuation characters to announce:
' value in espeak_PUNCT_TYPE (none, all, some)
' espeakCAPITALS: announce capital letters by:
' 0=none,
' 1=sound icon,
' 2=spelling,
' 3 or higher, by raising pitch. This values gives the amount in Hz by which the pitch
' of a word raised to indicate it has a capital letter.
' espeakWORDGAP: pause between words, units of 10mS (at the default speed)
'
' ESPEAK_SAY(text$)
' => Speak the text$
'
' ESPEAK_FREE
' => Free allocated resources for eSpeak
'
'-----------------------------------------------------------------------------------
ESPEAK_lib$ = "libespeak.so.0"
ESPEAK_seq = -1
CATCH GOTO espeak_lib_import_retry
LABEL espeak_lib_import_retry
INCR ESPEAK_seq
IF ESPEAK_seq > 100 THEN
PRINT "No eSpeak library found! Exiting."
END 1
ENDIF
ESPEAK_lib$ = LEFT$(ESPEAK_lib$, INSTRREV(ESPEAK_lib$, ".")) & STR$(ESPEAK_seq)
IMPORT "espeak_Initialize(int,int,const char*,int)" FROM ESPEAK_lib$ TYPE int
CATCH RESET
ENUM
POS_CHARACTER = 1,
POS_WORD,
POS_SENTENCE
ENDENUM
ENUM
AUDIO_OUTPUT_PLAYBACK,
AUDIO_OUTPUT_RETRIEVAL,
AUDIO_OUTPUT_SYNCHRONOUS,
AUDIO_OUTPUT_SYNCH_PLAYBACK
ENDENUM
ENUM
EE_OK=0,
EE_INTERNAL_ERROR=-1,
EE_BUFFER_FULL=1,
EE_NOT_FOUND=2
ENDENUM
ENUM
espeakSILENCE=0, /* internal use */
espeakRATE=1,
espeakVOLUME=2,
espeakPITCH=3,
espeakRANGE=4,
espeakPUNCTUATION=5,
espeakCAPITALS=6,
espeakWORDGAP=7,
espeakOPTIONS=8,
espeakINTONATION=9,
espeakRESERVED1=10,
espeakRESERVED2=11,
espeakEMPHASIS, /* internal use */
espeakLINELENGTH, /* internal use */
espeakVOICETYPE, /* internal, 1=mbrola */
N_SPEECH_PARAM /* last enum */
ENDENUM
ENUM
espeakPUNCT_NONE=0,
espeakPUNCT_ALL=1,
espeakPUNCT_SOME=2
ENDENUM
CONST espeakCHARS_AUTO = 0
CONST espeakCHARS_UTF8 = 1
CONST espeakCHARS_8BIT = 2
CONST espeakCHARS_WCHAR = 3
CONST espeakCHARS_16BIT = 4
CONST espeakSSML = 0x10
CONST espeakPHONEMES = 0x100
CONST espeakENDPAUSE = 0x1000
CONST espeakKEEP_NAMEDATA = 0x2000
IMPORT "espeak_SetSynthCallback(void*)" FROM ESPEAK_lib$ TYPE void
IMPORT "espeak_SetUriCallback(void*)" FROM ESPEAK_lib$ TYPE void
IMPORT "espeak_Synth(const void*,size_t,unsigned int,int,unsigned int,unsigned int,unsigned int*,void*)" FROM ESPEAK_lib$ TYPE int
IMPORT "espeak_Synth_Mark(const void*,size_t,char*,unsigned int,unsigned int,unsigned int*,void*)" FROM ESPEAK_lib$ TYPE int
IMPORT "espeak_Key(char*)" FROM ESPEAK_lib$ TYPE int
IMPORT "espeak_Char(short)" FROM ESPEAK_lib$ TYPE int
IMPORT "espeak_SetParameter(int,int,int)" FROM ESPEAK_lib$ TYPE int
IMPORT "espeak_GetParameter(int,int)" FROM ESPEAK_lib$ TYPE int
IMPORT "espeak_SetPunctuationList(char*)" FROM ESPEAK_lib$ TYPE int
IMPORT "espeak_SetPhonemeTrace(int,FILE*)" FROM ESPEAK_lib$ TYPE void
IMPORT "espeak_TextToPhonemes(const void**,int,int)" FROM ESPEAK_lib$ TYPE const char*
IMPORT "espeak_CompileDictionary(const char*,FILE*,int)" FROM ESPEAK_lib$ TYPE void
/* espeak_ListVoices */
IMPORT "espeak_SetVoiceByName(char*)" FROM ESPEAK_lib$ TYPE int
/* espeak_SetVoiceByProperties */
/* espeak_GetCurrentVoice */
IMPORT "espeak_Cancel(void)" FROM ESPEAK_lib$ TYPE int
IMPORT "espeak_IsPlaying(void)" FROM ESPEAK_lib$ TYPE int
IMPORT "espeak_Synchronize(void)" FROM ESPEAK_lib$ TYPE int
IMPORT "espeak_Terminate(void)" FROM ESPEAK_lib$ TYPE int
IMPORT "espeak_Info(const char**)" FROM ESPEAK_lib$ TYPE char*
SUB ESPEAK_INIT(voice$)
espeak_Initialize(AUDIO_OUTPUT_PLAYBACK, 0, NULL, 0)
IF LEN(voice$) = 0 THEN
espeak_SetVoiceByName("default")
ELSE
espeak_SetVoiceByName(voice$)
ENDIF
END SUB
SUB ESPEAK_INFO
LOCAL version$
version$ = espeak_Info(NULL)
PRINT "Version of eSpeak: ", version$
END SUB
SUB SPEAK_SET(int parameter, int value)
espeak_SetParameter(parameter, value, 0)
END SUB
SUB ESPEAK_SAY(STRING text$)
espeak_Synth(text$, LEN(text$), 0, POS_CHARACTER, 0, espeakPHONEMES|espeakSSML|espeakENDPAUSE, NULL, NULL)
espeak_Synchronize()
END SUB
SUB ESPEAK_EXIT
espeak_Cancel()
espeak_Terminate()
END SUB
Generated by GNU Enscript 1.6.5.90.