Synthèse vocale

AppFramework fournit un plug-in QML Speech offrant une fonctionnalité de synthèse vocale qui permet aux applications créées avec AppStudio de prendre en charge les fonctionnalités d’accessibilité comme la synthèse vocale avec modulation de voix. Ce composant TextToSpeech peut être utilisé pour fournir un retour audio aux utilisateurs finaux, y compris de l’aide pour les utilisateurs malvoyants et fournir des informations lorsque l’utilisateur ne regarde pas son appareil. Pour utiliser cette fonctionnalité, vous devez tout d’abord inclure l’instruction d’import suivante :

import ArcGIS.AppFramework.Speech 1.0

Convertir le texte en paroles

L’élément central du composant TextToSpeech est la méthode say, qui convertit le texte soumis en une instruction orale. L’exemple de code suivant en fait la démonstration en utilisation, en lisant le contenu d’une zone de texte lorsque l’on clique sur un bouton :

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

Modification de voix

La voix produite par le composant TextToSpeech peut être contrôlée en modifiant les propriétés volume, pitch, et rate du composant. Chacune de ces propriétés est stockée en tant qu’entier à double précision (un chiffre après la virgule), la valeur par défaut étant 50. L’exemple de code suivant fournit un curseur pour la propriété 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;
    }
}