// Copyright 2018 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Next MinVersion: 8 // 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 "chromeos/services/machine_learning/public/mojom/document_scanner.mojom"; import "chromeos/services/machine_learning/public/mojom/grammar_checker.mojom"; import "chromeos/services/machine_learning/public/mojom/handwriting_recognizer.mojom"; import "chromeos/services/machine_learning/public/mojom/heatmap_palm_rejection.mojom"; import "chromeos/services/machine_learning/public/mojom/image_content_annotation.mojom"; import "chromeos/services/machine_learning/public/mojom/model.mojom"; import "chromeos/services/machine_learning/public/mojom/soda.mojom"; import "chromeos/services/machine_learning/public/mojom/text_classifier.mojom"; import "chromeos/services/machine_learning/public/mojom/text_suggester.mojom"; import "chromeos/services/machine_learning/public/mojom/web_platform_handwriting.mojom"; // These values are persisted to logs. Entries should not be renumbered and // numeric values should never be reused. // Keep this enum in sync with MachineLearningServiceLoadModelResultEvent in // tools/metrics/histograms/metadata/cros_ml/enums.xml. [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: 14 [Stable, Uuid="9e5e4750-40cc-4eda-ac09-3457d06a45ab"] interface MachineLearningService { // Binds another pipe to this instance. Clone@5(pending_receiver receiver); // The BuiltinModelId inside BuiltinModelSpec is used to specify the model to // be loaded. LoadBuiltinModel@0(BuiltinModelSpec spec, pending_receiver receiver) => (LoadModelResult result); // The FlatbufferModelSpec contains both of the flatbuffer content and the // metadata. LoadFlatBufferModel@1(FlatBufferModelSpec spec, pending_receiver receiver) => (LoadModelResult result); // Create a new TextClassifier. LoadTextClassifier@2(pending_receiver receiver) => (LoadModelResult result); // Create and initialize a handwriting recognizer with given `spec`. LoadHandwritingModel@3( HandwritingRecognizerSpec spec, pending_receiver receiver) => (LoadHandwritingModelResult result); // Create and initialize a speech recognizer with given `config`. LoadSpeechRecognizer@6(SodaConfig config, pending_remote soda_client, pending_receiver soda_recognizer) => (LoadModelResult result); // Create and initialize a grammar checker. LoadGrammarChecker@7(pending_receiver receiver) => (LoadModelResult result); // Create and initialize a text suggester. [MinVersion=2] LoadTextSuggester@8( pending_receiver receiver, [MinVersion=3] TextSuggesterSpec? spec) => (LoadModelResult result); // Create a handwriting recognizer for web platform API. // This API shares the same HWR engine with `LoadHandwritingModel` // 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 receiver, [MinVersion=6] DocumentScannerConfig? config) => (LoadModelResult result); // Create and initialize an Image Content Annotator with given `config`. [MinVersion=7] LoadImageAnnotator@12(ImageAnnotatorConfig config, pending_receiver receiver) => (LoadModelResult result); [MinVersion=13] LoadHeatmapPalmRejection@13( HeatmapPalmRejectionConfig config, pending_remote client) => (LoadHeatmapPalmRejectionResult result); // Deprecated `LoadHandwritingModelWithSpec` REMOVED_4@4( HandwritingRecognizerSpec spec, pending_receiver receiver) => (LoadModelResult result); };