blob: e71a9e094a097f89ac87145a9e5c89247bc9ec90 [file] [log] [blame]
/*
* Copyright (C) 2012 Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef WebSpeechRecognizerClient_h
#define WebSpeechRecognizerClient_h
#include "../platform/WebVector.h"
namespace blink {
class WebSpeechRecognitionResult;
class WebSpeechRecognitionHandle;
class WebString;
// A client for reporting progress on speech recognition for a specific handle.
class WebSpeechRecognizerClient {
public:
enum ErrorCode {
OtherError = 0,
NoSpeechError = 1,
AbortedError = 2,
AudioCaptureError = 3,
NetworkError = 4,
NotAllowedError = 5,
ServiceNotAllowedError = 6,
BadGrammarError = 7,
LanguageNotSupportedError = 8
};
// These methods correspond to the events described in the spec:
// http://speech-javascript-api-spec.googlecode.com/git/speechapi.html#speechreco-events
// To be called when the embedder has started to capture audio.
virtual void didStartAudio(const WebSpeechRecognitionHandle&) = 0;
// To be called when some sound, possibly speech, has been detected.
// This is expected to be called after didStartAudio.
virtual void didStartSound(const WebSpeechRecognitionHandle&) = 0;
// To be called when sound is no longer detected.
// This is expected to be called after didEndSpeech.
virtual void didEndSound(const WebSpeechRecognitionHandle&) = 0;
// To be called when audio capture has stopped.
// This is expected to be called after didEndSound.
virtual void didEndAudio(const WebSpeechRecognitionHandle&) = 0;
// To be called when the speech recognizer provides new results.
// - newFinalResults contains zero or more final results that are new since
// the last time the function was called.
// - currentInterimResults contains zero or more inteirm results that
// replace the interim results that were reported the last time this
// function was called.
virtual void didReceiveResults(
const WebSpeechRecognitionHandle&,
const WebVector<WebSpeechRecognitionResult>& newFinalResults,
const WebVector<WebSpeechRecognitionResult>& currentInterimResults) = 0;
// To be called when the speech recognizer returns a final result with no
// recognizion hypothesis.
virtual void didReceiveNoMatch(const WebSpeechRecognitionHandle&,
const WebSpeechRecognitionResult&) = 0;
// To be called when a speech recognition error occurs.
virtual void didReceiveError(const WebSpeechRecognitionHandle&,
const WebString& message,
ErrorCode) = 0;
// To be called when the recognizer has begun to listen to the audio with
// the intention of recognizing.
virtual void didStart(const WebSpeechRecognitionHandle&) = 0;
// To be called when the recognition session has ended. This must always be
// called, no matter the reason for the end.
virtual void didEnd(const WebSpeechRecognitionHandle&) = 0;
protected:
virtual ~WebSpeechRecognizerClient() {}
};
} // namespace blink
#endif // WebSpeechRecognizerClient_h