blob: edeb54dcfcebee86dac9ad301d5360c98bcfd045 [file] [log] [blame]
// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.speech;
[Discoverable]
protocol SpeechToText {
// Starts capturing speech from the microphone.
BeginCapture(TranscriptionListener transcription_listener);
// Begins hotword detection. Detected hotword utterances are reported on the
// given listener.
ListenForHotword(HotwordListener hotword_listener);
};
// Represents an active transcription session. Either side may close this
// interface to indicate that transcription should stop. If the transcription is
// unexpectedly closed before |OnReady| is called, the implementer should treat
// it as an error (in such cases, |OnError| is called).
protocol TranscriptionListener {
// Indicates that capture has begun. Prior to this, parts of the system may
// not have been initialized and audio may have been dropped. No calls to
// |OnTranscriptUpdate| will occur before |OnReady| is called.
OnReady();
// Receives updated transcripts. Each call receives the most likely
// transcription of the entire utterance at that time. Previously transcribed
// text may mutate in response to later input.
OnTranscriptUpdate(string spoken_text);
// Provides periodic updates on the user's speech signal power, when the
// microphone is open and streaming to the backend.
// |speech_level| is instantaneous speech power, in decibels (negative).
OnSpeechLevelUpdate(float32 speech_level);
// An error occurred before or during transcription. Depending on the nature
// of the error, this may occur before |OnReady| is called, and |OnReady| may
// never be called. This binding will be closed immediately after sending this
// message.
OnError();
};
// Listens for hotwords. Each detected hotword utterance triggers |OnHotword|.
// Closure of this handle by the speech service indicates an error.
protocol HotwordListener {
// Indicates that capture has begun. Prior to this, parts of the system may
// not have been initialized and audio may have been dropped. No calls to
// |OnHotword| will occur before |OnReady| is called.
OnReady();
// Called for each detected hotword utterance.
OnHotword();
};