Использование речи для вызова элементов пользовательского интерфейса

Оболочка с поддержкой голосовой связи (VES) — это расширение платформы распознавания речи Windows, позволяющее пользователям использовать речь для вызова элементов управления на экране и вставки текста с помощью диктовки. VES стремится обеспечить общий комплексный интерфейс see-it-say-it на всех оболочках и устройствах Windows, с минимальными усилиями, необходимыми для разработчиков приложений. Для этого используется платформа распознавания речи Майкрософт и платформа модель автоматизации пользовательского интерфейса (UIA).

Пошаговое руководство по пользовательскому интерфейсу

Ниже приведен обзор того, что пользователь будет использовать при использовании VES на Xbox, и он должен помочь задать контекст перед погружением в подробные сведения о том, как работает VES.

  • Пользователь включает консоль Xbox и хочет просмотреть свои приложения, чтобы найти что-то интересное:

    Пользователь: "Эй Кортана, откройте мои игры и приложения"

  • Пользователь остается в режиме активного прослушивания (ALM), что означает, что консоль теперь прослушивает вызов элемента управления, видимого на экране, не говоря уже о том, что "Эй Кортана" каждый раз. Теперь пользователь может переключиться на просмотр приложений и прокрутить список приложений:

    Пользователь: "приложения"

  • Чтобы прокрутить представление, пользователь может просто сказать:

    Пользователь: "прокрутите вниз"

  • Пользователь видит поле для приложения, которое они интересуют, но забыли имя. Пользователь просит отображать метки голосовых подсказок:

    Пользователь: "Показать метки"

  • Теперь, когда ясно, что сказать, приложение можно запустить:

    Пользователь: "фильмы и телевизор"

  • Чтобы выйти из активного режима прослушивания, пользователь сообщает Xbox прекратить прослушивание:

    Пользователь: "остановить прослушивание"

  • Далее можно запустить новый активный сеанс прослушивания:

    Пользователь: "Эй Кортана, выбрать" или "Эй Кортана, выбрать"

Зависимость автоматизации пользовательского интерфейса

VES является клиентом модель автоматизации пользовательского интерфейса и зависит от информации, предоставляемой приложением через своих модель автоматизации пользовательского интерфейса поставщиков. Эта же инфраструктура уже используется функцией экранного диктора на платформах Windows. модель автоматизации пользовательского интерфейса обеспечивает программный доступ к элементам пользовательского интерфейса, включая имя элемента управления, его тип и шаблоны элементов управления, которые он реализует. По мере изменения пользовательского интерфейса в приложении VES реагирует на события обновления UIA и повторно анализирует обновленное дерево модель автоматизации пользовательского интерфейса, чтобы найти все доступные для действия элементы, используя эти сведения для создания грамматики распознавания речи.

Все приложения UWP имеют доступ к платформе модель автоматизации пользовательского интерфейса и могут предоставлять сведения о пользовательском интерфейсе независимо от того, на какой графической платформе они основаны (XAML, DirectX/Direct3D и т. д.). В некоторых случаях, например XAML, большая часть тяжелого подъема выполняется платформой, значительно сокращая работу, необходимую для поддержки экранного диктора и VES.

Дополнительные сведения о модель автоматизации пользовательского интерфейса см. в разделе модель автоматизации пользовательского интерфейса Основы.

Имя вызова элемента управления

VES использует следующую эвристика для определения фразы, которую необходимо зарегистрировать с помощью распознавателя речи в качестве имени элемента управления (т. е. то, что пользователь должен говорить, чтобы вызвать элемент управления). Это также фраза, которая будет отображаться в метке голосовой подсказки.

Источник имени в порядке приоритета:

  1. Если элемент имеет присоединенное LabeledBy свойство, VES будет использовать AutomationProperties.Name эту текстовую метку.
  2. AutomationProperties.Name элемента. В XAML текстовое содержимое элемента управления будет использоваться в качестве значения по умолчанию.AutomationProperties.Name
  3. Если элемент управления является ListItem или Button, VES будет искать первый дочерний элемент с допустимым AutomationProperties.Name.

Элементы управления, доступные для действий

