Skip to content

Instantly share code, notes, and snippets.

@12ange
Created June 10, 2018 20:45
Show Gist options
  • Select an option

  • Save 12ange/5b6ec734db8a54ce43a89165ebf2c7db to your computer and use it in GitHub Desktop.

Select an option

Save 12ange/5b6ec734db8a54ce43a89165ebf2c7db to your computer and use it in GitHub Desktop.
WebSpeechAPIでSpeechGrammarを使って音声認識したい日本人向け JSpeech Grammer Format ざっくり日本語訳
ソースは https://www.w3.org/TR/jsgf/
【 重要 】 大まかに知りたければ、5章のサンプル集だけ見れば何となく想像がつくかも。
1章 導入部は製作には関係ないので省略。
2章 定義
2.1. 文法名やパッケージ名はJava言語と同じルールですよーみたいな。 /* つーかぶっちゃけキャメルケース変数名で大体OK */
2.2. ルール名はUnicode文字+ちょっとだけ記号も使える。なんとぉ、日本語でも大丈夫! でも<NULL>と<VOID>は予約済み。
(2.2.1-2.2.2は省略。だって文字列変数だし)
(2.2.3.で<NULL>と<VOID>の簡単な説明。普通使わなそうなので省略)
2.3. トークン=別名・終端シンボル=単語。トークンの空白区切り並びもまたトークン。
(2.4. コメントは省略。JS自体に書けばいいじゃん)
3章 文法ヘッダ
3.1. 自己識別ヘッダ。一文目。これは "#JSGF V1.0;" 決め打ちでOK。
3.2. 文法名定義。二文目。 "grammar 文法名" お好きな名前で。
(3.3. importはしません)
4章 文法本体
4.1. ルール定義。`${"public "または""}<ルール名>=ルール拡張;`。
4.1.1. publicがついたルール(名)は、認識に使われますよー 言い換えれば、入力とpublicなルールとで比較しますよー
4.2. ルール拡張はトークンやルールをいろいろ羅列したり4.3.-4.6.したもの
4.3. 組成。空白区切りで並べる「順列」が一つ、半角バー'|'で区切られた「選択肢」が一つ。「選択肢」それぞれが「順列」になっていてもOK
(4.3.3. 重みづけは趣味かな?期待しない単語はそもそも文法に含めないですから)
4.4. グループ化は丸括弧'('~')'、選択肢を囲うのに使う感じ。オプションは四角括弧'['~']'、正規表現の'?'効果。
4.5. 単項演算子。'*'と'+'。正規表現に同じ。
(4.6. タグはとりあえず省略)
4.7. 優先順位:トークンやルール > ()[] > *+ > 順列 > 選択肢
(4.8. 再帰は読みにくくなるのでやらなくていいのよ)
(4.9. <NULL>と<VOID>の利用……とりあえず無視)
(4.10. 文書コメントも省略。JS自体に書けばいいじゃん)
5章 サンプル集。認識させたい文法をどうくみ上げるかが大まかにわかる。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment