Enabling voice search in Cobalt

Cobalt supports a subset of the Speech Recognition Web API. In order to provide support for using this API, platforms must implement the Starboard SbSpeechRecognizer API. Additionally, in order to check whether to enable voice control or not, web apps will call the MediaDevices.enumerateDevices() Web API function within which Cobalt will in turn call a subset of the Starboard SbMicrophone API.

Specific instructions to enable voice search

  1. Define the SB_HAS_SPEECH_RECOGNIZER flag to have the value 1 in your platform's configuration_public.h file, and implement the SbSpeechRecognizer API.

  2. Implement the following subset of the SbMicrophone API:

    • SbMicrophoneGetAvailable()
    • SbMicrophoneCreate()
    • SbMicrophoneDestroy()

    In particular, SbMicrophoneCreate() must return a valid microphone. It is okay to stub out the other functions, e.g. have SbMicrophoneOpen() return false.

  3. The YouTube app will display the mic icon on the search page when it detects valid microphone input devices using MediaDevices.enumerateDevices().

  4. With SB_HAS_SPEECH_RECOGNIZER defined, Cobalt will use the platform's Starboard SbSpeechRecognizer API implementation, and it will not actually read directly from the microphone via the Starboard SbMicrophone API.

Differences from previous versions of Cobalt

In previous versions of Cobalt, there was no way to dynamically disable speech support besides modifying common Cobalt code to dynamically stub out the Speech Recognition API when the platform does not support microphone input. This is no longer necessary, web apps should now rely on MediaDevices.enumerateDevices() to determine whether voice support is enabled or not.