Возможен ли диалог с фоновым звуком? - PullRequest
1 голос
/ 23 февраля 2020

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

В этой викторине есть раздел, в котором я хотел бы получить несколько вопросов / ответов с непрерывным звуковым фоном, воспроизводимым одновременно. Возможно ли это, или Google Assistant или Google Home Speaker должны молчать, ожидая ввода пользователя?

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

1 Ответ

2 голосов
/ 23 февраля 2020

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

Диалог с фоновым звуком

Самый простой способ сделать это - использовать Версия Google SSML с параллельными элементами с использованием тегов <par> и <media>. (Но имейте в виду, что это нестандартные теги, если вы хотите использовать их в другом месте.) При этом у вас будет одна «дорожка» для диалога и одна для аудио. Это может выглядеть примерно так:

<speak><par>
    <media xml:id="track-0" begin="0s" soundLevel="+0dB">
        <audio src="https://actions.google.com/sounds/v1/crowds/crowd_talking.ogg" >crowd talking</audio>
    </media>
    <media xml:id="track-1" begin="0.75s" soundLevel="+0dB">
        <seq>
        <media>
            <speak><p>Well, hello there</p></speak>
        </media>
        <media begin="2.0s">
            <speak><p>How are you?</p></speak>
        </media>
        </seq>
    </media>
</par></speak>

Есть ли простой способ спроектировать это?

Возможно, вы захотите проверить Nightingale Visual SSML Редактор , также выпущенный как проект с открытым исходным кодом . Это может помочь вам начать, но настройте SSML самостоятельно.

А как насчет перекрестных затуханий?

Конечно! Просто укажите, что вы затухаете в одной дорожке, а затем в другой, начиная с некоторого смещения до конца другой дорожки.

<speak><par>
    <media xml:id="track-0" begin="0s" fadeOutDur="6s">
        <audio src="https://actions.google.com/sounds/v1/alarms/digital_watch_alarm_long.ogg" >digital watch alarm long</audio>
    </media>
    <media xml:id="track-1" begin="track-0.end-6s" fadeInDur="6s">
        <audio src="https://actions.google.com/sounds/v1/human_sounds/baby_cry_long.ogg" >baby cry long</audio>
    </media>
</par></speak>

И я могу воспроизводить это, когда микрофон открыть и прослушать пользователя?

ну ... нет. Не с SSML.

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

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

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

Тогда как я могу это сделать?

Поскольку вы проводите тест, вы можете использовать Интерактивный холст для создания страницы с HTML и JavaScript. При этом вы можете использовать <audio> tag или MediaStream JavaScript API для создания фонового звука. При этом вы можете держать микрофон открытым, пока этот носитель все еще воспроизводится, но нет события, которое сообщало бы, когда mi c открыто, так что вы можете приглушить звук, который является немного минусов.

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

Вы также можете использовать SSML <mark> тег для запуска событий в вашем JavaScript, чтобы вы знали, когда SSML с сервера начинается, заканчивается или затрагивает другие точки аудиопотока.

Если есть визуальные подсказки, могу ли я использовать Интерактивный холст на интеллектуальном динамике?

Ну ... нет.

Но что вы можете сделать - это использовать возможности поверхности во время выполнения чтобы определить, поддерживается ли Interactive Canvas.

  • Если это так - используйте его (возможно, вместе с SSML).
  • Если нет, используйте метод SSML.
...