Поделиться через


Речевые взаимодействия

Интеграция распознавания речи и преобразования текста в речь (также известного как TTS или синтез речи) непосредственно в взаимодействие с пользователем вашего приложения.

Распознавание речи Распознавание речи преобразует слова, произнесенные пользователем, в текст для ввода формы, для диктовки текста, для указания действия или команды и выполнения задач. Поддерживаются предопределенные грамматики для диктовки без текста и веб-поиска, а также пользовательские грамматики, созданные с помощью спецификации грамматики распознавания речи (SRGS) версии 1.0.

TTS TTS использует подсистему синтеза речи (голос) для преобразования текстовой строки в речевые слова. Входная строка может быть простой, незавершенный текст или более сложный язык разметки синтеза речи (SSML). SSML предоставляет стандартный способ управления характеристиками речи на выходе, такими как произношение, громкость, темп или скорость, а также акцент.

Другие компоненты, связанные с речью:Кортана в приложениях Windows, используют настраиваемые голосовые команды (произнесенные или типизированные) для запуска приложения на переднем плане (приложение принимает фокус, как если бы оно было запущено из меню "Пуск") или активировать как фоновую службу (Кортана сохраняет фокус, но предоставляет результаты из приложения). См. сведения о взаимодействии Кортаны в приложениях Windows.

Проектирование речевого взаимодействия

Разработанная и реализованная вдумчиво, речь может быть надежным и приятным способом взаимодействия людей с вашим приложением, дополняя или даже заменяя клавиатуру, мышь, прикосновения и жесты.

Эти рекомендации и советы описывают, как лучше интегрировать распознавание речи и технологии синтеза речи (TTS) во взаимодействие с приложением.

Если вы рассматриваете возможность поддержки взаимодействия с речью в приложении:

  • Какие действия можно предпринять с помощью речи? Может ли пользователь перемещаться между страницами, вызывать команды или вводить данные в виде текстовых полей, кратких заметок или длинных сообщений?
  • Подходит ли входная речь для выполнения задачи?
  • Как пользователь знает, когда доступны входные данные речи?
  • Всегда ли приложение прослушивает или требуется ли пользователю выполнить действие, чтобы приложение ввело режим прослушивания?
  • Какие фразы инициируют действие или поведение? Нужно ли перечислять фразы и действия на экране?
  • Требуются ли экраны запроса, подтверждения и дизамбигуации или синтез речи (TTS)?
  • Что такое диалоговое окно взаимодействия между приложением и пользователем?
  • Требуется ли пользовательский или ограниченный словарь (например, медицина, наука или языковой стандарт) для контекста приложения?
  • Требуется ли сетевое подключение?

Ввод текста

Речь для ввода текста может варьироваться от короткой формы (одного слова или фразы) до длинной формы (непрерывная диктовка). Короткие входные данные формы должны быть менее 10 секунд в длину, в то время как длительный сеанс ввода формы может составлять до двух минут. (Длинные вводные данные формы можно перезапустить без вмешательства пользователя, создавая впечатление непрерывной диктовки.)

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

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

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

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

Укажите продолжительность времени, в течение которого входные данные речи не указывают на то, что распознавание закончено. Не перезапускайте распознавание после этого периода времени, так как обычно это означает, что пользователь перестал взаимодействовать с приложением.

Отключите весь пользовательский интерфейс непрерывного распознавания и завершите сеанс распознавания, если сетевое подключение недоступно. Для непрерывного распознавания требуется сетевое подключение.

Командование

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

Если пространство разрешено, рассмотрите возможность отображения поддерживаемых ответов для текущего контекста приложения с примерами допустимых входных данных. Это уменьшает количество потенциальных ответов, которые необходимо обрабатывать вашему приложению, а также устраняет путаницу для пользователя.

Попробуйте настроить свои вопросы таким образом, чтобы они вызывают как можно более конкретный ответ. Например, "Что вы хотите сделать сегодня?" — это очень открытый вопрос и потребует обширного описания грамматики из-за потенциального разнообразия ответов. Кроме того, "Вы хотите играть в игру или слушать музыку?" ограничивает ответ на один из двух допустимых ответов с соответствующим небольшим определением грамматики. Создавать небольшую грамматику гораздо проще и приводит к более точным результатам распознавания.

