| --- | |
| layout: doc | |
| title: "Starboard Module Reference: speech_recognizer.h" | |
| --- | |
| Defines a streaming speech recognizer API. It provides access to the platform | |
| speech recognition service. | |
| Note that there can be only one speech recognizer. Attempting to create a second | |
| speech recognizer without destroying the first one will result in undefined | |
| behavior. | |
| `SbSpeechRecognizerCreate`, `SbSpeechRecognizerStart`, `SbSpeechRecognizerStop`, | |
| `SbSpeechRecognizerCancel` and `SbSpeechRecognizerDestroy` should be called from | |
| a single thread. Callbacks defined in `SbSpeechRecognizerHandler` will happen on | |
| another thread, so calls back into the SbSpeechRecognizer from the callback | |
| thread are disallowed. | |
| ## Macros ## | |
| ### kSbSpeechRecognizerInvalid ### | |
| Well-defined value for an invalid speech recognizer handle. | |
| ## Enums ## | |
| ### SbSpeechRecognizerError ### | |
| Indicates what has gone wrong with the recognition. | |
| #### Values #### | |
| * `kSbNoSpeechError` | |
| No speech was detected. Speech timed out. | |
| * `kSbAborted` | |
| Speech input was aborted somehow. | |
| * `kSbAudioCaptureError` | |
| Audio capture failed. | |
| * `kSbNetworkError` | |
| Some network communication that was required to complete the recognition | |
| failed. | |
| * `kSbNotAllowed` | |
| The implementation is not allowing any speech input to occur for reasons of | |
| security, privacy or user preference. | |
| * `kSbServiceNotAllowed` | |
| The implementation is not allowing the application requested speech service, | |
| but would allow some speech service, to be used either because the | |
| implementation doesn't support the selected one or because of reasons of | |
| security, privacy or user preference. | |
| * `kSbBadGrammar` | |
| There was an error in the speech recognition grammar or semantic tags, or | |
| the grammar format or semantic tag format is supported. | |
| * `kSbLanguageNotSupported` | |
| The language was not supported. | |
| ## Typedefs ## | |
| ### SbSpeechRecognizer ### | |
| An opaque handle to an implementation-private structure that represents a speech | |
| recognizer. | |
| #### Definition #### | |
| ``` | |
| typedef struct SbSpeechRecognizerPrivate* SbSpeechRecognizer | |
| ``` | |
| ### SbSpeechRecognizerErrorFunction ### | |
| A function to notify that a speech recognition error occurred. `error`: The | |
| occurred speech recognition error. | |
| #### Definition #### | |
| ``` | |
| typedef void(* SbSpeechRecognizerErrorFunction) (void *context, SbSpeechRecognizerError error) | |
| ``` | |
| ### SbSpeechRecognizerResultsFunction ### | |
| A function to notify that the recognition results are ready. `results`: the list | |
| of recognition results. `results_size`: the number of `results`. `is_final`: | |
| indicates if the `results` is final. | |
| #### Definition #### | |
| ``` | |
| typedef void(* SbSpeechRecognizerResultsFunction) (void *context, SbSpeechResult *results, int results_size, bool is_final) | |
| ``` | |
| ### SbSpeechRecognizerSpeechDetectedFunction ### | |
| A function to notify that the user has started to speak or stops speaking. | |
| `detected`: true if the user has started to speak, and false if the user stops | |
| speaking. | |
| #### Definition #### | |
| ``` | |
| typedef void(* SbSpeechRecognizerSpeechDetectedFunction) (void *context, bool detected) | |
| ``` | |
| ## Structs ## | |
| ### SbSpeechConfiguration ### | |
| #### Members #### | |
| * `bool continuous` | |
| When the continuous value is set to false, the implementation MUST return no | |
| more than one final result in response to starting recognition. When the | |
| continuous attribute is set to true, the implementation MUST return zero or | |
| more final results representing multiple consecutive recognitions in | |
| response to starting recognition. This attribute setting does not affect | |
| interim results. | |
| * `bool interim_results` | |
| Controls whether interim results are returned. When set to true, interim | |
| results SHOULD be returned. When set to false, interim results MUST NOT be | |
| returned. This value setting does not affect final results. | |
| * `int max_alternatives` | |
| This sets the maximum number of SbSpeechResult in | |
| `SbSpeechRecognizerOnResults` callback. | |
| ### SbSpeechRecognizerHandler ### | |
| Allows receiving notifications from the device when recognition related events | |
| occur. | |
| The void* context is passed to every function. | |
| #### Members #### | |
| * `SbSpeechRecognizerSpeechDetectedFunction on_speech_detected` | |
| Function to notify the beginning/end of the speech. | |
| * `SbSpeechRecognizerErrorFunction on_error` | |
| Function to notify the speech error. | |
| * `SbSpeechRecognizerResultsFunction on_results` | |
| Function to notify that the recognition results are available. | |
| * `void * context` | |
| This is passed to handler functions as first argument. | |
| ### SbSpeechResult ### | |
| The recognition response that is received from the recognizer. | |
| #### Members #### | |
| * `char * transcript` | |
| The raw words that the user spoke. | |
| * `float confidence` | |
| A numeric estimate between 0 and 1 of how confident the recognition system | |
| is that the recognition is correct. A higher number means the system is more | |
| confident. NaN represents an unavailable confidence score. | |
| ## Functions ## | |
| ### SbSpeechRecognizerCancel ### | |
| Cancels speech recognition. The speech recognizer stops listening to audio and | |
| does not return any information. When `SbSpeechRecognizerCancel` is called, the | |
| implementation MUST NOT collect additional audio, MUST NOT continue to listen to | |
| the user, and MUST stop recognizing. This is important for privacy reasons. If | |
| `SbSpeechRecognizerCancel` is called on a speech recognizer which is already | |
| stopped or cancelled, the implementation MUST ignore the call. | |
| #### Declaration #### | |
| ``` | |
| void SbSpeechRecognizerCancel(SbSpeechRecognizer recognizer) | |
| ``` | |
| ### SbSpeechRecognizerCreate ### | |
| Creates a speech recognizer with a speech recognizer handler. | |
| If the system has a speech recognition service available, this function returns | |
| the newly created handle. | |
| If no speech recognition service is available on the device, this function | |
| returns `kSbSpeechRecognizerInvalid`. | |
| `SbSpeechRecognizerCreate` does not expect the passed SbSpeechRecognizerHandler | |
| structure to live after `SbSpeechRecognizerCreate` is called, so the | |
| implementation must copy the contents if necessary. | |
| #### Declaration #### | |
| ``` | |
| SbSpeechRecognizer SbSpeechRecognizerCreate(const SbSpeechRecognizerHandler *handler) | |
| ``` | |
| ### SbSpeechRecognizerDestroy ### | |
| Destroys the given speech recognizer. If the speech recognizer is in the started | |
| state, it is first stopped and then destroyed. | |
| #### Declaration #### | |
| ``` | |
| void SbSpeechRecognizerDestroy(SbSpeechRecognizer recognizer) | |
| ``` | |
| ### SbSpeechRecognizerIsValid ### | |
| Indicates whether the given speech recognizer is valid. | |
| #### Declaration #### | |
| ``` | |
| static bool SbSpeechRecognizerIsValid(SbSpeechRecognizer recognizer) | |
| ``` | |
| ### SbSpeechRecognizerStart ### | |
| Starts listening to audio and recognizing speech with the specified speech | |
| configuration. If `SbSpeechRecognizerStart` is called on an already started | |
| speech recognizer, the implementation MUST ignore the call and return false. | |
| Returns whether the speech recognizer is started successfully. | |
| #### Declaration #### | |
| ``` | |
| bool SbSpeechRecognizerStart(SbSpeechRecognizer recognizer, const SbSpeechConfiguration *configuration) | |
| ``` | |
| ### SbSpeechRecognizerStop ### | |
| Stops listening to audio and returns a result using just the audio that it has | |
| already received. Once `SbSpeechRecognizerStop` is called, the implementation | |
| MUST NOT collect additional audio and MUST NOT continue to listen to the user. | |
| This is important for privacy reasons. If `SbSpeechRecognizerStop` is called on | |
| a speech recognizer which is already stopped or being stopped, the | |
| implementation MUST ignore the call. | |
| #### Declaration #### | |
| ``` | |
| void SbSpeechRecognizerStop(SbSpeechRecognizer recognizer) | |
| ``` | |