be508bfc8b7eba6bd50d628b4669182ce03b3503
[platform/core/uifw/inputdelegator.git] / src / w-input-stt-engine.cpp
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #include <Elementary.h>
18 #include <gmodule.h>
19 #include <stdlib.h>
20 #include <string.h>
21 #include <vconf.h>
22 #include <feedback.h>
23 #include <wav_player.h>
24 #include <vconf-internal-keys.h>
25 #include <app.h>
26
27 #include "w-input-selector.h"
28 #include "w-input-stt-voice.h"
29 #include "w-input-stt-engine.h"
30 #include "Debug.h"
31
32 #define FREE(ptr)       \
33                 do { \
34                         if (ptr != NULL) { \
35                                 free(ptr); \
36                                 ptr = NULL; \
37                         } \
38                 } while (0);
39
40
41 static stt_h g_stt;
42
43
44 ////////////////////////////////////////////////////////////////////////////////
45 // STT APIs callers
46 ////////////////////////////////////////////////////////////////////////////////
47
48 bool _app_stt_initialize(VoiceData *voice_data)
49 {
50         PRINTFUNC(NO_PRINT, "_app_stt_initialize");
51         VoiceData *vd = (VoiceData *)voice_data;
52
53         try {
54                 if(vd->sttmanager) {
55                         vd->sttmanager->Cancel();
56                         delete vd->sttmanager;
57                         vd->sttmanager = NULL;
58                 }
59
60                 if(vd->sttfeedback) {
61                         delete vd->sttfeedback;
62                         vd->sttfeedback = NULL;
63                 }
64
65                 vd->sttfeedback = new is::stt::SttFeedback();
66                 vd->sttfeedback->SetVoiceData(vd);
67
68                 vd->sttmanager = new is::stt::SttManager(*(vd->sttfeedback));
69                 vd->sttmanager->Prepare();
70         } catch(std::exception &e) {
71                 PRINTFUNC(DLOG_ERROR, "%s", e.what());
72                 return false;
73         }
74
75         return true;
76 }
77
78