Przekształcanie tekstu na mowę

Moduł AppFramework udostępnia wtyczkę Speech QML oferującą możliwość przekształcania tekstu na mowę pozwalającą aplikacjom utworzonymi za pomocą aplikacji AppStudio na obsługę funkcji dostępności, takich jak przekształcanie tekstu na mowę z modulacją głosu. Tego komponentu TextToSpeech można używać w celu dostarczenia użytkownikom końcowym głosowej informacji zwrotnej, w tym pomocy dla osób słabowidzących albo dla osób nie patrzących na urządzenie. Aby korzystać z tej funkcjonalności, należy najpierw dołączyć poniższą instrukcję importu:

import ArcGIS.AppFramework.Speech 1.0

Przekształcanie tekstu na mowę

Rdzeniem komponentu TextToSpeech jest metoda say przekształcająca przesłany tekst na mówioną instrukcję. Poniższy przykładowy kod demonstruje jego użycie, odczytując zawartość pola tekstowego po kliknięciu przycisku:

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

Modyfikacja głosu

Głosem wygenerowanym przez komponent TextToSpeech można sterować, modyfikując właściwości volume, pitch i rate komponentu. Każda z tych właściwości jest przechowywana w postaci liczby całkowitej podwójnej precyzji (z jedną cyfrą po separatorze dziesiętnym) o wartości domyślnej równej 50. Poniższy przykładowy kod udostępnia suwak dla właściwości 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;
    }
}