| // 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. |
| |
| // Next MinVersion: 5 |
| |
| // 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_mojoms.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/document_scanner.mojom"; |
| 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"; |
| import "ml/mojom/text_suggester.mojom"; |
| import "ml/mojom/web_platform_handwriting.mojom"; |
| |
| // These values are persisted to logs. Entries should not be renumbered and |
| // numeric values should never be reused. |
| [Stable, Extensible] |
| 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 browser process and the ML Service |
| // daemon. |
| // Next ordinal: 11 |
| [Stable, Uuid="9e5e4750-40cc-4eda-ac09-3457d06a45ab"] |
| 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); |
| // Create and initialize a text suggester. |
| [MinVersion=2] LoadTextSuggester@8( |
| pending_receiver<TextSuggester> receiver, |
| [MinVersion=3] TextSuggesterSpec? spec) |
| => (LoadModelResult result); |
| // Create a handwriting recognizer for web platform API. |
| // This API shares the same HWR engine with `LoadHandwritingModel` and |
| // `LoadHandwritingModelWithSpec` but with a different interface. This API is |
| // as identical to the Web Platform HWR API as possible so that we do not |
| // need to convert the input/output in the browser process. This is required |
| // for security reasons. |
| [MinVersion=1] LoadWebPlatformHandwritingModel@9( |
| chromeos.machine_learning.web_platform.mojom.HandwritingModelConstraint |
| constraint, |
| pending_receiver< |
| chromeos.machine_learning.web_platform.mojom.HandwritingRecognizer> |
| receiver) |
| => (LoadHandwritingModelResult result); |
| // Create and initialize a document scanner. |
| [MinVersion=4] LoadDocumentScanner@10( |
| pending_receiver<DocumentScanner> receiver) |
| => (LoadModelResult result); |
| }; |