Запрос подтверждения от пользователя при низкой достоверности распознавания речи. Если намерение пользователя неясно, лучше получить уточнение, чем инициировать непреднамеренное действие.

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

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

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

Виды экранов зависят от указанных ограничений.

  • Предопределенная грамматика (диктовка или веб-поиск)

    • Экран прослушивания .
    • Экран мышления .
    • Экран "Услышано" или экран ошибки.
  • Список слов или фраз или файла грамматики SRGS

    • Экран прослушивания .
    • Экран Вы сказали, если сказанное пользователем может быть интерпретировано как более одного потенциального результата.
    • Экран "Услышано" или экран ошибки.

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

  • Настройте текст заголовка.
  • Введите пример текста того, что может сказать пользователь.
  • Укажите, отображается ли экран "Слышали, вы сказали".
  • Считывайте распознанную строку обратно пользователю на экране Как вы сказали.

Ниже приведен пример встроенного потока распознавания для распознавателя речи, использующего ограничение SRGS. В этом примере распознавание речи успешно выполнено.

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

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

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

Всегда на прослушивании

Приложение может прослушивать и распознавать входные данные речи сразу после запуска приложения без вмешательства пользователя.

Необходимо настроить ограничения грамматики на основе контекста приложения. Благодаря этому интерфейс распознавания речи очень ориентирован и имеет отношение к текущей задаче, а также сводит к минимуму ошибки.

"Что я могу сказать?"

Если входные данные речи включены, важно помочь пользователям определить, что именно можно понять и какие действия можно выполнить.

Если распознавание речи включено пользователем, попробуйте использовать панель команд или команду меню, чтобы отобразить все слова и фразы, поддерживаемые в текущем контексте.

Если распознавание речи всегда включено, попробуйте добавить фразу "Что я могу сказать?" на каждую страницу. Когда пользователь говорит эту фразу, отображаются все слова и фразы, поддерживаемые в текущем контексте. Эта фраза обеспечивает согласованный способ обнаружения возможностей речи пользователей в системе.

Сбои распознавания

Распознавание речи потерпит неудачу. Сбои происходят, когда качество звука плохое, когда распознается только часть фразы или когда входные данные не обнаружены вообще.

Обрабатывайте ошибки корректно, помогайте пользователю понять, почему произошло сбой распознавания, и обеспечьте восстановление.

Ваше приложение должно сообщить пользователю о том, что они не понимали и что им нужно повторить попытку.

Рассмотрим примеры одной или нескольких поддерживаемых фраз. Пользователь, скорее всего, повторяет предложенную фразу, что повышает успех распознавания.

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

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

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

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

Constraints

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

Предопределенные грамматики

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

  • Грамматика диктовки по умолчанию может распознавать большинство слов и фраз, которые пользователь может произнести на конкретном языке, и оптимизирована для распознавания коротких фраз. Диктовка свободного текста полезна, если вы не хотите ограничивать типы вещей, которые может сказать пользователь. Типичные варианты использования включают создание заметок или диктовку содержимого сообщения.
  • Грамматика веб-поиска, например грамматика диктовки, содержит большое количество слов и фраз, которые может сказать пользователь. Однако он оптимизирован для распознавания терминов, которые обычно используются при поиске в Интернете.

Замечание

Так как предопределенные диктовки и грамматики веб-поиска могут быть большими и находятся в сети (не на устройстве), производительность может быть не такой высокой, как с пользовательской грамматикой, установленной на устройстве.

Эти предопределенные грамматики можно использовать для распознавания речи продолжительностью до 10 секунд и не требуют от вас никаких усилий по настройке. Однако для них требуется подключение к сети.

