VXML перейти к новому документу, а запросы в очереди - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть 2 документа VXML, как показано ниже:

<vxml xmlns="http://www.w3.org/2001/vxml" version="2.0">

  <catch event="error.badfetch">
    <prompt> Error in fetching document. end of test</prompt>
    <exit />
  </catch>

  <catch event="error.connection.baddestination">
    <prompt> Error 600. End of test</prompt>
    <exit />
  </catch>

  <form id="main_menu">

    <property name="confidencelevel" value="0.1" />

    <field name="menu_choice" type="digits?maxlength=1">
      <prompt>
        <break time="1s" />
        Enter a number
      </prompt>

      <filled>
        <prompt>
          <break time="1.5s" />
          This is not Google voice
          <break time="2s" />
        </prompt>
        <goto next="doc2.vxml" />
      </filled>
    </field>

  </form>
</vxml>

<?xml version="1.0" ?>

<vxml xmlns="http://www.w3.org/2001/vxml" version="2.0">

  <form id="main">
    <property name="ttsengine" expr="'google-tts'" />

    <block>
      <log>Google TTS test</log>
    </block>
    <field name="menu_choice" type="digits?maxlength=1">
      <prompt>This is Google voice</prompt>

      <filled>
        <goto next="doc1.vxml" />
      </filled>
    </field>
  </form>
</vxml>

Мой вопрос: В doc1.vxml «Это не голос Google» ставился в очередь (не воспроизводился), когда для ttsengine было установлено значение mrcp. В doc2.vxml ttsengine был установлен на Google. Затем 2 подсказки: «Это не Google Voice» и «Это Google Voice» воспроизводились одновременно с использованием движка Google. Это правильно, или 1 следует играть с помощью mrcp, 2-й - с помощью Google?

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

Вам необходимо вернуть управление пользователю для сброса буфера подсказок перед переходом к следующему документу.

Чтобы все вышеперечисленное работало, добавьте простое меню перед переходом.

Псевдо Что-то вроде:

menu collect digits 
play digits voice one
menu press 1 to hear the same in another voice
goto voice two
play digits voice two
0 голосов
/ 10 сентября 2018

Насколько я могу судить, спецификация VoiceXML не предписывает какого-либо конкретного поведения.

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

Если вы добавите fetchaudio к элементу goto, очередь запросов должна быть сброшена (и, следовательно, сгенерирована ) в первом документе. Обратите внимание, что это не обязательно правильный обходной путь, если вы хотите, чтобы это приглашение воспроизводилось с включенной функцией barge-in во втором вопросе.

Из спецификации:

В то время как в переходном состоянии различные запросы помещаются в очередь, либо элемент в исполняемом содержимом или элемент <prompt> в элементах формы. Кроме того, аудио может быть поставлено в очередь fetchaudio приписывать. Приглашения и аудио в очереди воспроизводятся либо

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