โครงสร้างไฟล์ไวยากรณ์

ไฟล์ไวยากรณ์จะต้องเป็นไปตามโครงสร้างเฉพาะสำหรับ Speakeasy เพื่อการแปลข้อมูลเนื้อหาของไฟล์ที่ถูกต้อง

ดูวิดีโอที่เกี่ยวข้อง (3:38)

รายการต่อไปนี้คือตัวอย่างเนื้อหาของไฟล์ไวยากรณ์พื้นฐาน:

#BNF+EM V2.1;

/*

ไวยากรณ์: usa_states.bnf

 

คำอธิบาย:

ไฟล์นี้คือไฟล์ไวยากรณ์ที่เป็นที่จดจำชื่อรัฐบางรัฐในสหรัฐอเมริกาได้

 

ฉันจะพูดยังไงดี?

คุณสามารถพูดชื่อใดก็ได้ของรัฐในสหรัฐอเมริกาต่อไปนี้

*/

 

!grammar usa_states;

!start <state>;

 

<state>:

  อลาบาม่า

| อลาสก้า

| คอนเนคทิคัต

| ฟลอริดา

| ไอดาโฮ

| แคนซัส

| "นิวเจอร์ซีย์"

| "นิวยอร์ก"

#BNF+EM V2.1;

ไฟล์ไวยากรณ์แต่ละไฟล์จะต้องเริ่มต้นด้วยข้อความคำสั่ง เช่น #BNF+EM V1.1; ซึ่งระบุวิธีที่ Speakeasy ควรจัดการกับไฟล์ไวยากรณ์ คุณไม่จำเป็นต้องแก้ไขบรรทัดนี้

/* */ หรือ //

ในการสร้างความคิดเห็นหรือข้อมูลที่เอ็นจินเพิกเฉย คุณสามารถเริ่มต้นบรรทัดด้วย // หรือแนบข้อความในตัวทำเครื่องหมาย /* และ */ คุณสามารถแก้ไขคำอธิบายและส่วนฉันจะพูดยังไงดีได้ เพื่ออธิบายการเปลี่ยนแปลงที่คุณทำในไฟล์ไวยากรณ์

!grammar [filename]

หากคุณเปลี่ยนชื่อของไฟล์ไวยากรณ์ คำสั่ง !grammar จะต้องใช้ชื่อไฟล์ใหม่ ตัวอย่างเช่น หากชื่อของไฟล์เปลี่ยนเป็น VoicePick.bnf คำสั่งจะอ่านเป็น: !grammar VoicePick;

!start <state>;

คำสั่ง !start จะระบุว่ากลุ่มของคำใดบ้างในไวยากรณ์ที่สามารถใช้ได้เมื่อมีไวยากรณ์ที่ใช้งานอยู่ ในตัวอย่างด้านบน เอ็นจินจะฟังคำทั้งหมดในกฎ <state> หากมีกฎมากกว่าหนึ่งกฎที่แสดงอยู่และมีกฎเพียงกฎเดียวที่อ้างอิงโดยคำสั่ง กฎอื่นๆ ทั้งหมดจะถูกเพิกเฉย

<state>: อลาบาม่า | คอนเนตทิคัต |...

คำและวลีที่แสดงในระหว่าง <state>: และ ; สุดท้ายคือคำที่ไวยากรณ์จะยอมรับ คำแต่ละคำหรือวลีแต่ละวลีจะต้องคั่นด้วย | (สัญลักษณ์ OR) คำศัพท์อาจแสดงเป็นรายการในบรรทัดเดียวกันทั้งหมดหรือจัดให้อยู่ในแนวตั้งเพื่อให้แก้ไขได้ง่ายยิ่งขึ้น

ในการปรับปรุงการรับรู้สำหรับคำที่อาจคล้ายกันกับคำอื่น เช่น New York และ New Jersey ให้แนบวลีใน "" (อัญประกาศ) วิธีนี้จะบังคับเอ็นจิน Speakeasy ให้เปรียบเทียบวลีที่ยอมรับอย่างใกล้ชิดยิ่งกว่าเดิมกับการตอบสนองของผู้ใช้

กฎหลายกฎ

ในไฟล์ไวยากรณ์บางไฟล์ กฎหลักจะถูกแบ่งออกเป็นส่วนย่อยเพื่อให้จัดการคำได้ง่ายขึ้น หากคุณมีกฎมากกว่าหนึ่งกฎในไฟล์ ตรวจสอบให้แน่ใจว่ากฎเหล่านั้นถูกรวมอยู่ในกฎที่ใช้ในบรรทัด !start

!start <Speech>;

<Speech>: <YesNo> | <Maybe>;

<YesNo>: ใช่ | ไม่;

<Maybe>: อาจจะ;

ในตัวอย่างนี้ กฎ <Speech> จะมีกฎ <YesNo> และกฎ <Maybe> ดังนั้น เอ็นจินจะฟังคำทั้งหมดทั้งในกฎ <YesNo> และกฎ <Maybe>

คำที่คล้ายกัน

หากคุณมีคำที่ออกเสียงคล้ายกัน คุณอาจได้รับผลลัพธ์การรู้จำเสียงที่ไม่ดีนัก ในการปรับปรุงการจดจำให้ดียิ่งขึ้น ให้ใช้วลีที่มีความยาวมากกว่าเดิมและมีความแตกต่างอย่างชัดเจน ตัวอย่างเช่น แทนที่จะใช้คำทั่วๆ ไปอย่าง “เร็วขึ้น” และ “เร็วที่สุด” ให้แทนที่คำเหล่านั้นด้วยวลีอย่างเช่น “ไปให้เร็วขึ้น” และ “ความเร็วเต็มพิกัด”