VES рассматривает действия элемента управления, если он реализует один из следующих шаблонов элементов управления автоматизации:

  • InvokePattern (например. Кнопка)- Представляет элементы управления, которые инициируют или выполняют одно, однозначное действие и не поддерживают состояние при активации.

  • TogglePattern (например, Флажок) — представляет элемент управления, который может выполнять циклический цикл по набору состояний и поддерживать состояние после задания.

  • SelectionItemPattern (например. Поле со списком) — представляет элемент управления, который выступает в качестве контейнера для коллекции выбранных дочерних элементов.

  • ExpandCollapsePattern (например. Поле со списком) — представляет элементы управления, которые визуально расширяются для отображения содержимого и сворачиваются, чтобы скрыть содержимое.

  • ScrollPattern (например, List) — представляет элементы управления, которые действуют как прокручиваемые контейнеры для коллекции дочерних элементов.

Прокручиваемые контейнеры

Для прокручиваемых контейнеров, поддерживающих ScrollPattern, VES будет прослушивать голосовые команды, такие как "прокрутка влево", "прокрутка вправо", и т. д. И вызовет прокрутку с соответствующими параметрами, когда пользователь активирует одну из этих команд. Команды прокрутки внедряются на основе значения HorizontalScrollPercent и VerticalScrollPercent свойств. Например, если HorizontalScrollPercent значение больше 0, будет добавлено значение прокрутки влево, если оно меньше 100, будет добавлено значение прокрутки вправо и т. д.

Экранный диктор перекрывается

Приложение экранного диктора также является клиентом модель автоматизации пользовательского интерфейса и использует AutomationProperties.Name свойство в качестве одного из источников для текста, который он считывает для выбранного элемента пользовательского интерфейса. Для повышения специальных возможностей многие разработчики приложений прибегали к перегрузке Name свойства с длинным описательным текстом с целью предоставления дополнительных сведений и контекста при чтении экранным диктором. Однако это приводит к конфликту между двумя функциями: VES нуждается в коротких фразах, которые соответствуют или тесно соответствуют видимому тексту элемента управления, в то время как экранный диктор выигрывает от более длинных, более описательных фраз, чтобы дать лучший контекст.

Чтобы устранить эту проблему, начиная с Windows 10 Creators Update экранный диктор также был обновлен, чтобы просмотреть AutomationProperties.HelpText свойство. Если это свойство не пусто, экранный диктор будет говорить его содержимое в дополнение к AutomationProperties.Name. Если HelpText экранный диктор пуст, считывает только содержимое имени. Это позволит использовать более длинные описательные строки, если это необходимо, но поддерживает более короткую фразу распознавания речи в свойстве Name .

Схема, показывающая код кнопки, включающей AutomationProperties.Name и AutomationProperties.HelpText, показывающая, что оболочка с поддержкой голосовой связи прослушивает настройку имени.

Дополнительные сведения см. в разделе "Свойства автоматизации" для поддержки специальных возможностей в пользовательском интерфейсе.

Режим активного прослушивания (ALM)

Ввод ALM

В Xbox VES не постоянно прослушивает входные данные речи. Пользователь должен явно ввести режим активного прослушивания, сказав:

  • "Эй Кортана, выбрать", или
  • "Эй Кортана, сделать выбор"

Существует несколько других команд Кортана, которые также покидают пользователя в активном прослушивании после завершения, например "Эй Кортана, вход" или "Эй Кортана, идти домой".

Ввод ALM будет иметь следующий эффект:

  • Кортана наложение будет отображаться в правом верхнем углу, сказав пользователю, что они могут сказать, что они видят. Хотя пользователь говорит, фрагменты фраз, распознаваемые распознаваемым распознавательом речи, также будут отображаться в этом расположении.

  • VES анализирует дерево UIA, находит все интерактивные элементы управления, регистрирует текст в грамматике распознавания речи и запускает непрерывный сеанс прослушивания.

    Снимок экрана с выделенным параметром

Выход из ALM

Система останется в ALM, пока пользователь взаимодействует с пользовательским интерфейсом с помощью голоса. Существует два способа выхода из ALM:

  • Пользователь явно говорит: "остановить прослушивание", или
  • Время ожидания произойдет, если нет положительного распознавания в течение 17 секунд после ввода ALM или с момента последнего положительного распознавания

Вызов элементов управления

Когда в ALM пользователь может взаимодействовать с пользовательским интерфейсом с помощью голоса. Если пользовательский интерфейс настроен правильно (с свойствами name, соответствующими видимому тексту), использование голоса для выполнения действий должно быть простым, естественным интерфейсом. Пользователь должен иметь возможность просто сказать, что они видят на экране.

Пользовательский интерфейс наложения на Xbox

Имя VES, наследуемое для элемента управления, может отличаться от фактического видимого текста в пользовательском интерфейсе. Это может быть связано со свойством Name элемента управления или присоединенного LabeledBy элемента, явно устанавливаемого в другую строку. Или элемент управления не содержит текст графического интерфейса, а только значок или элемент изображения.

В таких случаях пользователям нужен способ увидеть, что нужно сказать, чтобы вызвать такой элемент управления. Таким образом, после активного прослушивания голосовые советы можно отобразить, сказав "показать метки". Это приводит к отображению меток голосовых подсказок поверх каждого элемента управления с действиями.

Существует ограничение в 100 меток, поэтому если пользовательский интерфейс приложения имеет более действенные элементы управления, чем 100, будут некоторые, которые не будут отображать метки голосовых подсказок. Какие метки выбираются в этом случае, не детерминированы, так как она зависит от структуры и композиции текущего пользовательского интерфейса, как указано в дереве UIA.

После отображения меток голосовых подсказок нет команды, чтобы скрыть их, они останутся видимыми до тех пор, пока не произойдет одно из следующих событий:

  • пользователь вызывает элемент управления
  • пользователь переходит от текущей сцены
  • пользователь говорит: "остановить прослушивание"
  • время ожидания активного режима прослушивания

Расположение меток голосовых подсказок

Метки голосовых подсказок расположены по горизонтали и по вертикали в пределах ограничивающегоRectangle элемента управления. Если элементы управления небольшие и тесно сгруппированы, метки могут перекрываться или быть скрытыми другими пользователями, и VES попытается разделить эти метки, чтобы разделить их и убедиться, что они видны. Однако это не гарантирует работу 100 % времени. Если есть очень переполненный пользовательский интерфейс, скорее всего, приведет к тому, что некоторые метки затеняются другими. Просмотрите пользовательский интерфейс с надписью "Показать метки", чтобы убедиться, что есть достаточно места для видимости голосового подсказки.

Снимок экрана: метки голосовых подсказок по горизонтали и по вертикали в ограничивающем прямоугольнике элемента управления.

Поля со списком

Когда поле со списком расширяется каждый отдельный элемент в поле со списком, получает собственную метку голосовой подсказки, и часто они будут находиться на вершине существующих элементов управления за раскрывающимся списком. Чтобы избежать появления загромождений и запутанных смутных меток меток (где метки элементов со списком перемешиваются с метками элементов со списком) при развертывании поля со списком будут отображаться только метки для дочерних элементов; Все остальные метки голосовых подсказок будут скрыты. Затем пользователь может выбрать один из раскрывающихся элементов или закрыть поле со списком.

  • Метки на свернутых полях со списком:

    Снимок экрана: окно вывода вывода видео и отображения звука с метками на свернутых полях со списком.

  • Метки в развернутом поле со списком:

    Снимок экрана: окно вывода вывода видео и отображения с метками в развернутом поле со списком.

Прокручиваемые элементы управления

Для прокручиваемых элементов управления голосовые подсказки для команд прокрутки будут сосредоточены на каждом из краев элемента управления. Голосовые подсказки будут отображаться только для направлений прокрутки, которые доступны для действий, поэтому, например, если вертикальное прокрутка недоступна, "прокрутите вверх" и "прокрутите вниз" не будет отображаться. При наличии нескольких прокручиваемых регионов VES будет использовать порядковые номера для различения между ними (например, Прокрутка вправо 1, прокрутка вправо 2 и т. д.).

