Text zu Sprache

AppFramework bietet ein QML-Sprach-Plug-in für die Text-zu-Sprache-Funktionalität, die Anwendungen, die mit AppStudio erstellt wurden, die Unterstützung von Barrierefreiheit wie Text zu Sprache mit Sprachmodulation ermöglicht. Diese TextToSpeech-Komponente kann verwendet werden, um Audio-Feedback für Endbenutzer bereitzustellen, einschließlich der Hilfe für Sehbehinderte und der Bereitstellung von Informationen, wenn der Benutzer nicht auf sein Gerät schaut. Um diese Funktion nutzen zu können, müssen Sie zunächst die folgende Import-Anweisung einbeziehen:

import ArcGIS.AppFramework.Speech 1.0

Konvertieren von Text in Sprache

Den Kern der TextToSpeech-Komponente bildet die say-Methode, die übermittelten Text in eine gesprochene Aussage konvertiert. Das folgende Codebeispiel veranschaulicht die Verwendung, indem der Inhalt eines Textbereichs gelesen wird, wenn auf eine Schaltfläche geklickt wird:

ColumnLayout {
    anchors {
        fill: parent
        margins: 4 * AppFramework.displayScaleFactor
    }
    TextToSpeech {
        id: textToSpeech
    }
    Rectangle {
        Layout.fillWidth: true
        Layout.preferredHeight: 200 * scaleFactor
        color: transparent
        border.color: black
        border.width: 1 * scaleFactor
        TextArea {
            id: sayText
            width: parent.width
            Material.accent: "#8f499c"
            padding: 5 * scaleFactor
            selectByMouse: true
            wrapMode: TextEdit.WrapAnywhere
            text: "This text will be read."
        }
    }
    Button {
        Layout.fillWidth: true
        text: "Say it"
        onClicked: {
            textToSpeech.say(sayText.text);
        }
    }
}

Sprachmodifizierung

Die von der TextToSpeech-Komponente erzeugte Sprache kann durch Ändern der Eigenschaften volume, pitch und rate gesteuert werden. Jede dieser Eigenschaften wird als ganzzahliger Wert mit doppelter Genauigkeit (ein Dezimaltrennzeichen) mit dem Standardwert 50 gespeichert. Das folgende Codebeispiel stellt einen Schieberegler für die Eigenschaft volume zur Verfügung:

Slider {
    id: volumeSlider
    Layout.fillWidth: true
    Layout.leftMargin: 10 * AppFramework.displayScaleFactor
    Layout.rightMargin: Layout.leftMargin
    from: 0
    to: 100
    stepSize: 1
    onValueChanged: {
        textToSpeech.volume = value/100;
    }
}