Texto para voz

O AppFramework fornece um complemento Speech QML para funcionalidade de texto para voz que permite que os aplicativos criados com o AppStudio to suportem recursos de acessibilidade, como texto para voz com modulação de voz. Este componente TextToSpeech pode ser utilizado para fornecer um comentário de áudio aos usuários finais, incluindo ajuda para usuários com deficiência visual e fornecendo informações quando o usuário não estiver olhando para o dispositivo. Para utilizar esta funcionalidade, primeiro você precisa incluir a seguinte declaração de importação:

import ArcGIS.AppFramework.Speech 1.0

Converter texto para voz

O núcleo do componente TextToSpeech é o método say , que converte o texto enviado em uma declaração falada. O seguinte exemplo de código demonstra isto em uso, lendo o conteúdo de uma área de texto quando um botão é clicado:

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ção de voz

A voz produzida pelo componente TextToSpeech pode ser controlada modificando as propriedades volume, pitch e rate do componente. Cada uma destas propriedades é armazenada como um inteiro de dupla precisão (um ponto decimal), sendo o valor padrão 50. O seguinte exemplo de código fornece um controle deslizante para a propriedade 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;
    }
}