Text to Speech

AppFramework fornisce un plug-in Speech QML per la funzionalità text-to-speech, che consente alle applicazioni create con AppStudio di supportare feature di accessibilità, come text-to-speech con modulazione vocale. Il componente TextToSpeech può essere usato per fornire feedback audio agli utenti finali, come aiuti per gli utenti con disabilità visive, e per fornire informazioni quando l'utente non sta guardando il proprio dispositivo. Per utilizzare questa funzionalità, è necessario includere prima la seguente istruzione di importazione:

import ArcGIS.AppFramework.Speech 1.0

Convertire testo in voce

ll fulcro del componente TextToSpeech è il metodo di say, che converte il testo inserito in istruzioni pronunciate oralmente. Il seguente esempio di codice fornisce una dimostrazione del suo uso, leggendo il contenuto di un'area di testo quando si fa clic su un pulsante:

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

Modifica vocale

La voce prodotta dal componente TextToSpeech può essere controllata modificando le proprietà di volume, pitch, e rate del componente stesso. Ognuna di queste proprietà viene memorizzata come un intero a due precisioni (un decimale), con un valore predefinito pari a 50. Il seguente esempio di codice fornisce un cursore per la proprietà di 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;
    }
}