Hi, I'm running following jsfg file with PocketSphinx. It works fine but
sometimes I'm seeing partial/mix-and-match output (as I would expect from a
statistical model but not from FSG) as follows (each line is a separate run):
MY
MY MARTIN LUTHAR KING
DIAL
SILENT CHAN
According to JSGF syntax rules it should not be happening. I should be getting
the complete sentences (unless deliberate options are placed with square
brackets). Is there an issue or this is the way it is implemented !
Maybe, but I wouldn't recommend you to rely on that. Grammar helps engine to
make search faster, but it can't correct what user said. You have to deal with
repetitions, pauses and out-of-grammar words yourself. To get semantic of
voice command you need to have upper layer of recognizer responsible for
semantic analysys. You can check CMU Olimpus project or Let's go system for
details on how it's done in practice.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi, I'm running following jsfg file with PocketSphinx. It works fine but
sometimes I'm seeing partial/mix-and-match output (as I would expect from a
statistical model but not from FSG) as follows (each line is a separate run):
MY
MY MARTIN LUTHAR KING
DIAL
SILENT CHAN
According to JSGF syntax rules it should not be happening. I should be getting
the complete sentences (unless deliberate options are placed with square
brackets). Is there an issue or this is the way it is implemented !
JSGF V1.0;
grammar nokia;
public = <profile> | <radio> | <record> | <log> | <battery> | <web>
| <messages> | <name_dialling> ; </name_dialling></messages></web></battery></log></record></radio></profile>
<profile> = <profile_general> | <profile_silent> | <profile_meeting> |
<profile_outdoor> | <profile_my_style_1> | <profile_my_style_2> | <flight>;
<profile_general> = GENERAL;
<profile_silent> = SILENT;
<profile_meeting> = MEETING;
<profile_outdoor> = OUTDOOR;
<profile_my_style_1> = MY STYLE 1;
<profile_my_style_2> = MY STYLE 2;
<flight> = FLIGHT;
<radio> = <radio_on> | <radio_off> | <next_station> | <previous_station>;
<radio_on> = RADIO ON;
<radio_off> = RADIO OFF;
<next_station> = NEXT STATION;
<previous_station> = PREVIOUS STATION;
<record> = RECORD;
<log> = <missed_calls> | <received_calls>;
<missed_calls> = MISSED CALLS;
<received_calls> = RECEIVED CALLS;
<battery> = <audible_battery_bar> | <audible_signal_bar>;
<audible_battery_bar> = AUDIBLE BATTERY BAR;
<audible_signal_bar> = AUDIBLE SIGNAL BAR;
<web> = HOMEPAGE;
<messages> = CALL VOICE MAILBOX;
<name_dialling> = <name_list>;
<name_list> = <john_thomas> | <martin_luthar_king> | <jacky_chan>;
<john_thomas> = JOHN THOMAS;
<martin_luthar_king> = MARTIN LUTHAR KING;
<jacky_chan> = JACKY CHAN; </jacky_chan></martin_luthar_king></john_thomas></jacky_chan></martin_luthar_king></john_thomas></name_list></name_list></name_dialling></messages></web></audible_signal_bar></audible_battery_bar></audible_signal_bar></audible_battery_bar></battery></received_calls></missed_calls></received_calls></missed_calls></log></record></previous_station></next_station></radio_off></radio_on></previous_station></next_station></radio_off></radio_on></radio></flight></profile_my_style_2></profile_my_style_1></profile_outdoor></profile_meeting></profile_silent></profile_general></flight></profile_my_style_2></profile_my_style_1></profile_outdoor></profile_meeting></profile_silent></profile_general></profile>
Note: My actual name list is big I've just shortened it for illustration
purposes.
This is how things are implemented.
Is there/will there be a way to force pocketsphinx (0.6 or any upcomiing
releases) to follow sentences strictly and avoid mix and match ?
Regards,
Maybe, but I wouldn't recommend you to rely on that. Grammar helps engine to
make search faster, but it can't correct what user said. You have to deal with
repetitions, pauses and out-of-grammar words yourself. To get semantic of
voice command you need to have upper layer of recognizer responsible for
semantic analysys. You can check CMU Olimpus project or Let's go system for
details on how it's done in practice.
Thanks nshmyrev...
Regards,