2 // Open Service Platform
\r
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
\r
5 // Licensed under the Apache License, Version 2.0 (the License);
\r
6 // you may not use this file except in compliance with the License.
\r
7 // You may obtain a copy of the License at
\r
9 // http://www.apache.org/licenses/LICENSE-2.0
\r
11 // Unless required by applicable law or agreed to in writing, software
\r
12 // distributed under the License is distributed on an "AS IS" BASIS,
\r
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
14 // See the License for the specific language governing permissions and
\r
15 // limitations under the License.
\r
19 * @file FUixSpeech_SpeechToTextImpl.cpp
\r
20 * @brief This is the implementation file for the _SpeechToTextImpl class.
\r
22 * This files contains implementation of the _SpeechToTextImpl class.
\r
26 #include <FBaseColIList.h>
\r
27 #include <FBaseColArrayList.h>
\r
28 #include <FBaseString.h>
\r
29 #include <FBaseUtilStringTokenizer.h>
\r
30 #include <FLclLocale.h>
\r
31 #include <FUixSpeechSpeechToText.h>
\r
32 #include <FBaseSysLog.h>
\r
33 #include <FBase_StringConverter.h>
\r
34 #include <FUixSpeech_SpeechToTextImpl.h>
\r
36 using namespace Tizen::Base;
\r
37 using namespace Tizen::Base::Collection;
\r
38 using namespace Tizen::Locales;
\r
40 namespace Tizen { namespace Uix { namespace Speech
\r
44 _SpeechToTextImpl::SttResultReceiver(stt_h sttHandle, const char* type, const char* data[], int dataCount, const char* msg, void* pListener)
\r
51 userSpeech.Append(msg);
\r
55 for (int i = 0; i < dataCount; i++)
\r
57 userSpeech.Append(data[i]);
\r
60 static_cast < ISpeechToTextEventListener* >(pListener)->OnSpeechToTextCompleted(userSpeech);
\r
64 _SpeechToTextImpl::SttPartialResultReceiver(stt_h sttHandle, const char* data, void* pListener)
\r
69 _SpeechToTextImpl::SttStateChangedReceiver(stt_h sttHandle, stt_state_e previousState, stt_state_e currentState, void* pSttInstance)
\r
71 SysLog(NID_UIX_SPEECH, "The current state is changed to '%s' from '%s'.",
\r
72 GetEngineStateMessage(currentState), GetEngineStateMessage(previousState));
\r
74 _SpeechToTextImpl* pInstance = static_cast<_SpeechToTextImpl*>(pSttInstance);
\r
75 ISpeechToTextEventListener* pListener = pInstance->__pSpeechToTextListener;
\r
78 if ((previousState == STT_STATE_READY) && (currentState == STT_STATE_RECORDING))
\r
80 pInstance->__currentStatus = SPEECH_TO_TEXT_STATUS_RECORDING;
\r
81 pListener->OnSpeechToTextStatusChanged(SPEECH_TO_TEXT_STATUS_RECORDING);
\r
84 else if ((previousState == STT_STATE_RECORDING || previousState == STT_STATE_PROCESSING)
\r
85 && (currentState == STT_STATE_READY))
\r
87 pInstance->__currentStatus = SPEECH_TO_TEXT_STATUS_READY;
\r
88 pListener->OnSpeechToTextStatusChanged(SPEECH_TO_TEXT_STATUS_READY);
\r
91 else if ((previousState == STT_STATE_RECORDING) && (currentState == STT_STATE_PROCESSING))
\r
93 pInstance->__currentStatus = SPEECH_TO_TEXT_STATUS_PROCESSING;
\r
94 pListener->OnSpeechToTextStatusChanged(SPEECH_TO_TEXT_STATUS_PROCESSING);
\r
96 else if ((previousState == STT_STATE_CREATED) && (currentState == STT_STATE_READY))
\r
98 char *pDefaultLang = null;
\r
100 int ttsError = stt_get_default_language(sttHandle, &pDefaultLang);
\r
101 if (ttsError == STT_ERROR_NONE)
\r
103 SysLog(NID_UIX_SPEECH, "The default language is '%s'.", pDefaultLang);
\r
104 const Locale* pDefaultLocale = ConvertEngineLocaleToOspN(pDefaultLang);
\r
105 *pInstance->__pCurrentLocale = *pDefaultLocale;
\r
107 delete pDefaultLocale;
\r
108 free(pDefaultLang);
\r
111 int sttError = stt_foreach_supported_languages(sttHandle, SttSupportedLocaleListGetter, (void *)pInstance->__pSupportedLocaleList);
\r
112 SysTryLog(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, "[%s] Failed to get supported voices", GetEngineErrorMessage(sttError));
\r
114 pInstance->__isInitialized = true;
\r
115 pInstance->__currentStatus = SPEECH_TO_TEXT_STATUS_READY;
\r
117 pListener->OnSpeechToTextInitialized();
\r
118 pListener->OnSpeechToTextStatusChanged(SPEECH_TO_TEXT_STATUS_READY);
\r
122 SysLog(NID_UIX_SPEECH, "The unknown state is changed to '%s' from '%s'.",
\r
123 GetEngineStateMessage(currentState), GetEngineStateMessage(previousState));
\r
128 _SpeechToTextImpl::SttErrorReceiver(stt_h sttHandle, stt_error_e error, void* pListener)
\r
130 SysLog(NID_UIX_SPEECH, "[%s] Error occurred.", GetEngineErrorMessage(error));
\r
132 SpeechToTextError sttError;
\r
136 case STT_ERROR_OUT_OF_NETWORK:
\r
137 sttError = SPEECH_TO_TEXT_ERROR_NETWORK_ERROR;
\r
139 case STT_ERROR_OUT_OF_MEMORY:
\r
140 sttError = SPEECH_TO_TEXT_ERROR_OUT_OF_MEMORY;
\r
142 case STT_ERROR_IO_ERROR:
\r
143 sttError = SPEECH_TO_TEXT_ERROR_IO_ERROR;
\r
145 case STT_ERROR_ENGINE_NOT_FOUND:
\r
146 sttError = SPEECH_TO_TEXT_ERROR_UNSUPPORTED_SERVICE;
\r
148 case STT_ERROR_TIMED_OUT:
\r
149 sttError = SPEECH_TO_TEXT_ERROR_TIME_OUT;
\r
152 sttError = SPEECH_TO_TEXT_ERROR_SYSTEM_ERROR;
\r
155 static_cast <ISpeechToTextEventListener*>(pListener)->OnSpeechToTextErrorOccurred(sttError);
\r
159 _SpeechToTextImpl::SttSupportedLocaleListGetter(stt_h sttHandle, const char* pLanguage, void* pLocaleList)
\r
161 SysLog(NID_UIX_SPEECH, "The language is '%s'.", pLanguage);
\r
163 const Locale* pLocale = ConvertEngineLocaleToOspN(String(pLanguage));
\r
164 if (pLocale == null)
\r
166 static_cast<ArrayList*>(pLocaleList)->RemoveAll(true);
\r
167 return false; // escape call back loop
\r
170 if (pLocale->GetLanguageCode() == LANGUAGE_INVALID)
\r
172 SysLog(NID_UIX_SPEECH, "The '%s' language is not supported.", pLanguage);
\r
177 result r = static_cast<ArrayList*>(pLocaleList)->Add(*pLocale);
\r
180 static_cast<ArrayList*>(pLocaleList)->RemoveAll(true);
\r
181 return false; // escape call back loop
\r
185 return true; // continue call back loop
\r
188 _SpeechToTextImpl::_SpeechToTextImpl(void)
\r
189 : __sttHandle(null)
\r
190 , __pSpeechToTextListener(null)
\r
191 , __pCurrentLocale(null)
\r
192 , __grammar(SPEECH_TO_TEXT_GRAMMAR_FREE)
\r
193 , __pSupportedLocaleList(null)
\r
194 , __isInitialized(false)
\r
195 , __isSilenceDetection(true)
\r
200 _SpeechToTextImpl::~_SpeechToTextImpl(void)
\r
202 stt_state_e sttState = STT_STATE_READY;
\r
203 int sttError = stt_get_state(__sttHandle, &sttState);
\r
204 SysTryLog(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, "[%s] Failed to get the current state.", GetEngineErrorMessage(sttError));
\r
206 if (sttState == STT_STATE_RECORDING || sttState == STT_STATE_PROCESSING)
\r
208 sttError = stt_stop(__sttHandle);
\r
209 SysTryLog(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, "[%s] Failed to stop.", GetEngineErrorMessage(sttError));
\r
212 if (__isInitialized)
\r
214 sttError = stt_unprepare(__sttHandle);
\r
215 SysTryLog(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, "[%s] Failed to unprepare.", GetEngineErrorMessage(sttError));
\r
217 sttError = stt_unset_result_cb(__sttHandle);
\r
218 SysTryLog(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, "[%s] Failed to unset the result callback.", GetEngineErrorMessage(sttError));
\r
220 sttError = stt_unset_partial_result_cb(__sttHandle);
\r
221 SysTryLog(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, "[%s] Failed to unset the partial result callback.", GetEngineErrorMessage(sttError));
\r
223 sttError = stt_unset_state_changed_cb(__sttHandle);
\r
224 SysTryLog(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, "[%s] Failed to unset the state changed callback.", GetEngineErrorMessage(sttError));
\r
226 sttError = stt_unset_error_cb(__sttHandle);
\r
227 SysTryLog(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, "[%s] Failed to unset the error callback.", GetEngineErrorMessage(sttError));
\r
230 sttError = stt_destroy(__sttHandle);
\r
231 SysTryLog(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, "[%s] Failed to destroy.", GetEngineErrorMessage(sttError));
\r
233 delete __pCurrentLocale;
\r
235 if (__pSupportedLocaleList != null)
\r
237 __pSupportedLocaleList->RemoveAll(true);
\r
238 delete __pSupportedLocaleList;
\r
243 _SpeechToTextImpl::Construct(ISpeechToTextEventListener& listener)
\r
245 int sttError = stt_create(&__sttHandle);
\r
246 SysTryLog(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, "[%s] Failed to create", GetEngineErrorMessage(sttError));
\r
247 SysTryReturnResult(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, E_SYSTEM, "Failed to create.");
\r
249 Locale *pLocale = new (std::nothrow) Locale(LANGUAGE_INVALID, COUNTRY_INVALID);
\r
250 SysTryReturnResult(NID_UIX_SPEECH, pLocale != null, E_OUT_OF_MEMORY, "The memory is insufficient.");
\r
252 ArrayList* pLocaleList = new (std::nothrow) ArrayList();
\r
253 SysTryReturnResult(NID_UIX_SPEECH, pLocaleList != null, E_OUT_OF_MEMORY, "The memory is insufficient.");
\r
255 result r = pLocaleList->Construct();
\r
256 SysTryReturnResult(NID_UIX_SPEECH, r == E_SUCCESS, E_OUT_OF_MEMORY, "The memory is insufficient.");
\r
258 __pCurrentLocale = pLocale;
\r
259 __pSupportedLocaleList = pLocaleList;
\r
260 __pSpeechToTextListener = &listener;
\r
266 _SpeechToTextImpl::Initialize(void)
\r
268 SysAssertf(__isInitialized != true,
\r
269 "Already calling Initialize() twice or more on a same instance is not allowed for this class.");
\r
271 int sttError = stt_set_error_cb(__sttHandle, SttErrorReceiver, __pSpeechToTextListener);
\r
272 SysTryLog(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, "[%s] Failed to set the error callback.", GetEngineErrorMessage(sttError));
\r
273 SysTryReturnResult(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, E_OUT_OF_MEMORY, "The memory is insufficient.");
\r
275 sttError = stt_set_state_changed_cb(__sttHandle, SttStateChangedReceiver, this);
\r
276 SysTryLog(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, "[%s] Failed to set the state changed callback.", GetEngineErrorMessage(sttError));
\r
277 SysTryReturnResult(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, E_OUT_OF_MEMORY, "The memory is insufficient.");
\r
279 sttError = stt_set_partial_result_cb(__sttHandle, SttPartialResultReceiver, __pSpeechToTextListener);
\r
280 SysTryLog(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, "[%s] Failed to set the partial result callback.", GetEngineErrorMessage(sttError));
\r
281 SysTryReturnResult(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, E_OUT_OF_MEMORY, "The memory is insufficient.");
\r
283 sttError = stt_set_result_cb(__sttHandle, SttResultReceiver, __pSpeechToTextListener);
\r
284 SysTryLog(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, "[%s] Failed to set the result callback.", GetEngineErrorMessage(sttError));
\r
285 SysTryReturnResult(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, E_OUT_OF_MEMORY, "The memory is insufficient.");
\r
287 sttError = stt_prepare(__sttHandle);
\r
288 SysTryLog(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, "[%s] Failed to prepare.", GetEngineErrorMessage(sttError));
\r
289 SysTryReturnResult(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, E_OUT_OF_MEMORY, "The memory is insufficient.");
\r
295 _SpeechToTextImpl::Start(void)
\r
297 SysTryReturnResult(NID_UIX_SPEECH, __isInitialized, E_INVALID_STATE,
\r
298 "Not yet initialized! This method should be called after receiving OnSpeechToTextInitialized() event.");
\r
300 stt_state_e sttState = STT_STATE_READY;
\r
301 const char* sttRecognitionType = null;
\r
302 const char* pSttRecognitionLanguageN = null;
\r
304 int sttError = stt_get_state(__sttHandle, &sttState);
\r
305 SysTryLog(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, "[%s] The current state is '%s'.",
\r
306 GetEngineErrorMessage(sttError), GetEngineStateMessage(sttState));
\r
308 SysTryReturnResult(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, E_SYSTEM, "Failed to get the current state.");
\r
309 SysTryReturnResult(NID_UIX_SPEECH, sttState == STT_STATE_READY, E_INVALID_OPERATION, "The TTS state should be SPEECH_TO_TEXT_STATUS_READY.");
\r
312 sttRecognitionType = ConvertOspRecognitionTypeToEngine(__grammar);
\r
313 pSttRecognitionLanguageN = ConvertOspLocaleToEngineN(*__pCurrentLocale);
\r
314 SysTryReturnResult(NID_UIX_SPEECH, pSttRecognitionLanguageN != null, E_OUT_OF_MEMORY, "The memory is insufficient.");
\r
316 sttError = stt_start(__sttHandle, pSttRecognitionLanguageN, sttRecognitionType);
\r
317 SysTryReturnResult(NID_UIX_SPEECH, sttError != STT_ERROR_RECORDER_BUSY, E_SERVICE_BUSY, "The recorder is busy.");
\r
318 SysTryReturnResult(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, E_SYSTEM, "Failed to start.");
\r
320 delete[] pSttRecognitionLanguageN;
\r
326 _SpeechToTextImpl::Stop(void)
\r
328 SysTryReturnResult(NID_UIX_SPEECH, __isInitialized, E_INVALID_STATE,
\r
329 "Not yet initialized! This method should be called after receiving OnSpeechToTextInitialized() event.");
\r
331 stt_state_e sttState = STT_STATE_READY;
\r
333 int sttError = stt_get_state(__sttHandle, &sttState);
\r
334 SysTryReturnResult(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, E_SYSTEM, "Failed to get the current state.");
\r
336 SysTryReturnResult(NID_UIX_SPEECH, sttState == STT_STATE_RECORDING, E_INVALID_OPERATION,
\r
337 "The STT state should be SPEECH_TO_TEXT_STATUS_RECORDING.");
\r
339 sttError = stt_stop(__sttHandle);
\r
340 SysTryReturnResult(NID_UIX_SPEECH, sttError != STT_ERROR_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "The memory is insufficient.");
\r
341 SysTryReturnResult(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, E_SYSTEM, "Failed to stop.");
\r
347 _SpeechToTextImpl::Cancel(void)
\r
349 SysTryReturnResult(NID_UIX_SPEECH, __isInitialized, E_INVALID_STATE,
\r
350 "Not yet initialized! This method should be called after receiving OnSpeechToTextInitialized() event.");
\r
352 stt_state_e sttState = STT_STATE_READY;
\r
354 int sttError = stt_get_state(__sttHandle, &sttState);
\r
355 SysTryReturnResult(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, E_SYSTEM, "Failed to get the current state.");
\r
357 SysTryReturnResult(NID_UIX_SPEECH, sttState != STT_STATE_READY, E_INVALID_OPERATION,
\r
358 "The STT state should be SPEECH_TO_TEXT_STATUS_RECORDING or SPEECH_TO_TEXT_STATUS_PROCESSING.");
\r
360 sttError = stt_cancel(__sttHandle);
\r
361 SysTryReturnResult(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, E_SYSTEM, "[E_SYSTEM] Failed to cancel.");
\r
367 _SpeechToTextImpl::IsLocaleSupported(const Locale& locale) const
\r
369 SysTryReturn(NID_UIX_SPEECH, __isInitialized, false, E_INVALID_STATE,
\r
370 "[E_INVALID_STATE] Not yet initialized! This method should be called after receiving OnSpeechToTextInitialized() event.");
\r
372 SetLastResult(E_SUCCESS);
\r
373 return __pSupportedLocaleList->Contains(locale);
\r
377 _SpeechToTextImpl::SetLocale(const Locale& locale)
\r
379 SysTryReturnResult(NID_UIX_SPEECH, __isInitialized, E_INVALID_STATE,
\r
380 "Not yet initialized! This method should be called after receiving OnSpeechToTextInitialized() event.");
\r
382 SysTryReturnResult(NID_UIX_SPEECH, IsLocaleSupported(locale), E_UNSUPPORTED_LOCALE, "This locale is not supported.")
\r
384 *__pCurrentLocale = locale;
\r
389 Tizen::Locales::Locale
\r
390 _SpeechToTextImpl::GetLocale(void) const
\r
392 SysTryReturn(NID_UIX_SPEECH, __isInitialized, Locale(LANGUAGE_INVALID, COUNTRY_INVALID), E_INVALID_STATE,
\r
393 "[E_INVALID_STATE] Not yet initialized! This method should be called after receiving OnSpeechToTextInitialized() event.");
\r
395 SetLastResult(E_SUCCESS);
\r
396 return *__pCurrentLocale;
\r
400 _SpeechToTextImpl::GetSupportedLocales(void) const
\r
402 SysTryReturn(NID_UIX_SPEECH, __isInitialized, null, E_INVALID_STATE,
\r
403 "[E_INVALID_STATE] Not yet initialized! This method should be called after receiving OnSpeechToTextInitialized() event.");
\r
405 SetLastResult(E_SUCCESS);
\r
406 return __pSupportedLocaleList;
\r
410 _SpeechToTextImpl::SetGrammar(SpeechToTextGrammar grammar)
\r
412 SysTryReturnResult(NID_UIX_SPEECH, __isInitialized, E_INVALID_STATE,
\r
413 "Not yet initialized! This method should be called after receiving OnSpeechToTextInitialized() event.");
\r
415 __grammar = grammar;
\r
420 SpeechToTextGrammar
\r
421 _SpeechToTextImpl::GetGrammar(void) const
\r
423 SysTryReturn(NID_UIX_SPEECH, __isInitialized, SPEECH_TO_TEXT_GRAMMAR_FREE, E_INVALID_STATE,
\r
424 "[E_INVALID_STATE] Not yet initialized! This method should be called after receiving OnSpeechToTextInitialized() event.");
\r
426 SetLastResult(E_SUCCESS);
\r
432 _SpeechToTextImpl::SetSilenceDetectionEnabled(bool enable)
\r
434 SysTryReturnResult(NID_UIX_SPEECH, __isInitialized, E_INVALID_STATE,
\r
435 "Not yet initialized! This method should be called after receiving OnSpeechToTextInitialized() event.");
\r
437 int sttError = stt_set_silence_detection(__sttHandle, ConvertOspSilenceDetectionTypeToEngine(enable));
\r
438 SysTryLog(NID_UIX_SPEECH, sttError == STT_ERROR_NONE, "[%s] Failed to set the silence detection.", GetEngineErrorMessage(sttError));
\r
440 __isSilenceDetection = enable;
\r
446 _SpeechToTextImpl::IsSilenceDetectionEnabled(void) const
\r
448 SysTryReturn(NID_UIX_SPEECH, __isInitialized, false, E_INVALID_STATE,
\r
449 "[E_INVALID_STATE] Not yet initialized! This method should be called after receiving OnSpeechToTextInitialized() event.");
\r
451 SetLastResult(E_SUCCESS);
\r
452 return __isSilenceDetection;
\r
456 _SpeechToTextImpl::GetCurrentStatus(void) const
\r
458 SysTryReturn(NID_UIX_SPEECH, __isInitialized, SPEECH_TO_TEXT_STATUS_NONE, E_INVALID_STATE,
\r
459 "[E_INVALID_STATE] Not yet initialized! This method should be called after receiving OnSpeechToTextInitialized() event.");
\r
461 SetLastResult(E_SUCCESS);
\r
462 return __currentStatus;
\r
466 _SpeechToTextImpl::GetInstance(SpeechToText& speechToText)
\r
468 return speechToText.__pSpeechToTextImpl;
\r
471 const _SpeechToTextImpl*
\r
472 _SpeechToTextImpl::GetInstance(const SpeechToText& speechToText)
\r
474 return speechToText.__pSpeechToTextImpl;
\r
478 _SpeechToTextImpl::ConvertOspRecognitionTypeToEngine(SpeechToTextGrammar grammar)
\r
482 case SPEECH_TO_TEXT_GRAMMAR_FREE:
\r
483 return STT_RECOGNITION_TYPE_FREE;
\r
485 case SPEECH_TO_TEXT_GRAMMAR_WEB_SEARCH:
\r
486 return STT_RECOGNITION_TYPE_WEB_SEARCH;
\r
493 stt_option_silence_detection_e
\r
494 _SpeechToTextImpl::ConvertOspSilenceDetectionTypeToEngine(bool silenceDetectionType)
\r
496 if (silenceDetectionType)
\r
498 return STT_OPTION_SILENCE_DETECTION_TRUE;
\r
502 return STT_OPTION_SILENCE_DETECTION_FALSE;
\r
507 _SpeechToTextImpl::ConvertOspLocaleToEngineN(const Locale& locale)
\r
509 String strLanguageCode = Locale::LanguageCodeToTwoLetterLanguageCodeString(locale.GetLanguageCode());
\r
510 String strCountryCode = Locale::CountryCodeToString(locale.GetCountryCode());
\r
512 String strLanguage = strLanguageCode + L"_" + strCountryCode;
\r
514 return _StringConverter::CopyToCharArrayN(strLanguage);
\r
517 const Tizen::Locales::Locale*
\r
518 _SpeechToTextImpl::ConvertEngineLocaleToOspN(const String& strSource)
\r
520 String strDelim(L"_");
\r
521 String strLanguageCode;
\r
522 String strCountryCode;
\r
524 LanguageCode languageCode = LANGUAGE_INVALID;
\r
525 CountryCode countryCode = COUNTRY_INVALID;
\r
527 Utility::StringTokenizer toknizer(strSource, strDelim);
\r
528 if (toknizer.GetTokenCount() == 2)
\r
530 toknizer.GetNextToken(strLanguageCode);
\r
531 toknizer.GetNextToken(strCountryCode);
\r
533 languageCode = Locale::TwoLetterLanguageCodeStringToLanguageCode(strLanguageCode);
\r
534 countryCode = Locale::StringToCountryCode(strCountryCode);
\r
537 return new (std::nothrow) Locale(languageCode, countryCode);
\r
541 _SpeechToTextImpl::GetEngineErrorMessage(int error)
\r
545 case STT_ERROR_NONE:
\r
546 return "STT_ERROR_NONE";
\r
548 case STT_ERROR_OUT_OF_MEMORY:
\r
549 return "STT_ERROR_OUT_OF_MEMORY";
\r
551 case STT_ERROR_IO_ERROR:
\r
552 return "STT_ERROR_IO_ERROR";
\r
554 case STT_ERROR_INVALID_PARAMETER:
\r
555 return "STT_ERROR_INVALID_PARAMETER";
\r
557 case STT_ERROR_INVALID_STATE:
\r
558 return "STT_ERROR_INVALID_STATE";
\r
560 case STT_ERROR_INVALID_LANGUAGE:
\r
561 return "STT_ERROR_INVALID_LANGUAGE";
\r
563 case STT_ERROR_ENGINE_NOT_FOUND:
\r
564 return "STT_ERROR_ENGINE_NOT_FOUND";
\r
566 case STT_ERROR_TIMED_OUT:
\r
567 return "STT_ERROR_TIMED_OUT";
\r
569 case STT_ERROR_OPERATION_FAILED:
\r
570 return "STT_ERROR_OPERATION_FAILED";
\r
572 case STT_ERROR_RECORDER_BUSY:
\r
573 return "STT_ERROR_RECORDER_BUSY";
\r
575 case STT_ERROR_OUT_OF_NETWORK:
\r
576 return "STT_ERROR_OUT_OF_NETWORK";
\r
579 return "STT_ERROR_UNKNOWN";
\r
584 _SpeechToTextImpl::GetEngineStateMessage(stt_state_e state)
\r
588 case STT_STATE_CREATED:
\r
589 return "STT_STATE_CREATED";
\r
591 case STT_STATE_READY:
\r
592 return "STT_STATE_READY";
\r
594 case STT_STATE_RECORDING:
\r
595 return "STT_STATE_RECORDING";
\r
597 case STT_STATE_PROCESSING:
\r
598 return "STT_STATE_PROCESSING";
\r
601 return "STT_STATE_UNKNOWN";
\r
605 } } } // Tizen::Uix::Speech
\r