网络语音API语法

Hac*_*Saw 3 javascript speech-recognition ecmascript-6 webspeech-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 ;'
Run Code Online (Sandbox Code Playgroud)

线意味着从以下?

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
Run Code Online (Sandbox Code Playgroud)

如果我想合并我自己的语法,我需要对这一行进行哪些更改?

Nar*_*igo 5

该行是遵循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 Speech Recognition Demo了一点,我认为浏览器还没有真正使用语法(还)。如果你查看它的源代码,它永远不会调用recognition.onnomatch函数,让我觉得语法有点没用。它也不会出现在结果中,最终您只能检索口语文本的转录本 - 至少在 Chrome 中是这样。

我对此的结论(2020 年年中)是您现在并不真正需要它。也许它将来会有所帮助,但由于Can I use... 表(仍然)看起来很红,我怀疑这将是用语音做事的最终方式。