History

Some experimentation yields promising results...

Zach Fox committed 8 years ago

Commit 26e388b1 parent 79f30eb5 files · +769 −736Browse files

Showing the changes to interface/src/scripting (2 of 5 files). Show all

Unified · Split

2 files
  1. interface/src/scripting/TTSScriptingInterface.cpp +12 −5
  2. interface/src/scripting/TTSScriptingInterface.h +9 −2
interface/src/scripting/TTSScriptingInterface.cpp+12−5
@@ -65,7 +65,7 @@ void TTSScriptingInterface::testTone(const bool& alsoInject) { · 64 unmodified lines
65 int16_t temp = (glm::sin(glm::radians((float)a))) * 32768;65 int16_t temp = (glm::sin(glm::radians((float)a))) * 32768;
66 samples[a] = temp;66 samples[a] = temp;
67 }67 }
68 emit ttsSampleCreated(_lastSoundByteArray);68 emit ttsSampleCreated(_lastSoundByteArray, AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL * 50, 96);
69 69
70 if (alsoInject) {70 if (alsoInject) {
71 AudioInjectorOptions options;71 AudioInjectorOptions options;
@@ -75,11 +75,16 @@ void TTSScriptingInterface::testTone(const bool& alsoInject) { · 3 unmodified lines
75 }75 }
76}76}
77 77
78void TTSScriptingInterface::speakText(const QString& textToSpeak, const bool& alsoInject) {78void TTSScriptingInterface::speakText(const QString& textToSpeak,
79 const int& newChunkSize,
80 const int& timerInterval,
81 const int& sampleRate,
82 const int& bitsPerSample,
83 const bool& alsoInject) {
79 WAVEFORMATEX fmt;84 WAVEFORMATEX fmt;
80 fmt.wFormatTag = WAVE_FORMAT_PCM;85 fmt.wFormatTag = WAVE_FORMAT_PCM;
81 fmt.nSamplesPerSec = 24000;86 fmt.nSamplesPerSec = sampleRate;
82 fmt.wBitsPerSample = 16;87 fmt.wBitsPerSample = bitsPerSample;
83 fmt.nChannels = 1;88 fmt.nChannels = 1;
84 fmt.nBlockAlign = fmt.nChannels * fmt.wBitsPerSample / 8;89 fmt.nBlockAlign = fmt.nChannels * fmt.wBitsPerSample / 8;
85 fmt.nAvgBytesPerSec = fmt.nSamplesPerSec * fmt.nBlockAlign;90 fmt.nAvgBytesPerSec = fmt.nSamplesPerSec * fmt.nBlockAlign;
@@ -146,7 +151,7 @@ void TTSScriptingInterface::speakText(const QString& textToSpeak, const bool& al · 60 unmodified lines
146 _lastSoundByteArray.resize(0);151 _lastSoundByteArray.resize(0);
147 _lastSoundByteArray.append(buf1, dwSize);152 _lastSoundByteArray.append(buf1, dwSize);
148 153
149 emit ttsSampleCreated(_lastSoundByteArray);154 emit ttsSampleCreated(_lastSoundByteArray, newChunkSize, timerInterval);
150 155
151 if (alsoInject) {156 if (alsoInject) {
152 AudioInjectorOptions options;157 AudioInjectorOptions options;
@@ -160,4 +165,6 @@ void TTSScriptingInterface::stopLastSpeech() { · 7 unmodified lines
160 if (_lastSoundAudioInjector) {165 if (_lastSoundAudioInjector) {
161 _lastSoundAudioInjector->stop();166 _lastSoundAudioInjector->stop();
162 }167 }
168
169 emit clearTTSBuffer();
163}170}
interface/src/scripting/TTSScriptingInterface.h+9−2
@@ -19,6 +19,7 @@ · 18 unmodified lines
19#include <sapi.h> // SAPI19#include <sapi.h> // SAPI
20#include <sphelper.h> // SAPI Helper20#include <sphelper.h> // SAPI Helper
21#include <AudioInjector.h>21#include <AudioInjector.h>
22#include <AudioConstants.h>
22 23
23class TTSScriptingInterface : public QObject, public Dependency {24class TTSScriptingInterface : public QObject, public Dependency {
24 Q_OBJECT25 Q_OBJECT
@@ -28,11 +29,17 @@ public: · 3 unmodified lines
28 ~TTSScriptingInterface();29 ~TTSScriptingInterface();
29 30
30 Q_INVOKABLE void testTone(const bool& alsoInject = false);31 Q_INVOKABLE void testTone(const bool& alsoInject = false);
31 Q_INVOKABLE void speakText(const QString& textToSpeak, const bool& alsoInject = false);32 Q_INVOKABLE void speakText(const QString& textToSpeak,
33 const int& newChunkSize = (AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL * 50),
34 const int& timerInterval = 96,
35 const int& sampleRate = 24000,
36 const int& bitsPerSample = 16,
37 const bool& alsoInject = false);
32 Q_INVOKABLE void stopLastSpeech();38 Q_INVOKABLE void stopLastSpeech();
33 39
34signals:40signals:
35 void ttsSampleCreated(QByteArray outputArray);41 void ttsSampleCreated(QByteArray outputArray, const int& newChunkSize, const int& timerInterval);
42 void clearTTSBuffer();
36 43
37private:44private:
38 class CComAutoInit {45 class CComAutoInit {