{ "name": "V1: EmbeddingGemma 2 audio tower (layers 0-11) + causal CTC head, Core ML", "version": "v1", "license": "apache-2.0", "base_model": { "id": "google/embeddinggemma-2", "revision": "914f7f89142e33e77833254d9c9b90c3cef7303b", "license": "apache-2.0", "component": "audio_tower", "layers": [ 0, 11 ] }, "package": { "file": "v1.mlpackage", "format": "mlprogram (multifunction, shared weights)", "precision": "fp16", "source_build": "fp16safe/fp16", "specification_version": 9, "minimum_os": "macOS 15 / iOS 18", "compute_units": { "recommended": "CPU_AND_NE", "supported": [ "CPU_AND_NE", "CPU_AND_GPU", "CPU_ONLY" ] }, "default_function": "win_10s" }, "windows": [ { "function": "win_5s", "seconds": 5.0, "mel_frames": 500, "output_frames": 125 }, { "function": "win_10s", "seconds": 10.0, "mel_frames": 1000, "output_frames": 250 }, { "function": "win_20s", "seconds": 20.0, "mel_frames": 2000, "output_frames": 500 }, { "function": "win_35s", "seconds": 35.0, "mel_frames": 3500, "output_frames": 875 } ], "window_choice": "smallest window with mel_frames >= valid mel frames", "inputs": [ { "name": "mel", "shape": [ "1", "T_mel", "128" ], "dtype": "float32", "description": "log-mel frames (see feature_extractor), zero-padded to the function's window" }, { "name": "valid_len", "shape": [ "1" ], "dtype": "int32", "description": "number of valid mel frames" } ], "outputs": [ { "name": "log_probs", "shape": [ "1", "T_mel/4", "257" ], "dtype": "float16", "description": "CTC log-probabilities (natural log), 256 pieces + blank" }, { "name": "l11", "shape": [ "1", "T_mel/4", "1024" ], "dtype": "float16", "description": "layer-11 features after the int8 round trip" } ], "valid_output_frames": "ceil(valid_len / 4)", "feature_extractor": { "class": "Gemma4AudioFeatureExtractor", "preprocessor_config": { "dither": 0.0, "feature_extractor_type": "Gemma4AudioFeatureExtractor", "feature_size": 128, "fft_length": 512, "fft_overdrive": false, "frame_length": 320, "hop_length": 160, "input_scale_factor": 1.0, "max_frequency": 8000.0, "mel_floor": 0.001, "min_frequency": 0.0, "padding_side": "right", "padding_value": 0.0, "per_bin_mean": null, "per_bin_stddev": null, "preemphasis": 0.0, "preemphasis_htk_flavor": true, "return_attention_mask": true, "sampling_rate": 16000 }, "source": "google/embeddinggemma-2@914f7f89142e33e77833254d9c9b90c3cef7303b/preprocessor_config.json (unchanged)", "call": { "sampling_rate": 16000, "padding": "longest", "truncation": false }, "valid_mel_frames": "sum(input_features_mask)", "mel_frame_rate_hz": 100 }, "frame_rate_hz": 25, "subsampling": 4, "lookahead_ms": 160, "encoder_lookahead_ms": 0, "ctc_head": { "params": 13283585, "future_frames": 4, "causal_conv": true }, "vocab": { "tokenizer": "spm_unigram256.model", "type": "sentencepiece-unigram", "size": 256, "blank_id": 256, "num_classes": 257 }, "decoder": { "library": "ctc-beam-decoder", "library_version": "0.2.0", "lm": "sp256_6gram.bin", "lm_order": 6, "piece_word_prefix": "t", "alpha": 0.8, "beta": 1.0, "beam": 32, "units": "piece", "beam_prune_logp": -10.0, "token_min_logp": -5.0, "unk_score_offset": -10.0, "lm_score_boundary": true, "prune_history": true }, "long_audio": { "max_mel_frames": 3500, "left_context_s": 2.0, "cut": "quietest point in the last 10 s (code repo: coreml/transcribe.py)" }, "text_normalization": "lowercase, collapse whitespace" }