Sistema de texto a voz

El AppFramework ofrece un plug-in QML de voz para la funcionalidad del sistema de texto a voz que permite que las aplicaciones creadas con AppStudio sean compatibles con características de accesibilidad tales como el sistema de texto a voz con modulación de la voz. Este componente TextToSpeech se puede utilizar para ofrecer comentarios de audio a los usuarios finales, además de ofrecer ayuda a usuarios invidentes y suministrar información cuando el usuario no esté mirando su dispositivo. Para utilizar esta funcionalidad, primero tiene que incluir la siguiente instrucción de importación:

import ArcGIS.AppFramework.Speech 1.0

Convertir texto a voz

La esencia del componente TextToSpeech es el método say, que convierte texto enviado en una instrucción verbal. En la siguiente muestra de código se muestra utilizándose, leyendo el contenido de un área de texto cuando se hace clic sobre un botón:

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

Modificación de la voz

La voz producida por el componente TextToSpeech se puede controlar si modifica las propiedades volume, pitch y rate del componente. Cada una de estas propiedades se almacena como entero de doble precisión (un punto decimal), siendo el valor predeterminado 50. La siguiente muestra de código ofrece un control deslizante de la propiedad volume:

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