Open Bug 1185233 Opened 6 years ago Updated 5 years ago

Implement SpeechRecognition::continuous

Categories

(Core :: Web Speech, defect)

defect
Not set
normal

Tracking

()

People

(Reporter: kdavis, Assigned: kdavis)

References

Details

(Whiteboard: [webspeechapi][vaani][systemsfe])

Currently SpeechRecognition::continuous is not implemented.
Assignee: nobody → kdavis
Whiteboard: [webspeechapi][vaani][systemsfe]
Likely the best way of doing this is to wait until Bug 1051604 is resolved,
then to lower the VAD when SpeechRecognition::continuous to true to allow
for longer utterances to be recognized.
Depends on: 1051604
Assignee: kdavis → nobody
Assignee: nobody → kdavis
Comment 1 is not sufficiently detailed as to the implementation direction.

In the next two comments I will give a better picture of the two major
implementation possibilities.
Possibility 1
=============

The spec[1] implies of the continuous parameter....

 1. The default value MUST be false.
 2. If false, the user agent MUST return no more than one final result
    in response to starting recognition.
 3. If true, the user agent MUST return zero or more final results
    representing multiple consecutive recognitions in response to
    starting recognition.
 
The current behaviour of the Pocketsphinx implementation returns no
more than one final result in response to starting recognition and
thus behaves as if continuous were false. Thus to implement continuous
one must add behaviour which mimics the continuous is true case
described above.

A simple means of doing so is as follows: If continuous is true, do
not modify the current behaviour.

As the current behaviour of the Pocketsphinx implementation returns no
more than one final result in response to starting recognition, the
current behaviour, in particular, returns zero or more final results
representing multiple consecutive recognitions in response to starting
recognition.

Thus a simple means of implementing the continuous parameter is to

1. Set the default value of the continuous parameter to false
2. Ignore all subsequent values of the continuous parameter

[1] https://dvcs.w3.org/hg/speech-api/raw-file/tip/webspeechapi.html#dfn-continuous
Possibility 2
=============

The spec[1] implies of the continuous parameter....

 1. The default value MUST be false.
 2. If false, the user agent MUST return no more than one final result
    in response to starting recognition.
 3. If true, the user agent MUST return zero or more final results
    representing multiple consecutive recognitions in response to
    starting recognition.
 
The current behaviour of the Pocketsphinx implementation returns no
more than one final result in response to starting recognition and
thus behaves as if continuous were false. Thus to implement continuous
one must add behaviour which mimics the continuous is true case
described above.

A simple means of doing so is as follows: If continuous is true and a final result
was dispatched, internally call start() again on the apropos SpeechRecognition.
instance.

As the current behaviour of the Pocketsphinx implementation returns no
more than one final result in response to starting recognition, the
current behaviour will, on each successful call to start(), respond with
one final result.

If an internal call is added that, on the dispatch of a final result, calls start()
again when continuous is true, then the behaviour of the implementation 
will be to return zero or more final results representing multiple consecutive
recognitions in response to starting recognition when continuous is true.

Thus, a simple means of implementing the continuous parameter is to

1. Set the default value of the continuous parameter to false
2. If continuous is true and a final result was dispatched, then internally
    call start() on the apropos SpeechRecognition instance.

There is slight detail that one must be careful not re-parse the grammar in
step 2 above, but this should be trivial to implement.

[1] https://dvcs.w3.org/hg/speech-api/raw-file/tip/webspeechapi.html#dfn-continuous
Possibility 1, comment 3, adheres to the letter but not the spirit of the spec[1].

Possibility 2, comment 4, adheres to the letter and the spirit of the spec[1].

So I will implement possibility 2 baring any unforeseen problems.


[1] https://dvcs.w3.org/hg/speech-api/raw-file/tip/webspeechapi.html#dfn-continuous
Duplicate of this bug: 967896
Any progress? :)
Unfortunately, I haven't had time and likely won't until at least after the all-hands meeting in Dec :-(
You need to log in before you can comment on or make changes to this bug.