QtLingo 1
QtLingo is an Application to make Qt Computer Translations easier
QOnlineTts Class Reference

Q Online Tts. More...

#include <qonlinetts.h>

Inheritance diagram for QOnlineTts:

Public Types

enum  Voice {
  NoVoice = -1 , Zahar , Ermil , Jane ,
  Oksana , Alyss , Omazh
}
 
enum  Emotion { NoEmotion = -1 , Neutral , Good , Evil }
 
enum  TtsError {
  NoError , UnsupportedEngine , UnsupportedLanguage , UnsupportedVoice ,
  UnsupportedEmotion
}
 

Public Member Functions

 QOnlineTts (QObject *parent=nullptr)
 QOnlineTts. More...
 
void generateUrls (const QString &text, QOnlineTranslator::Engine engine, QOnlineTranslator::Language lang, Voice voice=NoVoice, Emotion emotion=NoEmotion)
 generateUrls More...
 
QList< QMediaContent > media () const
 media More...
 
TtsError error () const
 error More...
 
QString errorString () const
 errorString More...
 

Static Public Member Functions

static QString voiceCode (Voice voice)
 voiceCode More...
 
static QString emotionCode (Emotion emotion)
 emotionCode More...
 
static Emotion emotion (const QString &emotionCode)
 emotion More...
 
static Voice voice (const QString &voiceCode)
 voice More...
 

Detailed Description

Q Online Tts.

Definition at line 32 of file qonlinetts.h.

Member Enumeration Documentation

◆ Emotion

Enumerator
NoEmotion 

NoEmotion

NoEmotion

Neutral 

Neutral

Neutral

Good 

Good

Good

Evil 

Evil

Evil

Definition at line 52 of file qonlinetts.h.

53 {
54 // All
55 NoEmotion = -1,
56 // Yandex
57 Neutral,
58 Good,
59 Evil
60 };
@ Good
Good
Definition: qonlinetts.h:58
@ NoEmotion
NoEmotion
Definition: qonlinetts.h:55
@ Neutral
Neutral
Definition: qonlinetts.h:57
@ Evil
Evil
Definition: qonlinetts.h:59

◆ TtsError

Enumerator
NoError 

NoError

NoError

UnsupportedEngine 

UnsupportedEngine

Unsupported Engine

UnsupportedLanguage 

UnsupportedLanguage

Unsupported Language

UnsupportedVoice 

UnsupportedVoice

Unsupported Voice

UnsupportedEmotion 

UnsupportedEmotion

Unsupported Emotion

Definition at line 63 of file qonlinetts.h.

64 {
65 NoError,
70 };
@ UnsupportedEmotion
UnsupportedEmotion
Definition: qonlinetts.h:69
@ UnsupportedVoice
UnsupportedVoice
Definition: qonlinetts.h:68
@ NoError
NoError
Definition: qonlinetts.h:65
@ UnsupportedEngine
UnsupportedEngine
Definition: qonlinetts.h:66
@ UnsupportedLanguage
UnsupportedLanguage
Definition: qonlinetts.h:67

◆ Voice

Enumerator
NoVoice 

NoVoice

NoVoice

Zahar 

Zahar

Zahar

Ermil 

Ermil

Ermil

Jane 

Jane

Jane

Oksana 

Oksana

Oksana

Alyss 

Alyss

Alyss

Omazh 

Omazh

Omazh

Definition at line 38 of file qonlinetts.h.

39 {
40 // All
41 NoVoice = -1,
42 // Yandex
43 Zahar,
44 Ermil,
45 Jane,
46 Oksana,
47 Alyss,
48 Omazh
49 };
@ Jane
Jane
Definition: qonlinetts.h:45
@ NoVoice
NoVoice
Definition: qonlinetts.h:41
@ Ermil
Ermil
Definition: qonlinetts.h:44
@ Omazh
Omazh
Definition: qonlinetts.h:48
@ Zahar
Zahar
Definition: qonlinetts.h:43
@ Oksana
Oksana
Definition: qonlinetts.h:46
@ Alyss
Alyss
Definition: qonlinetts.h:47

Constructor & Destructor Documentation

◆ QOnlineTts()

QOnlineTts::QOnlineTts ( QObject *  parent = nullptr)
explicit

QOnlineTts.

QOnline Tts. QOnlineTts.

Definition at line 50 of file qonlinetts.cpp.

50 : QObject(parent)
51{
52}

Member Function Documentation

◆ emotion()

QOnlineTts::Emotion QOnlineTts::emotion ( const QString &  emotionCode)
static

emotion

emotion. emotion

Definition at line 184 of file qonlinetts.cpp.

185{
186 return s_emotionCodes.key(emotionCode, NoEmotion);
187}
static QString emotionCode(Emotion emotion)
emotionCode
Definition: qonlinetts.cpp:176

◆ emotionCode()

QString QOnlineTts::emotionCode ( Emotion  emotion)
static

emotionCode

emotion Code. emotionCode

Definition at line 176 of file qonlinetts.cpp.

177{
178 return s_emotionCodes.value(emotion);
179}
static Emotion emotion(const QString &emotionCode)
emotion
Definition: qonlinetts.cpp:184

