summaryrefslogtreecommitdiffstats
path: root/rbutil/rbutilqt/talkfile.h
blob: 54819c80f800eb2c569e177c3bb9b3bac7c986bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/***************************************************************************
 *             __________               __   ___.
 *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
 *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
 *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
 *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
 *                     \/            \/     \/    \/            \/
 *
 *   Copyright (C) 2007 by Dominik Wenger
 *   $Id$
 *
 * All files in this archive are subject to the GNU General Public License.
 * See the file COPYING in the source tree root for full license agreement.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ****************************************************************************/


#ifndef TALKFILE_H
#define TALKFILE_H

#include "progressloggerinterface.h"

class TTSBase : public QObject
{
    Q_OBJECT
public:
    TTSBase(){}
    virtual ~TTSBase(){}
    virtual bool voice(QString text,QString wavfile){(void)text; (void)wavfile; return false;}
    virtual bool start(){return false;}
    virtual bool stop(){return false;}
    
    void setTTSexe(QString exe){m_TTSexec=exe;}
    void setTTsOpts(QString opts) {m_TTSOpts=opts;}
    void setTTsLanguage(QString language) {m_TTSLanguage = language;}
    void setTTsTemplate(QString t) { m_TTSTemplate = t; }
    
protected:
    QString m_TTSexec;
    QString m_TTSOpts;
    QString m_TTSTemplate;
    QString m_TTSLanguage;
};


class TalkFileCreator :public QObject
{
    Q_OBJECT

public:
    TalkFileCreator(QObject* parent=0);

    bool createTalkFiles(ProgressloggerInterface* logger);

    void setTTSexe(QString exe){m_TTSexec=exe;}
    void setEncexe(QString exe){m_EncExec=exe;}

    void setTTsType(QString tts) { m_curTTS = tts; }
    void setTTsOpts(QString opts) {m_TTSOpts=opts;}
    void setTTsLanguage(QString language) {m_TTSLanguage = language;}
    void setTTsTemplate(QString t) { m_curTTSTemplate = t; }

    void setEncType(QString enc) { m_curEnc = enc; }
    void setEncOpts(QString opts) {m_EncOpts=opts;}
    void setEncTemplate(QString t) { m_curEncTemplate = t; }

    void setDir(QDir dir){m_dir = dir; }
    void setMountPoint(QString mountpoint) {m_mountpoint =mountpoint; }

    void setOverwriteTalk(bool ov) {m_overwriteTalk = ov;}
    void setOverwriteWav(bool ov) {m_overwriteWav = ov;}
    void setRemoveWav(bool ov) {m_removeWav = ov;}
    void setRecursive(bool ov) {m_recursive = ov;}
    void setStripExtensions(bool ov) {m_stripExtensions = ov;}
    void setTalkFolders(bool ov) {m_talkFolders = ov;} 
    void setTalkFiles(bool ov) {m_talkFiles = ov;}

private slots:
    void abort();

private:
    TTSBase* m_tts;
    bool initEncoder();
    
    bool encode(QString input,QString output);

    QDir   m_dir;
    QString m_mountpoint;
    QString m_curTTS;
    QString m_TTSexec;
    QString m_TTSOpts;
    QString m_TTSLanguage;
    QString m_curTTSTemplate;

    QString m_curEnc;
    QString m_EncExec;
    QString m_EncOpts;
    QString m_curEncTemplate;

    bool m_overwriteTalk;
    bool m_overwriteWav;
    bool m_removeWav;
    bool m_recursive;
    bool m_stripExtensions;
    bool m_talkFolders;
    bool m_talkFiles;

    ProgressloggerInterface* m_logger;

    bool m_abort;
};

class TTSSapi : public TTSBase
{
public:
    TTSSapi() {};
    virtual bool voice(QString text,QString wavfile);
    virtual bool start();
    virtual bool stop();
    
private:
    QProcess* voicescript;
};

class TTSExes : public TTSBase
{
public:
    TTSExes() {};
    virtual bool voice(QString text,QString wavfile);
    virtual bool start();
    virtual bool stop() {return true;}
    
private:
   
};

#endif