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;
}
}