extern "C" {\r
#endif\r
\r
+#define UINT unsigned int\r
\r
typedef enum _eTypeLanguage\r
{\r
#define SMT_SYNTHESIS_SENTENCE_DONE 2\r
#define SMT_SYNTHESIS_PAUSE_DONE 3\r
\r
-int SMTInitialize(void);\r
-int SMTFinalize(void);\r
-int SMTSet_Language(eTypeLanguage eLanguage, int VoiceType, int ModelFileLocation);\r
-int SMTInputText(char const * const pszText_UTF8);\r
-int SMTSynthesize(short * const pPcmBuffer);\r
-\r
-int SMTGetFramePeriod (void);\r
-\r
+typedef enum _eTypeTTSMode\r
+{\r
+ eTTSMode_Normal,\r
+ eTTSMode_Dictionary,\r
+ \r
+ ///////////////////////////////////////////\r
+ \r
+ eTTSMode_INVALID,\r
+} eTypeTTSMode;\r
\r
typedef enum\r
{\r
eSMTSpeechSpeed_VeryFast,\r
} etypeSpeechSpeed;\r
\r
+int SMTSetVoice (eTypeTTSMode const eTTSMode, char const * const pszFilePath, char const DirDelimiter, char const * const pszLanguage, char const * const pszContry, char const * const pszVoiceType, UINT const VoiceIndex);\r
+int SMTCheckVoiceAvailable(eTypeTTSMode const eTTSMode, char const * const pszFilePath, char const DirDelimiter, char const * const pszLanguage, char const * const pszContry, char const * const pszVoiceType, UINT const VoiceIndex);\r
+\r
+\r
+int SMTInitialize(void);\r
+int SMTFinalize(void);\r
+int SMTSet_Language(eTypeLanguage eLanguage, int VoiceType, int ModelFileLocation);\r
+int SMTInputText(char const * const pszText_UTF8);\r
+int SMTSynthesize(short * const pPcmBuffer);\r
+\r
+int SMTGetFramePeriod (void);\r
+\r
void SMTSetSpeechSpeed(etypeSpeechSpeed const speed);\r
\r
int SMTSaveWave(char* pszFileName, short* pOutData, int const nDataSize);\r
\r
static char const _pszKorean [] = "ko_KR";\r
static char const _pszUSEnglish [] = "en_US";\r
-static char const _pszChinese [] = "zh_CN";\r
-\r
-\r
-static char const _pszUKEnglish [] = "en_GB";\r
static char const _pszGerman [] = "de_DE";\r
static char const _pszSpanish [] = "es_ES";\r
static char const _pszFrench [] = "fr_FR";\r
\r
static unsigned int const _sszKorean = sizeof(_pszKorean);\r
static unsigned int const _sszUSEnglish = sizeof(_pszUSEnglish);\r
-static unsigned int const _sszChinese = sizeof(_pszChinese);\r
-static unsigned int const _sszUKEnglish = sizeof(_pszUKEnglish);\r
static unsigned int const _sszGerman = sizeof(_pszGerman);\r
static unsigned int const _sszSpanish = sizeof(_pszSpanish);\r
static unsigned int const _sszFrench = sizeof(_pszFrench);\r
{\r
{ _pszKorean , _sszKorean , TTSP_VOICE_TYPE_FEMALE },\r
{ _pszUSEnglish , _sszUSEnglish , TTSP_VOICE_TYPE_FEMALE },\r
- { _pszChinese , _sszChinese , TTSP_VOICE_TYPE_FEMALE },\r
\r
- { _pszUKEnglish , _sszUKEnglish , TTSP_VOICE_TYPE_FEMALE },\r
{ _pszGerman , _sszGerman , TTSP_VOICE_TYPE_FEMALE },\r
{ _pszSpanish , _sszSpanish , TTSP_VOICE_TYPE_FEMALE },\r
{ _pszFrench , _sszFrench , TTSP_VOICE_TYPE_FEMALE },\r
// index of VoiceInfos\r
#define VOICE_INDEX_KOREAN_WOMAN 0\r
#define VOICE_INDEX_USENGLISH_WOMAN 1\r
-#define VOICE_INDEX_CHINESE_WOMAN 2\r
-#define VOICE_INDEX_UKENGLISH_WOMAN 3\r
-#define VOICE_INDEX_GERMAN_WOMAN 4\r
-#define VOICE_INDEX_SPANISH_WOMAN 5\r
-#define VOICE_INDEX_FRENCH_WOMAN 6\r
-#define VOICE_INDEX_ITALIAN_WOMAN 7\r
+#define VOICE_INDEX_GERMAN_WOMAN 2\r
+#define VOICE_INDEX_SPANISH_WOMAN 3\r
+#define VOICE_INDEX_FRENCH_WOMAN 4\r
+#define VOICE_INDEX_ITALIAN_WOMAN 5\r
\r
\r
\r
\r
char const * SLPSMT_GetPszKorean (void) { return _pszKorean ; }\r
char const * SLPSMT_GetPszUSEnglish (void) { return _pszUSEnglish ; }\r
-char const * SLPSMT_GetPszChinese (void) { return _pszChinese ; }\r
-char const * SLPSMT_GetPszUKEnglish (void) { return _pszUKEnglish ; }\r
+\r
+\r
char const * SLPSMT_GetPszGerman (void) { return _pszGerman ; }\r
char const * SLPSMT_GetPszSpanish (void) { return _pszSpanish ; }\r
char const * SLPSMT_GetPszFrench (void) { return _pszFrench ; }\r
\r
\r
ttspe_voice_info_s * _gpVoiceInfos = NULL;\r
+#define DATA_DIR1 "/usr/share/voice/tts/smt_vdata/"\r
+\r
+\r
+int SLPSMT_GetiVoiceInfoEx(char* const pszLanguage, ttsp_voice_type_e const eVoiceType)\r
+{\r
+ int i;\r
+ for (i=0 ; i<_nVoiceInfos ; i++)\r
+ {\r
+ if ( eVoiceType == _pVoiceInfos[i].eVoiceType && ! strcmp(pszLanguage , _pVoiceInfos[i].pszLanguage) )\r
+ {\r
+ int iResult = -1;\r
+ _eTypeTTSMode TTSType = eTTSMode_Normal;\r
+ char Language[3] = {0,};\r
+ char Contry[3] = {0,};\r
+ char VoiceType[2] = {0,};\r
+\r
+ VoiceType[0] = 'f';\r
+ VoiceType[1] = 0;\r
+ memcpy( Language , pszLanguage , sizeof(Language)-1);\r
+ memcpy( Contry , pszLanguage+3 , sizeof(Contry)-1);\r
+\r
+ if( eVoiceType == TTSP_VOICE_TYPE_MALE ) VoiceType[0] = 'm';\r
+\r
+ iResult = SMTCheckVoiceAvailable( (_eTypeTTSMode)TTSType , DATA_DIR1 , '/' , Language , Contry , VoiceType , 1 );\r
+\r
+ printf("%d)####### iResult [%d]\n",i , iResult);\r
+\r
+ if( iResult == 0 ) return i ;\r
+ }\r
+ }\r
+ return -1;\r
+}\r
\r
int SLPSMT_SetVoiceList(ttspe_voice_list_s * p)\r
{\r
{\r
case VOICE_INDEX_KOREAN_WOMAN : SMTSet_Language(eKOREAN , 1, 0); break;\r
case VOICE_INDEX_USENGLISH_WOMAN : SMTSet_Language(eUSENGLISH , 1, 0); break;\r
- case VOICE_INDEX_CHINESE_WOMAN : SMTSet_Language(eCHINESE , 1, 0); break;\r
-\r
- case VOICE_INDEX_UKENGLISH_WOMAN : SMTSet_Language(eGBENGLISH , 1, 0); break;\r
case VOICE_INDEX_GERMAN_WOMAN : SMTSet_Language(eGERMAN , 1, 0); break;\r
case VOICE_INDEX_SPANISH_WOMAN : SMTSet_Language(eSPANISH , 1, 0); break;\r
case VOICE_INDEX_FRENCH_WOMAN : SMTSet_Language(eFRENCH , 1, 0); break;\r