Пользовательские грамматики

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

  • Ограничения программного списка обеспечивают упрощенный подход к созданию простых грамматик с помощью списка слов или фраз. Ограничение списка хорошо подходит для распознавания коротких, уникальных фраз. Явное указание всех слов в грамматике также повышает точность распознавания, так как подсистема распознавания речи должна обрабатывать только речь, чтобы подтвердить соответствие. Список также можно обновить программным способом.

  • Грамматика SRGS — это статический документ, который, в отличие от ограничения программного списка, использует формат XML, определенный SRGS версии 1.0. Грамматика SRGS обеспечивает наибольший контроль над интерфейсом распознавания речи, позволяя записывать несколько семантических значений в одном распознавании.

    Ниже приведены некоторые советы по созданию грамматик SRGS:

    • Делайте каждый синтаксис небольшим. Грамматики, содержащие меньше фраз, обычно обеспечивают более точное распознавание, чем более крупные грамматики, содержащие много фраз. Лучше иметь несколько небольших грамматик для конкретных сценариев, чем иметь одну грамматику для всего приложения.
    • Сообщайте пользователям, что нужно сказать для каждого контекста приложения, а также включайте и отключайте грамматики по мере необходимости.
    • Создайте каждую грамматику, чтобы пользователи могли говорить команду различными способами. Например, можно использовать правило МУСОРа для сопоставления входных данных речи, которые грамматика не определяет. Это позволяет пользователям говорить дополнительные слова, которые не имеют смысла для вашего приложения. Например, "дай мне", "и", "э-э", "может быть", и т. д.
    • Используйте элемент sapi:subset для сопоставления входных данных речи. Это расширение Майкрософт для спецификации SRGS для сопоставления частичных фраз.
    • Старайтесь избежать определения фраз в грамматике, содержащей только один слог. Распознавание, как правило, более точно для фраз, содержащих два или более слогов.
    • Избегайте использования фраз, которые звучат аналогично. Например, такие фразы, как "hello", "bellow" и "fellow", могут вызывать проблемы для механизма распознавания и привести к низкой точности распознавания.

Замечание

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

Пользовательские произношения

Если ваше приложение содержит специализированный словарь с необычными или вымышленными словами или словами с необычными произношениями, вы можете улучшить производительность распознавания этих слов, определив пользовательские произношения.

Для небольшого списка слов и фраз или списка редко используемых слов и фраз можно создавать пользовательские произношения в грамматике SRGS. Подробности смотрите в элементе token.

Для более крупных списков слов и фраз или часто используемых слов и фраз можно создать отдельные документы лексикона произношения. Дополнительные сведения см. в разделе о Lexicons и Фонетических алфавитах .

Testing

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

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

Преобразование текста в речь (TTS)

TTS создает выходные данные речи из обычного текста или SSML.

Попробуйте разработать подсказки, которые вежливые и обнадеживающие.

Рассмотрим, следует ли читать длинные строки текста. Это одна вещь, чтобы слушать текстовое сообщение, но совсем другое, чтобы слушать длинный список результатов поиска, которые трудно помнить.

Вы должны предоставить элементы управления мультимедиа, чтобы разрешить пользователям приостановить или остановить TTS.

Вы должны прослушать все строки TTS, чтобы убедиться в их понятности и естественности звучания.

  • Связывание воедино необычной последовательности слов, произнесения номеров деталей или знаков препинания может привести к тому, что фраза становится неразборчивой.
  • Речь может звучать неестественно, когда просодия или каденция отличается от того, как носитель языка сказал бы фразу.

Обе проблемы можно устранить с помощью SSML вместо обычного текста в качестве входных данных синтезатора речи. Дополнительные сведения о SSML см. в разделах Использование SSML для управления синтезированной речью и Справочник по языку разметки синтеза речи.

Тема Description
Распознавание речи Используйте распознавание речи для предоставления входных данных, указания действия или команды и выполнения задач.
Указание языка распознавателя речи Узнайте, как выбрать установленный язык для распознавания речи.
Определение ограничений пользовательского распознавания Узнайте, как определить и использовать пользовательские ограничения для распознавания речи.
Включение непрерывной диктовки Узнайте, как записывать и распознавать длинные непрерывные диктовки.
Управление проблемами с входным звуком Узнайте, как управлять проблемами с точностью распознавания речи, вызванной качеством звука.
Настройка времени ожидания распознавания речи Установите время, в течение которого распознаватель речи игнорирует молчание или неразборчивые звуки (шум) и продолжает прослушивать речевой ввод.

  Образцы