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