summaryrefslogtreecommitdiffstats
path: root/examples/speech/quickspeech/main.qml
diff options
context:
space:
mode:
Diffstat (limited to 'examples/speech/quickspeech/main.qml')
-rw-r--r--examples/speech/quickspeech/main.qml194
1 files changed, 0 insertions, 194 deletions
diff --git a/examples/speech/quickspeech/main.qml b/examples/speech/quickspeech/main.qml
deleted file mode 100644
index 3d7b019..0000000
--- a/examples/speech/quickspeech/main.qml
+++ /dev/null
@@ -1,194 +0,0 @@
-// Copyright (C) 2022 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick
-import QtQuick.Controls
-import QtQuick.Layouts
-import QtTextToSpeech
-
-ApplicationWindow {
- id: root
- visible: true
- title: qsTr("Text to Speech")
- minimumWidth: inputForm.implicitWidth
- minimumHeight: inputForm.implicitHeight + footer.implicitHeight
-
-//! [initialize]
- TextToSpeech {
- id: tts
- volume: volumeSlider.value
- pitch: pitchSlider.value
- rate: rateSlider.value
-//! [initialize]
-
-//! [stateChanged]
- onStateChanged: (state) => {
- switch (state) {
- case TextToSpeech.Ready:
- statusLabel.text = qsTr("Ready")
- break
- case TextToSpeech.Speaking:
- statusLabel.text = qsTr("Speaking")
- break
- case TextToSpeech.Paused:
- statusLabel.text = qsTr("Paused...")
- break
- case TextToSpeech.Error:
- statusLabel.text = qsTr("Error!")
- break
- }
- }
-//! [stateChanged]
-
-//! [sayingWord]
- onSayingWord: (word, id, start, length)=> {
- input.select(start, start + length)
- }
-//! [sayingWord]
- }
-
- ColumnLayout {
- anchors.fill: parent
- anchors.margins: 8
- id: inputForm
-
- TextArea {
- id: input
- wrapMode: TextEdit.WordWrap
- text: qsTr("Hello, world!")
- Layout.fillWidth: true
- Layout.minimumHeight: implicitHeight
- font.pointSize: 24
- }
-//! [say0]
- RowLayout {
- Button {
- text: qsTr("Speak")
- enabled: [TextToSpeech.Paused, TextToSpeech.Ready].includes(tts.state)
- onClicked: {
-//! [say0]
- let voices = tts.availableVoices()
- tts.voice = voices[voicesComboBox.currentIndex]
-//! [say1]
- tts.say(input.text)
- }
- }
-//! [say1]
-//! [pause]
- Button {
- text: qsTr("Pause")
- enabled: tts.state == TextToSpeech.Speaking
- onClicked: tts.pause()
- visible: tts.engineCapabilities & TextToSpeech.Capabilities.PauseResume
- }
-//! [pause]
-//! [resume]
- Button {
- text: qsTr("Resume")
- enabled: tts.state == TextToSpeech.Paused
- onClicked: tts.resume()
- visible: tts.engineCapabilities & TextToSpeech.Capabilities.PauseResume
- }
-//! [resume]
- Button {
- text: qsTr("Stop")
- enabled: [TextToSpeech.Speaking, TextToSpeech.Paused].includes(tts.state)
- onClicked: tts.stop()
- }
- }
-
- GridLayout {
- columns: 2
-
- Text {
- text: qsTr("Engine:")
- }
- ComboBox {
- id: enginesComboBox
- Layout.fillWidth: true
- model: tts.availableEngines()
- onActivated: {
- tts.engine = textAt(currentIndex)
- updateLocales()
- updateVoices()
- }
- }
- Text {
- text: qsTr("Locale:")
- }
- ComboBox {
- id: localesComboBox
- Layout.fillWidth: true
- onActivated: {
- let locales = tts.availableLocales()
- tts.locale = locales[currentIndex]
- updateVoices()
- }
- }
- Text {
- text: qsTr("Voice:")
- }
- ComboBox {
- id: voicesComboBox
- Layout.fillWidth: true
- }
- Text {
- text: qsTr("Volume:")
- }
- Slider {
- id: volumeSlider
- from: 0
- to: 1.0
- stepSize: 0.2
- value: 0.8
- Layout.fillWidth: true
- }
- Text {
- text: qsTr("Pitch:")
- }
- Slider {
- id: pitchSlider
- from: -1.0
- to: 1.0
- stepSize: 0.5
- value: 0
- Layout.fillWidth: true
- }
- Text {
- text: qsTr("Rate:")
- }
- Slider {
- id: rateSlider
- from: -1.0
- to: 1.0
- stepSize: 0.5
- value: 0
- Layout.fillWidth: true
- }
- }
- }
- footer: Label {
- id: statusLabel
- }
-
- Component.onCompleted: {
- enginesComboBox.currentIndex = tts.availableEngines().indexOf(tts.engine)
- updateLocales()
- updateVoices()
-
- tts.onStateChanged(tts.state)
- }
-
- function updateLocales() {
- let allLocales = tts.availableLocales().map((locale) => locale.nativeLanguageName)
- let currentLocaleIndex = allLocales.indexOf(tts.locale.nativeLanguageName)
- localesComboBox.model = allLocales
- localesComboBox.currentIndex = currentLocaleIndex
- }
-
- function updateVoices() {
- voicesComboBox.model = tts.availableVoices().map((voice) => voice.name)
- let indexOfVoice = tts.availableVoices().indexOf(tts.voice)
- voicesComboBox.currentIndex = indexOfVoice
- }
-}