Грамматика веб-речевого API

Может кто-нибудь, пожалуйста, скажите мне, что это

 const grammar = '#JSGF V1.0; grammar colors; public <color> = aqua | azure | beige | bisque | black | blue | brown | chocolate | coral | crimson | cyan | fuchsia | ghost | white | gold | goldenrod | gray | green | indigo | ivory | khaki | lavender | lime | linen | magenta | maroon | moccasin | navy | olive | orange | orchid | peru | pink | plum | purple | red | salmon | sienna | silver | snow | tan | teal | thistle | tomato | turquoise | violet | white | yellow ;'

линия означает из следующего?

const grammar = '#JSGF V1.0; grammar colors; public <color> = aqua | azure | beige | bisque | black | blue | brown | chocolate | coral | crimson | cyan | fuchsia | ghost | white | gold | goldenrod | gray | green | indigo | ivory | khaki | lavender | lime | linen | magenta | maroon | moccasin | navy | olive | orange | orchid | peru | pink | plum | purple | red | salmon | sienna | silver | snow | tan | teal | thistle | tomato | turquoise | violet | white | yellow ;'
const recognition = new SpeechRecognition()
const speechRecognitionList = new SpeechGrammarList()
speechRecognitionList.addFromString(grammar, 1)
recognition.grammars = speechRecognitionList

Если я хочу включить свою собственную грамматику, какие изменения в этой строке мне нужно внести?


person HackleSaw    schedule 20.07.2020    source источник
comment
Какую грамматику вы хотите иметь? Отдельные слова, как здесь, с цветами?   -  person Narigo    schedule 20.07.2020
comment
Да, точно. Но я даже могу определить массив этих слов и передать его здесь, но сначала я должен знать, что означает эта строка. Из документов не понял.   -  person HackleSaw    schedule 20.07.2020


Ответы (1)


Эта строка представляет собой строку, соответствующую набору правил спецификации JSGF. Более понятное объяснение можно найти на странице MDN на эта тема тоже.

В основном в этом случае мы можем разбить это на:

  • #JSGF V1.0; заголовок из спецификации, всегда необходимо знать, какую версию следует использовать. Не должен меняться для вас.
  • grammar colors; — это (настраиваемое) имя вашей грамматики.
  • public <color> = создает общедоступное правило под названием color. Общедоступный означает, что ваша грамматика может быть импортирована кем-то другим, и это правило доступно для них. color — это имя правила. Это необходимо при ссылке из другого правила (пример позже)
  • aqua | azure | ... — это варианты, которые соответствуют этому. | означает или. Поэтому, когда он распознает одно из aqua, azure, ..., он соответствует этому правилу <color>.

Немного более сложный пример со ссылками: #JSGF V1.0; grammar greeting; <greet> = hello | welcome; <name> = Alice | Bob; public <statement> = <greet> <name>;

Но теперь о практичности: я поиграл с MDN. Демонстрация распознавания речи немного, и я не думаю, что браузеры действительно используют грамматику (пока). Если вы посмотрите на его исходный код, он никогда не вызовет функцию recognition.onnomatch, из-за чего грамматика кажется мне немного бесполезной. Он также не отображается в результатах, и в итоге вы получаете только расшифровку произнесенного текста — по крайней мере, в Chrome.

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

person Narigo    schedule 20.07.2020