- From: Satish S <satish@google.com>
- Date: Wed, 14 Sep 2011 09:52:45 +0100
- To: Robert Brown <Robert.Brown@microsoft.com>
- Cc: "olli@pettay.fi" <olli@pettay.fi>, "public-xg-htmlspeech@w3.org" <public-xg-htmlspeech@w3.org>
- Message-ID: <CAHZf7Rky25-qQtMGcz+Ju+BT9erLUtRDjDhnQH15LQyPAorgaw@mail.gmail.com>
Thanks Robert, that does look simpler. One change I'd suggest is to turn all
the grammar/language strings into array parameters and array properties in
true JS form. So
function aLittleBitFussy() {
// Give me a recognizer for Australian or British English,****
// with grammars for dictation and datetime.****
// It should preferably model a child's vocal tract, but doesn't need
to.****
fussySR= new SpeechInputRequest(["en-AU", "en-GB"],
["<builtin:dictation>","<builtin:datetime>"], ["age=child"]);
** **
// Give me a synthesizer. It must be Swedish.****
// If the voice named "Kiana" is installed, please use it.****
// Otherwise, I'd prefer a voice that at least sounds like a woman in
her thirties, if you have one.****
fussyTTS = new SpeechOutputRequest("sv-SE", false, 35, ["name=Kiana"]);*
*
}
------
// will it recognize en-AU or en-GB, and speak Swedish?
if ((ssvc.recognitionLanguages.indexOf("en-AU") == -1 ||
ssvc.recognitionLanguages.indexOf("en-GB") == -1 ||
ssvc.synthesisLanguages.indexOf("sv-SE") == -1 ||
// does it have the right grammars?
ssvc.grammars.indexOf("<builtin:dictation>") == -1 ||
ssvc.grammars.indexOf("<builtin:us-cities>") == -1) {
//no ? okay, close it - we don't want it.
...
}
Cheers
Satish
On Wed, Sep 14, 2011 at 2:01 AM, Robert Brown <Robert.Brown@microsoft.com>wrote:
> I’m also struggling with sections 3 & 4 – SpeechService and
> SpeechServiceQuery. ****
>
> ** **
>
> Sorry for not chiming in earlier. While I can see the direction this is
> going, it just feels way too complicated to me. I think it will be a lot
> more work to iron out the details, but in the end won’t make for an API
> that’s easy to use.****
>
> ** **
>
> Personally I’d prefer to take a simplified approach. Something like this…*
> ***
>
> ** **
>
> Firstly, make it as easy as possible to use the built-in speech
> capabilities of a UA just by creating the SpeechInputRequest and
> SpeechOutputRequest objects, without any messing about with services and
> criteria and queries. Something like this:****
>
> ** **
>
> function simplestCase() {****
>
> // just give me the default recognizer and synthesizer:****
>
> simplestSR = new SpeechInputRequest();****
>
> simplestTTS = new SpeechOutputRequest();****
>
> }****
>
> ** **
>
> Secondly, for cases where the UA has access to variety of different speech
> engines, rather than create a Query API and a Criteria API, just provide
> mandatory parameters and optional parameters as strings in the constructors
> for SpeechInputRequest and SpeechOutputRequest.****
>
> ** **
>
> The constructor pattern would be something like this:****
>
> ** **
>
> [Constructor(DOMString? mandatoryparams, optional DOMString?
> optionalparams)]****
>
> ** **
>
> The usage would be something like this:****
>
> ** **
>
> function aLittleBitFussy() {****
>
> // Give me a recognizer for Australian or British English, ****
>
> // with grammars for dictation and datetime.****
>
> // It should preferably model a child's vocal tract, but doesn't
> need to.****
>
> fussySR= new SpeechInputRequest(
> "language=en-AU|en-GB;grammars=<builtin:dictation>,<builtin:datetime>", **
> **
>
> "age=child");****
>
> ** **
>
> // Give me a synthesizer. It must be Swedish.****
>
> // If the voice named "Kiana" is installed, please use it.****
>
> // Otherwise, I'd prefer a voice that at least sounds like a woman
> in her thirties, if you have one.****
>
> fussyTTS = new SpeechOutputRequest("language=sv-SE",****
>
>
> "name=Kiana;gender=female;age=30-40");****
>
> }****
>
> ** **
>
> Thirdly, only use a SpeechService object for actual services that aren’t
> built-in to the UA. In this case we should model existing WebSockets and XHR
> patterns to initialize the service, and then use the service object as a
> parameter to the constructors for SpeechInputRequest and
> SpeechOutputRequest. And drop the Query object entirely.****
>
> ** **
>
> Usage would be something like this:****
>
> ** **
>
> var ssvc;****
>
> function initService() {****
>
> //open a new service****
>
> ssvc = new SpeechService("
> https://myspeechservice/?account=a84e-2198-4e60-00f3");****
>
> ssvc.onopen = function () {****
>
> //check that it has the characteristics we expected...****
>
> ** **
>
> //will it recognize en-AU or en-GB, and speak Swedish?****
>
> if ((ssvc.getSupportedLanguages("recognition", "en-AU,en-GB")
> == '')****
>
> || (ssvc.getSupportedLanguages("synthesis", "en-AU,en-GB") ==
> '')****
>
> //does it have the right grammars?****
>
> || (ssvc.getSupportedGrammars(
> "<builtin:dictation>,<builtin:us-cities>") == '')) {****
>
> //no? okay, close it - we don't want it****
>
> ssvc.close();****
>
> ssvc.onclose = function () {****
>
> ssvc = null;****
>
> }****
>
> return;****
>
> }****
>
> }****
>
> ** **
>
> //get SR and TTS request objects using the service:****
>
> serviceSR = new SpeechInputRequest(ssvc);****
>
> serviceTTS = new SpeechOutputRequest(ssvc);****
>
> }****
>
> ** **
>
> ** **
>
> ** **
>
> ** **
>
> ** **
>
Received on Wednesday, 14 September 2011 08:53:12 UTC