Функция звукового воспроизведения текста

AppFramework предоставляет плагин Speech QML для звукового распознавания текста, которая активизируется в приложениях, созданных в AppStudio для поддержки возможностей доступности, например голосового распознавания текста с модуляциями. Компонент TextToSpeech можно использовать для предоставления звуковой обратной связи конечным пользователям, включая слабовидящих пользователей, и предоставляя информацию для пользователей, которые в данный момент не смотрят на устройство. Чтобы использовать эту функциональность, вы сначала должны включить следующие утверждения импорта:

import ArcGIS.AppFramework.Speech 1.0

Конвертацию текста в речь

Ядро компонента TextToSpeech – это метод say, который конвертирует переданный текст в произнесённые фразы. Следующий пример кода демонстрирует его в действии, зачитывая содержимое текстовой области по нажатию кнопки:

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

Голосовые изменения

Производимый компонентом TextToSpeech голос может контролироваться путём изменения свойств volume, pitch и rate компонента. Каждое из свойств хранится как целое число двойной точности, где значение по умолчанию – 50. Следующий пример кода предоставляет бегунок для свойства 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;
    }
}