| // Copyright 2018 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Top-level API of the Machine Learning Service: loading models for inference. |
| |
| // NOTE: This mojom exists in two places and must be kept in sync: |
| // Chromium: //chromeos/services/machine_learning/public/mojom/ |
| // Chrome OS: src/platform2/ml/mojom/ |
| // Note: Other repos downstream of Chromium might also use this mojom. |
| // Example: A backwards-compatible mojom change (and corresponding |
| // implementation change) can be made in Chrome OS first, then replicated to the |
| // clients (Chromium, other downstream repos) later. |
| // Use //chromeos/services/machine_learning/public/mojom/roll_mojom.sh to help |
| // replicate Chrome OS-side changes over to Chromium. |
| |
| module chromeos.machine_learning.mojom; |
| |
| // NOTE: The base directory for 'import' statements is expected to differ |
| // between Chromium and Chrome OS versions of this file. |
| import "ml/mojom/grammar_checker.mojom"; |
| import "ml/mojom/handwriting_recognizer.mojom"; |
| import "ml/mojom/model.mojom"; |
| import "ml/mojom/soda.mojom"; |
| import "ml/mojom/text_classifier.mojom"; |
| |
| // These values are persisted to logs. Entries should not be renumbered and |
| // numeric values should never be reused. |
| enum LoadModelResult { |
| OK = 0, |
| MODEL_SPEC_ERROR = 1, |
| LOAD_MODEL_ERROR = 2, |
| FEATURE_NOT_SUPPORTED_ERROR = 3, |
| LANGUAGE_NOT_SUPPORTED_ERROR = 4, |
| }; |
| |
| // Top-level interface between Chromium and the ML Service daemon. |
| // Next ordinal: 8 |
| interface MachineLearningService { |
| // Binds another pipe to this instance. |
| Clone@5(pending_receiver<MachineLearningService> receiver); |
| |
| // The BuiltinModelId inside BuiltinModelSpec is used to specify the model to |
| // be loaded. |
| LoadBuiltinModel@0(BuiltinModelSpec spec, pending_receiver<Model> receiver) |
| => (LoadModelResult result); |
| // The FlatbufferModelSpec contains both of the flatbuffer content and the |
| // metadata. |
| LoadFlatBufferModel@1(FlatBufferModelSpec spec, |
| pending_receiver<Model> receiver) |
| => (LoadModelResult result); |
| // Create a new TextClassifier. |
| LoadTextClassifier@2(pending_receiver<TextClassifier> receiver) |
| => (LoadModelResult result); |
| // Create and initialize a handwriting recognizer with given `spec`. |
| LoadHandwritingModel@3( |
| HandwritingRecognizerSpec spec, |
| pending_receiver<HandwritingRecognizer> receiver) |
| => (LoadHandwritingModelResult result); |
| // Will be deprecated soon. |
| LoadHandwritingModelWithSpec@4( |
| HandwritingRecognizerSpec spec, |
| pending_receiver<HandwritingRecognizer> receiver) |
| => (LoadModelResult result); |
| // Create and initialize a speech recognizer with given `config`. |
| LoadSpeechRecognizer@6(SodaConfig config, |
| pending_remote<SodaClient> soda_client, |
| pending_receiver<SodaRecognizer> soda_recognizer) |
| => (LoadModelResult result); |
| // Create and initialize a grammar checker. |
| LoadGrammarChecker@7(pending_receiver<GrammarChecker> receiver) |
| => (LoadModelResult result); |
| }; |