Снимок экрана: прокрутка влево и прокрутка голосовых подсказок в области горизонтальной прокрутки U I.

Устранение неоднозначности

Если несколько элементов пользовательского интерфейса имеют одно и то же имя, или распознаватель речи, соответствующий нескольким кандидатам, VES введет режим диамбигуации. В этом режиме метки голосовых подсказок будут отображаться для элементов, участвующих в этом режиме, чтобы пользователь смог выбрать нужный. Пользователь может отменить режим дивамбигуации, сказав фразу "Отмена".

Например:

  • В активном режиме прослушивания перед диамбигуацией; пользователь говорит: "Я неоднозначный":

    Снимок экрана: режим активного прослушивания с параметром

  • Обе кнопки совпадают; началась диамбигуация:

    Снимок экрана: режим активного прослушивания с выбранным вариантом и метками

  • Отображение действия щелчка при выборе пункта "Выбрать 2":

    Снимок экрана: режим активного прослушивания с отображаемым параметром

Пример пользовательского интерфейса

Ниже приведен пример пользовательского интерфейса на основе XAML, настройка AutomationProperties.Name различными способами:

<Page
    x:Class="VESSampleCSharp.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:VESSampleCSharp"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">
    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <Button x:Name="button1" Content="Hello World" HorizontalAlignment="Left" Margin="44,56,0,0" VerticalAlignment="Top"/>
        <Button x:Name="button2" AutomationProperties.Name="Launch Game" Content="Launch" HorizontalAlignment="Left" Margin="44,106,0,0" VerticalAlignment="Top" Width="99"/>
        <TextBlock AutomationProperties.Name="Day of Week" x:Name="label1" HorizontalAlignment="Left" Height="22" Margin="168,62,0,0" TextWrapping="Wrap" Text="Select Day of Week:" VerticalAlignment="Top" Width="137"/>
        <ComboBox AutomationProperties.LabeledBy="{Binding ElementName=label1}" x:Name="comboBox" HorizontalAlignment="Left" Margin="310,57,0,0" VerticalAlignment="Top" Width="120">
            <ComboBoxItem Content="Monday" IsSelected="True"/>
            <ComboBoxItem Content="Tuesday"/>
            <ComboBoxItem Content="Wednesday"/>
            <ComboBoxItem Content="Thursday"/>
            <ComboBoxItem Content="Friday"/>
            <ComboBoxItem Content="Saturday"/>
            <ComboBoxItem Content="Sunday"/>
        </ComboBox>
        <Button x:Name="button3" HorizontalAlignment="Left" Margin="44,156,0,0" VerticalAlignment="Top" Width="213">
            <Grid>
                <TextBlock AutomationProperties.Name="Accept">Accept Offer</TextBlock>
                <TextBlock Margin="0,25,0,0" Foreground="#FF5A5A5A">Exclusive offer just for you</TextBlock>
            </Grid>
        </Button>
    </Grid>
</Page>

В приведенном выше примере показано, как выглядит пользовательский интерфейс с метками голосовых подсказок и без нее.

  • В режиме активного прослушивания без меток отображается:

    Снимок экрана: режим активного прослушивания с метками, в котором отображаются метки, и не отображаются метки.

  • В режиме активного прослушивания после того, как пользователь произнесет "показать метки":

    Снимок экрана: режим активного прослушивания с параметром

В случае button1xaml автоматически заполняет AutomationProperties.Name свойство с помощью текста из видимого текстового содержимого элемента управления. Поэтому есть метка голосовой подсказки, даже если нет явного AutomationProperties.Name набора.

При использовании button2явно задается AutomationProperties.Name значение, отличное от текста элемента управления.

С comboBoxпомощью свойства мы использовали LabeledBy свойство для ссылки label1 в качестве источника автоматизации Name, и в label1 этом случае мы устанавливаем AutomationProperties.Name более естественную фразу, чем то, что отображается на экране ("День недели", а не "Выбор дня недели").

Наконец, при использовании button3VES захватывает Name из первого дочернего элемента, так как button3 сам не имеет AutomationProperties.Name набора.

См. также