◆ error()

QOnlineTts::TtsError QOnlineTts::error ( ) const

error

error. error

Definition at line 160 of file qonlinetts.cpp.

161{
162 return m_error;
163}

◆ errorString()

QString QOnlineTts::errorString ( ) const

errorString

error String. errorString

Definition at line 152 of file qonlinetts.cpp.

153{
154 return m_errorString;
155}

◆ generateUrls()

void QOnlineTts::generateUrls ( const QString &  text,
QOnlineTranslator::Engine  engine,
QOnlineTranslator::Language  lang,
Voice  voice = NoVoice,
Emotion  emotion = NoEmotion 
)

generateUrls

generate Urls. generateUrls

Definition at line 57 of file qonlinetts.cpp.

58{
59 // Get speech
60 QString unparsedText = text;
61 switch (engine)
62 {
64 {
65 if (voice != NoVoice)
66 {
67 setError(UnsupportedVoice, QString("%1 %2 %3").arg(tr("Selected engine"), QMetaEnum::fromType<QOnlineTranslator::Engine>().valueToKey(engine), tr("does not support voice settings")));
68 return;
69 }
70
71 if (emotion != NoEmotion)
72 {
73 setError(UnsupportedEmotion, QString("%1 %2 %3").arg(tr("Selected engine"), QMetaEnum::fromType<QOnlineTranslator::Engine>().valueToKey(engine), tr("does not support emotion settings")));
74 return;
75 }
76
77 const QString langString = languageApiCode(engine, lang);
78 if (langString.isNull())
79 return;
80
81 // Google has a limit of characters per tts request. If the query is larger, then it should be splited into several
82 while (!unparsedText.isEmpty())
83 {
84 const int splitIndex = QOnlineTranslator::getSplitIndex(unparsedText, s_googleTtsLimit); // Split the part by special symbol
85
86 // Generate URL API for add it to the playlist
87 QUrl apiUrl(QStringLiteral("http://translate.googleapis.com/translate_tts"));
88 const QString query = QStringLiteral("ie=UTF-8&client=gtx&tl=%1&q=%2").arg(langString, QString(QUrl::toPercentEncoding(unparsedText.left(splitIndex))));
89 #if defined(Q_OS_LINUX)
90 apiUrl.setQuery(query);
91 #elif defined(Q_OS_WIN)
92 apiUrl.setQuery(query, QUrl::DecodedMode);
93 #endif
94 m_media.append(apiUrl);
95
96 // Remove the said part from the next saying
97 unparsedText = unparsedText.mid(splitIndex);
98 }
99 break;
100 }
102 {
103 const QString langString = languageApiCode(engine, lang);
104 if (langString.isNull())
105 return;
106
107 const QString voiceString = voiceApiCode(engine, voice);
108 if (voiceString.isNull())
109 return;
110
111 const QString emotionString = emotionApiCode(engine, emotion);
112 if (emotionString.isNull())
113 return;
114
115 // Yandex has a limit of characters per tts request. If the query is larger, then it should be splited into several
116 while (!unparsedText.isEmpty())
117 {
118 const int splitIndex = QOnlineTranslator::getSplitIndex(unparsedText, s_yandexTtsLimit); // Split the part by special symbol
119
120 // Generate URL API for add it to the playlist
121 QUrl apiUrl(QStringLiteral("https://tts.voicetech.yandex.net/tts"));
122 const QString query = QStringLiteral("text=%1&lang=%2&speaker=%3&emotion=%4&format=mp3")
123 .arg(QUrl::toPercentEncoding(unparsedText.left(splitIndex)), langString, voiceString, emotionString);
124 #if defined(Q_OS_LINUX)
125 apiUrl.setQuery(query);
126 #elif defined(Q_OS_WIN)
127 apiUrl.setQuery(query, QUrl::DecodedMode);
128 #endif
129 m_media.append(apiUrl);
130
131 // Remove the said part from the next saying
132 unparsedText = unparsedText.mid(splitIndex);
133 }
134 break;
135 }
137 setError(UnsupportedEngine, QString("%1 %2").arg(QMetaEnum::fromType<QOnlineTranslator::Engine>().valueToKey(QOnlineTranslator::Bing), tr("engine does not support TTS")));
138 }
139}
static Voice voice(const QString &voiceCode)
voice
Definition: qonlinetts.cpp:192

◆ media()

QList< QMediaContent > QOnlineTts::media ( ) const

media

media. media

Definition at line 144 of file qonlinetts.cpp.

145{
146 return m_media;
147}

◆ voice()

QOnlineTts::Voice QOnlineTts::voice ( const QString &  voiceCode)
static

voice

voice. voice

Definition at line 192 of file qonlinetts.cpp.

193{
194 return s_voiceCodes.key(voiceCode, NoVoice);
195}
static QString voiceCode(Voice voice)
voiceCode
Definition: qonlinetts.cpp:168

◆ voiceCode()

QString QOnlineTts::voiceCode ( Voice  voice)
static

voiceCode

voice Code voiceCode

Definition at line 168 of file qonlinetts.cpp.

169{
170 return s_voiceCodes.value(voice);
171}

The documentation for this class was generated from the following files: