al8n commited on
Commit
3db6998
·
verified ·
1 Parent(s): 4536966

fp16-safe conversions: segmentation fused-logsumexp tail, wespeaker guards to 0x1p-24

Browse files
CHECKSUMS.sha256 ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 ./CHECKSUMS.sha256
2
+ f283c01fa863188733c33c6fddac4c5dca42ca7cb22580918e1bc55877897e69 ./pyannote_segmentation.mlmodelc/analytics/coremldata.bin
3
+ e75fc0ac9641de87e3514369455c8c8a65b00aae339817b20642f115d5d8861e ./pyannote_segmentation.mlmodelc/coremldata.bin
4
+ 2926b811344e40ab6ce5406354bf5aaac35a297d0e67e3c0d3f6dd766e9f5f8f ./pyannote_segmentation.mlmodelc/metadata.json
5
+ ded0d1ee11d77976b5c706ce667d0c8cb49977d3fe4367cccbd7b582bdb86dec ./pyannote_segmentation.mlmodelc/model.mil
6
+ 0266f4ad4d843ecf31ef9220ad6b80616b3ec64a4404b64f3ea0371554e236ec ./pyannote_segmentation.mlmodelc/weights/weight.bin
7
+ 45349a79cc3d2acdde0699d6c24a2d953e2f33600e35f2e3a3696a76ca0aa5d2 ./pyannote_segmentation.mlpackage/Data/com.apple.CoreML/model.mlmodel
8
+ 0266f4ad4d843ecf31ef9220ad6b80616b3ec64a4404b64f3ea0371554e236ec ./pyannote_segmentation.mlpackage/Data/com.apple.CoreML/weights/weight.bin
9
+ d598581336168c03f0e782851d05f5f8405d5bdaaa7ea662ec4b9b4445a66f40 ./pyannote_segmentation.mlpackage/Manifest.json
10
+ 4d7649edc0b071fecf4778bf533de05d6eadd5ade828179d30beaadb31258798 ./wespeaker_int8.mlmodelc/analytics/coremldata.bin
11
+ 119a9f64487e7a6617b26b1c4420c48f4cf60397694ea24c6c3c53f6eaf88c3d ./wespeaker_int8.mlmodelc/coremldata.bin
12
+ b96c1cdd968230b5a79b75749d2f585779e2ca59ab8249f72a18a44e93471d0e ./wespeaker_int8.mlmodelc/metadata.json
13
+ 7668b5eb56fbb3ba81c36a1a04aeadf0faa5f3d0d59ede28975909094ad22de0 ./wespeaker_int8.mlmodelc/model.mil
14
+ fb7310f849dd3db544fb016b0073d773e5293a26763a980a06d0834526f3a848 ./wespeaker_int8.mlmodelc/weights/weight.bin
15
+ 5f8f14e1a044267294b1f554100cf9e3784e477ef575297b66f73d6251cc4317 ./wespeaker_int8.mlpackage/Data/com.apple.CoreML/model.mlmodel
16
+ fb7310f849dd3db544fb016b0073d773e5293a26763a980a06d0834526f3a848 ./wespeaker_int8.mlpackage/Data/com.apple.CoreML/weights/weight.bin
17
+ d0435814f5e227f1f07624718e2d151ab7f81da1b0750331549bc5605f322c39 ./wespeaker_int8.mlpackage/Manifest.json
18
+ 30528b97b29e0f0221b99c1c3456484f3123a68214b777f324a8b85ef5634c9a ./wespeaker.mlmodelc/analytics/coremldata.bin
19
+ 4a2840e7abc9aafa02ca23f6a3cb37fd8c8d9a95887336dae3d1e09f6ba7f9f6 ./wespeaker.mlmodelc/coremldata.bin
20
+ 330d8018e32a2c056ace110b3079aafacaaef37f70eae6cdad7296e85e9687c1 ./wespeaker.mlmodelc/metadata.json
21
+ cff0cfe914078e9336754a9b38a68c2cdd88ca7b6bf97568ad551ab03ae1b666 ./wespeaker.mlmodelc/model.mil
22
+ 680837ec172d67c3197bba93800e1623eebfd35c3b17011802f5f98b8026a0aa ./wespeaker.mlmodelc/weights/weight.bin
23
+ d6c4bb8b77eec2118f81506cdc18c75923f1ba6e6961d1ce51b0eeb73e3a592c ./wespeaker.mlpackage/Data/com.apple.CoreML/model.mlmodel
24
+ 680837ec172d67c3197bba93800e1623eebfd35c3b17011802f5f98b8026a0aa ./wespeaker.mlpackage/Data/com.apple.CoreML/weights/weight.bin
25
+ a16e2bae11d61c54e2a7c400bfee151e1244233064f449ee28caf7ab6252b933 ./wespeaker.mlpackage/Manifest.json
README.md ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: other
3
+ license_name: mixed-upstream
4
+ license_link: https://github.com/pyannote/pyannote-audio
5
+ tags:
6
+ - coreml
7
+ - speaker-diarization
8
+ - pyannote
9
+ - wespeaker
10
+ - apple-neural-engine
11
+ library_name: coremlit
12
+ ---
13
+
14
+ # speakerkit-coreml — fp16-safe CoreML conversions for speaker diarization
15
+
16
+ CoreML conversions of the pyannote community-1 diarization pipeline's neural components,
17
+ re-converted with **fp16-survivable numerical guards** so they are correct on the Apple
18
+ Neural Engine and GPU — not just CPU.
19
+
20
+ Consumed by the `speakerkit` crate of the [coremlit](https://github.com/findit-studio/coremlit)
21
+ workspace (Rust, sync, sans-I/O), feeding the `dia` diarization pipeline's clustering.
22
+
23
+ ## Why these conversions exist
24
+
25
+ Stock conversions of these models carry numerical guard epsilons **below fp16's smallest
26
+ subnormal (`2^-24`)**. When a graph runs on the ANE (which computes in fp16 regardless of
27
+ the declared dtype), those guards round to zero:
28
+
29
+ - the segmentation model's `softmax → log(eps≈0)` tail saturates `log(0)` to **≈ −45440**,
30
+ which in the downstream pipeline collapsed an 8-speaker recording to 5 detected speakers
31
+ (16.6% DER, 100% confusion) while the ONNX reference was frame-perfect;
32
+ - the embedder's pooling `real_div` guards (`1e-8`) vanish the same way.
33
+
34
+ Even a *naive re-export* reproduces the defect: `torch.log_softmax` still lowers to the
35
+ decomposed `softmax → log(eps=0)` under coremltools 9.0. These conversions use an
36
+ explicitly **fused `x − logsumexp(x)`** tail and raise every guard constant to `0x1p-24`.
37
+
38
+ ## Contents
39
+
40
+ | artifact | form | what it is |
41
+ |---|---|---|
42
+ | `pyannote_segmentation.{mlpackage,mlmodelc}` | fp16 | pyannote **segmentation-3.0** (PyanNet), fused log-probability tail |
43
+ | `wespeaker.{mlpackage,mlmodelc}` | fp32 weights | **WeSpeaker ResNet34-LM** speaker embedder, pooling guards raised to `0x1p-24` (otherwise bit-identical numerics to the stock conversion) |
44
+ | `wespeaker_int8.{mlpackage,mlmodelc}` | 8-bit palettized | same fixed embedder, k-means per-tensor palettization (~3.7× smaller, the production default) |
45
+
46
+ `.mlpackage` is the canonical distributable; `.mlmodelc` is the compiled form the test
47
+ suite consumes directly. `CHECKSUMS.sha256` covers every file.
48
+
49
+ ## Verification (summary)
50
+
51
+ - Every graph passes a **MIL-level fp16-guard audit** (every guard's *effective floor*
52
+ ≥ `2^-24`, constants followed through `cast`, unresolvable guards fail the audit).
53
+ - Segmentation: worst per-window delta vs the ONNX oracle dropped from **45,422 → 0.07**
54
+ (ANE), argmax agreement 100%; the 8-speaker collapse is fixed at model level.
55
+ - Embedder: All-vs-CPU cosine 1.0 on real speech; int8 clusters identically to fp32 on the
56
+ multi-speaker parity corpus (speaker counts never differ).
57
+ - Conversion toolchain pinned in the recipe: coremltools 9.0, torch 2.5.1, onnx 1.22.0,
58
+ python 3.11.15.
59
+
60
+ ## Upstream provenance & licensing
61
+
62
+ | component | upstream | license |
63
+ |---|---|---|
64
+ | segmentation | [pyannote/segmentation-3.0](https://huggingface.co/pyannote/segmentation-3.0) (weights via its ONNX export) | MIT (upstream repo is access-gated; the MIT license permits redistribution with attribution — please also respect pyannote's usage conditions and cite their papers) |
65
+ | embedder | WeSpeaker ResNet34-LM (voxceleb) | Apache-2.0 (WeSpeaker project) |
66
+
67
+ These are *derivative conversions*: same weights, corrected graph numerics. If you are the
68
+ upstream author of either model and want changes to this redistribution, open a discussion.
pyannote_segmentation.mlmodelc/analytics/coremldata.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f283c01fa863188733c33c6fddac4c5dca42ca7cb22580918e1bc55877897e69
3
+ size 243
pyannote_segmentation.mlmodelc/coremldata.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e75fc0ac9641de87e3514369455c8c8a65b00aae339817b20642f115d5d8861e
3
+ size 518
pyannote_segmentation.mlmodelc/metadata.json ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "metadataOutputVersion" : "3.0",
4
+ "shortDescription" : "pyannote\/segmentation-3.0, epsilon-safe (reduce_log_sum_exp->sub tail)",
5
+ "outputSchema" : [
6
+ {
7
+ "hasShapeFlexibility" : "0",
8
+ "isOptional" : "0",
9
+ "dataType" : "Float32",
10
+ "formattedType" : "MultiArray (Float32 1 × 589 × 7)",
11
+ "shortDescription" : "",
12
+ "shape" : "[1, 589, 7]",
13
+ "name" : "segments",
14
+ "type" : "MultiArray"
15
+ }
16
+ ],
17
+ "storagePrecision" : "Mixed (Float16, Float32)",
18
+ "modelParameters" : [
19
+
20
+ ],
21
+ "author" : "Phase-A reconversion: segmentation-3.0.onnx, stable fused log-softmax",
22
+ "specificationVersion" : 6,
23
+ "mlProgramOperationTypeHistogram" : {
24
+ "Abs" : 1,
25
+ "InstanceNorm" : 4,
26
+ "Cast" : 4,
27
+ "Conv" : 3,
28
+ "MaxPool" : 3,
29
+ "Lstm" : 4,
30
+ "Transpose" : 2,
31
+ "Linear" : 3,
32
+ "ReduceLogSumExp" : 1,
33
+ "Sub" : 1,
34
+ "LeakyRelu" : 5
35
+ },
36
+ "computePrecision" : "Mixed (Float16, Float32, Int32)",
37
+ "isUpdatable" : "0",
38
+ "stateSchema" : [
39
+
40
+ ],
41
+ "availability" : {
42
+ "macOS" : "12.0",
43
+ "tvOS" : "15.0",
44
+ "visionOS" : "1.0",
45
+ "watchOS" : "8.0",
46
+ "iOS" : "15.0",
47
+ "macCatalyst" : "15.0"
48
+ },
49
+ "modelType" : {
50
+ "name" : "MLModelType_mlProgram"
51
+ },
52
+ "inputSchema" : [
53
+ {
54
+ "hasShapeFlexibility" : "0",
55
+ "isOptional" : "0",
56
+ "dataType" : "Float32",
57
+ "formattedType" : "MultiArray (Float32 1 × 1 × 160000)",
58
+ "shortDescription" : "",
59
+ "shape" : "[1, 1, 160000]",
60
+ "name" : "audio",
61
+ "type" : "MultiArray"
62
+ }
63
+ ],
64
+ "userDefinedMetadata" : {
65
+ "com.github.apple.coremltools.conversion_date" : "2026-07-16",
66
+ "com.github.apple.coremltools.source" : "torch==2.5.1",
67
+ "com.github.apple.coremltools.version" : "9.0",
68
+ "com.github.apple.coremltools.source_dialect" : "TorchScript"
69
+ },
70
+ "generatedClassName" : "pyannote_segmentation",
71
+ "method" : "predict"
72
+ }
73
+ ]
pyannote_segmentation.mlmodelc/model.mil ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ program(1.0)
2
+ [buildInfo = dict<tensor<string, []>, tensor<string, []>>({{"coremlc-component-MIL", "3520.4.1"}, {"coremlc-version", "3520.5.1"}, {"coremltools-component-torch", "2.5.1"}, {"coremltools-source-dialect", "TorchScript"}, {"coremltools-version", "9.0"}})]
3
+ {
4
+ func main<ios15>(tensor<fp32, [1, 1, 160000]> audio) {
5
+ tensor<string, []> audio_to_fp16_dtype_0 = const()[name = tensor<string, []>("audio_to_fp16_dtype_0"), val = tensor<string, []>("fp16")];
6
+ tensor<fp16, [1]> wav_norm1d_weight_to_fp16 = const()[name = tensor<string, []>("wav_norm1d_weight_to_fp16"), val = tensor<fp16, [1]>([0x1.44p-7])];
7
+ tensor<fp16, [1]> wav_norm1d_bias_to_fp16 = const()[name = tensor<string, []>("wav_norm1d_bias_to_fp16"), val = tensor<fp16, [1]>([0x1.734p-5])];
8
+ tensor<fp16, []> var_20_to_fp16 = const()[name = tensor<string, []>("op_20_to_fp16"), val = tensor<fp16, []>(0x1.5p-17)];
9
+ tensor<fp16, [1, 1, 160000]> audio_to_fp16 = cast(dtype = audio_to_fp16_dtype_0, x = audio)[name = tensor<string, []>("cast_3")];
10
+ tensor<fp16, [1, 1, 160000]> input_1_cast_fp16 = instance_norm(beta = wav_norm1d_bias_to_fp16, epsilon = var_20_to_fp16, gamma = wav_norm1d_weight_to_fp16, x = audio_to_fp16)[name = tensor<string, []>("input_1_cast_fp16")];
11
+ tensor<string, []> var_38_pad_type_0 = const()[name = tensor<string, []>("op_38_pad_type_0"), val = tensor<string, []>("valid")];
12
+ tensor<int32, [1]> var_38_strides_0 = const()[name = tensor<string, []>("op_38_strides_0"), val = tensor<int32, [1]>([10])];
13
+ tensor<int32, [2]> var_38_pad_0 = const()[name = tensor<string, []>("op_38_pad_0"), val = tensor<int32, [2]>([0, 0])];
14
+ tensor<int32, [1]> var_38_dilations_0 = const()[name = tensor<string, []>("op_38_dilations_0"), val = tensor<int32, [1]>([1])];
15
+ tensor<int32, []> var_38_groups_0 = const()[name = tensor<string, []>("op_38_groups_0"), val = tensor<int32, []>(1)];
16
+ tensor<fp16, [80, 1, 251]> conv0_weight_to_fp16 = const()[name = tensor<string, []>("conv0_weight_to_fp16"), val = tensor<fp16, [80, 1, 251]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(64)))];
17
+ tensor<fp16, [1, 80, 15975]> var_38_cast_fp16 = conv(dilations = var_38_dilations_0, groups = var_38_groups_0, pad = var_38_pad_0, pad_type = var_38_pad_type_0, strides = var_38_strides_0, weight = conv0_weight_to_fp16, x = input_1_cast_fp16)[name = tensor<string, []>("op_38_cast_fp16")];
18
+ tensor<fp16, [1, 80, 15975]> input_3_cast_fp16 = abs(x = var_38_cast_fp16)[name = tensor<string, []>("input_3_cast_fp16")];
19
+ tensor<int32, [1]> var_44 = const()[name = tensor<string, []>("op_44"), val = tensor<int32, [1]>([3])];
20
+ tensor<int32, [1]> var_45 = const()[name = tensor<string, []>("op_45"), val = tensor<int32, [1]>([3])];
21
+ tensor<string, []> input_5_pad_type_0 = const()[name = tensor<string, []>("input_5_pad_type_0"), val = tensor<string, []>("custom")];
22
+ tensor<int32, [2]> input_5_pad_0 = const()[name = tensor<string, []>("input_5_pad_0"), val = tensor<int32, [2]>([0, 0])];
23
+ tensor<bool, []> input_5_ceil_mode_0 = const()[name = tensor<string, []>("input_5_ceil_mode_0"), val = tensor<bool, []>(false)];
24
+ tensor<fp16, [1, 80, 5325]> input_5_cast_fp16 = max_pool(ceil_mode = input_5_ceil_mode_0, kernel_sizes = var_44, pad = input_5_pad_0, pad_type = input_5_pad_type_0, strides = var_45, x = input_3_cast_fp16)[name = tensor<string, []>("input_5_cast_fp16")];
25
+ tensor<fp16, [80]> norm0_weight_to_fp16 = const()[name = tensor<string, []>("norm0_weight_to_fp16"), val = tensor<fp16, [80]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(40320)))];
26
+ tensor<fp16, [80]> norm0_bias_to_fp16 = const()[name = tensor<string, []>("norm0_bias_to_fp16"), val = tensor<fp16, [80]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(40576)))];
27
+ tensor<fp16, []> var_49_to_fp16 = const()[name = tensor<string, []>("op_49_to_fp16"), val = tensor<fp16, []>(0x1.5p-17)];
28
+ tensor<fp16, [1, 80, 5325]> input_7_cast_fp16 = instance_norm(beta = norm0_bias_to_fp16, epsilon = var_49_to_fp16, gamma = norm0_weight_to_fp16, x = input_5_cast_fp16)[name = tensor<string, []>("input_7_cast_fp16")];
29
+ tensor<fp16, []> var_56_to_fp16 = const()[name = tensor<string, []>("op_56_to_fp16"), val = tensor<fp16, []>(0x1.47cp-7)];
30
+ tensor<fp16, [1, 80, 5325]> input_9_cast_fp16 = leaky_relu(alpha = var_56_to_fp16, x = input_7_cast_fp16)[name = tensor<string, []>("input_9_cast_fp16")];
31
+ tensor<string, []> input_11_pad_type_0 = const()[name = tensor<string, []>("input_11_pad_type_0"), val = tensor<string, []>("valid")];
32
+ tensor<int32, [1]> input_11_strides_0 = const()[name = tensor<string, []>("input_11_strides_0"), val = tensor<int32, [1]>([1])];
33
+ tensor<int32, [2]> input_11_pad_0 = const()[name = tensor<string, []>("input_11_pad_0"), val = tensor<int32, [2]>([0, 0])];
34
+ tensor<int32, [1]> input_11_dilations_0 = const()[name = tensor<string, []>("input_11_dilations_0"), val = tensor<int32, [1]>([1])];
35
+ tensor<int32, []> input_11_groups_0 = const()[name = tensor<string, []>("input_11_groups_0"), val = tensor<int32, []>(1)];
36
+ tensor<fp16, [60, 80, 5]> conv1_weight_to_fp16 = const()[name = tensor<string, []>("conv1_weight_to_fp16"), val = tensor<fp16, [60, 80, 5]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(40832)))];
37
+ tensor<fp16, [60]> conv1_bias_to_fp16 = const()[name = tensor<string, []>("conv1_bias_to_fp16"), val = tensor<fp16, [60]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(88896)))];
38
+ tensor<fp16, [1, 60, 5321]> input_11_cast_fp16 = conv(bias = conv1_bias_to_fp16, dilations = input_11_dilations_0, groups = input_11_groups_0, pad = input_11_pad_0, pad_type = input_11_pad_type_0, strides = input_11_strides_0, weight = conv1_weight_to_fp16, x = input_9_cast_fp16)[name = tensor<string, []>("input_11_cast_fp16")];
39
+ tensor<int32, [1]> var_73 = const()[name = tensor<string, []>("op_73"), val = tensor<int32, [1]>([3])];
40
+ tensor<int32, [1]> var_74 = const()[name = tensor<string, []>("op_74"), val = tensor<int32, [1]>([3])];
41
+ tensor<string, []> input_13_pad_type_0 = const()[name = tensor<string, []>("input_13_pad_type_0"), val = tensor<string, []>("custom")];
42
+ tensor<int32, [2]> input_13_pad_0 = const()[name = tensor<string, []>("input_13_pad_0"), val = tensor<int32, [2]>([0, 0])];
43
+ tensor<bool, []> input_13_ceil_mode_0 = const()[name = tensor<string, []>("input_13_ceil_mode_0"), val = tensor<bool, []>(false)];
44
+ tensor<fp16, [1, 60, 1773]> input_13_cast_fp16 = max_pool(ceil_mode = input_13_ceil_mode_0, kernel_sizes = var_73, pad = input_13_pad_0, pad_type = input_13_pad_type_0, strides = var_74, x = input_11_cast_fp16)[name = tensor<string, []>("input_13_cast_fp16")];
45
+ tensor<fp16, [60]> norm1_weight_to_fp16 = const()[name = tensor<string, []>("norm1_weight_to_fp16"), val = tensor<fp16, [60]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(89088)))];
46
+ tensor<fp16, [60]> norm1_bias_to_fp16 = const()[name = tensor<string, []>("norm1_bias_to_fp16"), val = tensor<fp16, [60]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(89280)))];
47
+ tensor<fp16, []> var_78_to_fp16 = const()[name = tensor<string, []>("op_78_to_fp16"), val = tensor<fp16, []>(0x1.5p-17)];
48
+ tensor<fp16, [1, 60, 1773]> input_15_cast_fp16 = instance_norm(beta = norm1_bias_to_fp16, epsilon = var_78_to_fp16, gamma = norm1_weight_to_fp16, x = input_13_cast_fp16)[name = tensor<string, []>("input_15_cast_fp16")];
49
+ tensor<fp16, []> var_85_to_fp16 = const()[name = tensor<string, []>("op_85_to_fp16"), val = tensor<fp16, []>(0x1.47cp-7)];
50
+ tensor<fp16, [1, 60, 1773]> input_17_cast_fp16 = leaky_relu(alpha = var_85_to_fp16, x = input_15_cast_fp16)[name = tensor<string, []>("input_17_cast_fp16")];
51
+ tensor<string, []> input_19_pad_type_0 = const()[name = tensor<string, []>("input_19_pad_type_0"), val = tensor<string, []>("valid")];
52
+ tensor<int32, [1]> input_19_strides_0 = const()[name = tensor<string, []>("input_19_strides_0"), val = tensor<int32, [1]>([1])];
53
+ tensor<int32, [2]> input_19_pad_0 = const()[name = tensor<string, []>("input_19_pad_0"), val = tensor<int32, [2]>([0, 0])];
54
+ tensor<int32, [1]> input_19_dilations_0 = const()[name = tensor<string, []>("input_19_dilations_0"), val = tensor<int32, [1]>([1])];
55
+ tensor<int32, []> input_19_groups_0 = const()[name = tensor<string, []>("input_19_groups_0"), val = tensor<int32, []>(1)];
56
+ tensor<fp16, [60, 60, 5]> conv2_weight_to_fp16 = const()[name = tensor<string, []>("conv2_weight_to_fp16"), val = tensor<fp16, [60, 60, 5]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(89472)))];
57
+ tensor<fp16, [60]> conv2_bias_to_fp16 = const()[name = tensor<string, []>("conv2_bias_to_fp16"), val = tensor<fp16, [60]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(125568)))];
58
+ tensor<fp16, [1, 60, 1769]> input_19_cast_fp16 = conv(bias = conv2_bias_to_fp16, dilations = input_19_dilations_0, groups = input_19_groups_0, pad = input_19_pad_0, pad_type = input_19_pad_type_0, strides = input_19_strides_0, weight = conv2_weight_to_fp16, x = input_17_cast_fp16)[name = tensor<string, []>("input_19_cast_fp16")];
59
+ tensor<int32, [1]> var_102 = const()[name = tensor<string, []>("op_102"), val = tensor<int32, [1]>([3])];
60
+ tensor<int32, [1]> var_103 = const()[name = tensor<string, []>("op_103"), val = tensor<int32, [1]>([3])];
61
+ tensor<string, []> input_21_pad_type_0 = const()[name = tensor<string, []>("input_21_pad_type_0"), val = tensor<string, []>("custom")];
62
+ tensor<int32, [2]> input_21_pad_0 = const()[name = tensor<string, []>("input_21_pad_0"), val = tensor<int32, [2]>([0, 0])];
63
+ tensor<bool, []> input_21_ceil_mode_0 = const()[name = tensor<string, []>("input_21_ceil_mode_0"), val = tensor<bool, []>(false)];
64
+ tensor<fp16, [1, 60, 589]> input_21_cast_fp16 = max_pool(ceil_mode = input_21_ceil_mode_0, kernel_sizes = var_102, pad = input_21_pad_0, pad_type = input_21_pad_type_0, strides = var_103, x = input_19_cast_fp16)[name = tensor<string, []>("input_21_cast_fp16")];
65
+ tensor<fp16, [60]> norm2_weight_to_fp16 = const()[name = tensor<string, []>("norm2_weight_to_fp16"), val = tensor<fp16, [60]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(125760)))];
66
+ tensor<fp16, [60]> norm2_bias_to_fp16 = const()[name = tensor<string, []>("norm2_bias_to_fp16"), val = tensor<fp16, [60]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(125952)))];
67
+ tensor<fp16, []> var_107_to_fp16 = const()[name = tensor<string, []>("op_107_to_fp16"), val = tensor<fp16, []>(0x1.5p-17)];
68
+ tensor<fp16, [1, 60, 589]> input_23_cast_fp16 = instance_norm(beta = norm2_bias_to_fp16, epsilon = var_107_to_fp16, gamma = norm2_weight_to_fp16, x = input_21_cast_fp16)[name = tensor<string, []>("input_23_cast_fp16")];
69
+ tensor<fp16, []> var_114_to_fp16 = const()[name = tensor<string, []>("op_114_to_fp16"), val = tensor<fp16, []>(0x1.47cp-7)];
70
+ tensor<fp16, [1, 60, 589]> x_3_cast_fp16 = leaky_relu(alpha = var_114_to_fp16, x = input_23_cast_fp16)[name = tensor<string, []>("x_3_cast_fp16")];
71
+ tensor<int32, [3]> transpose_0_perm_0 = const()[name = tensor<string, []>("transpose_0_perm_0"), val = tensor<int32, [3]>([2, 0, 1])];
72
+ tensor<string, []> transpose_0_cast_fp16_to_fp32_dtype_0 = const()[name = tensor<string, []>("transpose_0_cast_fp16_to_fp32_dtype_0"), val = tensor<string, []>("fp32")];
73
+ tensor<fp32, [512]> add_0 = const()[name = tensor<string, []>("add_0"), val = tensor<fp32, [512]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(126144)))];
74
+ tensor<fp32, [512]> add_1 = const()[name = tensor<string, []>("add_1"), val = tensor<fp32, [512]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(128256)))];
75
+ tensor<fp32, [512, 60]> concat_4 = const()[name = tensor<string, []>("concat_4"), val = tensor<fp32, [512, 60]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(130368)))];
76
+ tensor<fp32, [512, 128]> concat_5 = const()[name = tensor<string, []>("concat_5"), val = tensor<fp32, [512, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(253312)))];
77
+ tensor<fp32, [512, 60]> concat_6 = const()[name = tensor<string, []>("concat_6"), val = tensor<fp32, [512, 60]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(515520)))];
78
+ tensor<fp32, [512, 128]> concat_7 = const()[name = tensor<string, []>("concat_7"), val = tensor<fp32, [512, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(638464)))];
79
+ tensor<fp32, [1, 256]> input_27_batch_first_lstm_h0_reshaped = const()[name = tensor<string, []>("input_27_batch_first_lstm_h0_reshaped"), val = tensor<fp32, [1, 256]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(900672)))];
80
+ tensor<string, []> input_27_batch_first_direction_0 = const()[name = tensor<string, []>("input_27_batch_first_direction_0"), val = tensor<string, []>("bidirectional")];
81
+ tensor<bool, []> input_27_batch_first_output_sequence_0 = const()[name = tensor<string, []>("input_27_batch_first_output_sequence_0"), val = tensor<bool, []>(true)];
82
+ tensor<string, []> input_27_batch_first_recurrent_activation_0 = const()[name = tensor<string, []>("input_27_batch_first_recurrent_activation_0"), val = tensor<string, []>("sigmoid")];
83
+ tensor<string, []> input_27_batch_first_cell_activation_0 = const()[name = tensor<string, []>("input_27_batch_first_cell_activation_0"), val = tensor<string, []>("tanh")];
84
+ tensor<string, []> input_27_batch_first_activation_0 = const()[name = tensor<string, []>("input_27_batch_first_activation_0"), val = tensor<string, []>("tanh")];
85
+ tensor<fp16, [589, 1, 60]> transpose_0_cast_fp16 = transpose(perm = transpose_0_perm_0, x = x_3_cast_fp16)[name = tensor<string, []>("transpose_2")];
86
+ tensor<fp32, [589, 1, 60]> transpose_0_cast_fp16_to_fp32 = cast(dtype = transpose_0_cast_fp16_to_fp32_dtype_0, x = transpose_0_cast_fp16)[name = tensor<string, []>("cast_2")];
87
+ tensor<fp32, [589, 1, 256]> input_27_batch_first_0, tensor<fp32, [1, 256]> input_27_batch_first_1, tensor<fp32, [1, 256]> input_27_batch_first_2 = lstm(activation = input_27_batch_first_activation_0, bias = add_0, bias_back = add_1, cell_activation = input_27_batch_first_cell_activation_0, direction = input_27_batch_first_direction_0, initial_c = input_27_batch_first_lstm_h0_reshaped, initial_h = input_27_batch_first_lstm_h0_reshaped, output_sequence = input_27_batch_first_output_sequence_0, recurrent_activation = input_27_batch_first_recurrent_activation_0, weight_hh = concat_5, weight_hh_back = concat_7, weight_ih = concat_4, weight_ih_back = concat_6, x = transpose_0_cast_fp16_to_fp32)[name = tensor<string, []>("input_27_batch_first")];
88
+ tensor<fp32, [512]> add_2 = const()[name = tensor<string, []>("add_2"), val = tensor<fp32, [512]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(901760)))];
89
+ tensor<fp32, [512]> add_3 = const()[name = tensor<string, []>("add_3"), val = tensor<fp32, [512]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(903872)))];
90
+ tensor<fp32, [512, 256]> concat_14 = const()[name = tensor<string, []>("concat_14"), val = tensor<fp32, [512, 256]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(905984)))];
91
+ tensor<fp32, [512, 128]> concat_15 = const()[name = tensor<string, []>("concat_15"), val = tensor<fp32, [512, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(1430336)))];
92
+ tensor<fp32, [512, 256]> concat_16 = const()[name = tensor<string, []>("concat_16"), val = tensor<fp32, [512, 256]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(1692544)))];
93
+ tensor<fp32, [512, 128]> concat_17 = const()[name = tensor<string, []>("concat_17"), val = tensor<fp32, [512, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(2216896)))];
94
+ tensor<string, []> input_29_batch_first_direction_0 = const()[name = tensor<string, []>("input_29_batch_first_direction_0"), val = tensor<string, []>("bidirectional")];
95
+ tensor<bool, []> input_29_batch_first_output_sequence_0 = const()[name = tensor<string, []>("input_29_batch_first_output_sequence_0"), val = tensor<bool, []>(true)];
96
+ tensor<string, []> input_29_batch_first_recurrent_activation_0 = const()[name = tensor<string, []>("input_29_batch_first_recurrent_activation_0"), val = tensor<string, []>("sigmoid")];
97
+ tensor<string, []> input_29_batch_first_cell_activation_0 = const()[name = tensor<string, []>("input_29_batch_first_cell_activation_0"), val = tensor<string, []>("tanh")];
98
+ tensor<string, []> input_29_batch_first_activation_0 = const()[name = tensor<string, []>("input_29_batch_first_activation_0"), val = tensor<string, []>("tanh")];
99
+ tensor<fp32, [589, 1, 256]> input_29_batch_first_0, tensor<fp32, [1, 256]> input_29_batch_first_1, tensor<fp32, [1, 256]> input_29_batch_first_2 = lstm(activation = input_29_batch_first_activation_0, bias = add_2, bias_back = add_3, cell_activation = input_29_batch_first_cell_activation_0, direction = input_29_batch_first_direction_0, initial_c = input_27_batch_first_lstm_h0_reshaped, initial_h = input_27_batch_first_lstm_h0_reshaped, output_sequence = input_29_batch_first_output_sequence_0, recurrent_activation = input_29_batch_first_recurrent_activation_0, weight_hh = concat_15, weight_hh_back = concat_17, weight_ih = concat_14, weight_ih_back = concat_16, x = input_27_batch_first_0)[name = tensor<string, []>("input_29_batch_first")];
100
+ tensor<fp32, [512]> add_4 = const()[name = tensor<string, []>("add_4"), val = tensor<fp32, [512]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(2479104)))];
101
+ tensor<fp32, [512]> add_5 = const()[name = tensor<string, []>("add_5"), val = tensor<fp32, [512]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(2481216)))];
102
+ tensor<fp32, [512, 256]> concat_24 = const()[name = tensor<string, []>("concat_24"), val = tensor<fp32, [512, 256]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(2483328)))];
103
+ tensor<fp32, [512, 128]> concat_25 = const()[name = tensor<string, []>("concat_25"), val = tensor<fp32, [512, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(3007680)))];
104
+ tensor<fp32, [512, 256]> concat_26 = const()[name = tensor<string, []>("concat_26"), val = tensor<fp32, [512, 256]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(3269888)))];
105
+ tensor<fp32, [512, 128]> concat_27 = const()[name = tensor<string, []>("concat_27"), val = tensor<fp32, [512, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(3794240)))];
106
+ tensor<string, []> input_31_batch_first_direction_0 = const()[name = tensor<string, []>("input_31_batch_first_direction_0"), val = tensor<string, []>("bidirectional")];
107
+ tensor<bool, []> input_31_batch_first_output_sequence_0 = const()[name = tensor<string, []>("input_31_batch_first_output_sequence_0"), val = tensor<bool, []>(true)];
108
+ tensor<string, []> input_31_batch_first_recurrent_activation_0 = const()[name = tensor<string, []>("input_31_batch_first_recurrent_activation_0"), val = tensor<string, []>("sigmoid")];
109
+ tensor<string, []> input_31_batch_first_cell_activation_0 = const()[name = tensor<string, []>("input_31_batch_first_cell_activation_0"), val = tensor<string, []>("tanh")];
110
+ tensor<string, []> input_31_batch_first_activation_0 = const()[name = tensor<string, []>("input_31_batch_first_activation_0"), val = tensor<string, []>("tanh")];
111
+ tensor<fp32, [589, 1, 256]> input_31_batch_first_0, tensor<fp32, [1, 256]> input_31_batch_first_1, tensor<fp32, [1, 256]> input_31_batch_first_2 = lstm(activation = input_31_batch_first_activation_0, bias = add_4, bias_back = add_5, cell_activation = input_31_batch_first_cell_activation_0, direction = input_31_batch_first_direction_0, initial_c = input_27_batch_first_lstm_h0_reshaped, initial_h = input_27_batch_first_lstm_h0_reshaped, output_sequence = input_31_batch_first_output_sequence_0, recurrent_activation = input_31_batch_first_recurrent_activation_0, weight_hh = concat_25, weight_hh_back = concat_27, weight_ih = concat_24, weight_ih_back = concat_26, x = input_29_batch_first_0)[name = tensor<string, []>("input_31_batch_first")];
112
+ tensor<fp32, [512]> add_6 = const()[name = tensor<string, []>("add_6"), val = tensor<fp32, [512]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(4056448)))];
113
+ tensor<fp32, [512]> add_7 = const()[name = tensor<string, []>("add_7"), val = tensor<fp32, [512]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(4058560)))];
114
+ tensor<fp32, [512, 256]> concat_34 = const()[name = tensor<string, []>("concat_34"), val = tensor<fp32, [512, 256]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(4060672)))];
115
+ tensor<fp32, [512, 128]> concat_35 = const()[name = tensor<string, []>("concat_35"), val = tensor<fp32, [512, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(4585024)))];
116
+ tensor<fp32, [512, 256]> concat_36 = const()[name = tensor<string, []>("concat_36"), val = tensor<fp32, [512, 256]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(4847232)))];
117
+ tensor<fp32, [512, 128]> concat_37 = const()[name = tensor<string, []>("concat_37"), val = tensor<fp32, [512, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(5371584)))];
118
+ tensor<string, []> input_33_batch_first_direction_0 = const()[name = tensor<string, []>("input_33_batch_first_direction_0"), val = tensor<string, []>("bidirectional")];
119
+ tensor<bool, []> input_33_batch_first_output_sequence_0 = const()[name = tensor<string, []>("input_33_batch_first_output_sequence_0"), val = tensor<bool, []>(true)];
120
+ tensor<string, []> input_33_batch_first_recurrent_activation_0 = const()[name = tensor<string, []>("input_33_batch_first_recurrent_activation_0"), val = tensor<string, []>("sigmoid")];
121
+ tensor<string, []> input_33_batch_first_cell_activation_0 = const()[name = tensor<string, []>("input_33_batch_first_cell_activation_0"), val = tensor<string, []>("tanh")];
122
+ tensor<string, []> input_33_batch_first_activation_0 = const()[name = tensor<string, []>("input_33_batch_first_activation_0"), val = tensor<string, []>("tanh")];
123
+ tensor<fp32, [589, 1, 256]> input_33_batch_first_0, tensor<fp32, [1, 256]> input_33_batch_first_1, tensor<fp32, [1, 256]> input_33_batch_first_2 = lstm(activation = input_33_batch_first_activation_0, bias = add_6, bias_back = add_7, cell_activation = input_33_batch_first_cell_activation_0, direction = input_33_batch_first_direction_0, initial_c = input_27_batch_first_lstm_h0_reshaped, initial_h = input_27_batch_first_lstm_h0_reshaped, output_sequence = input_33_batch_first_output_sequence_0, recurrent_activation = input_33_batch_first_recurrent_activation_0, weight_hh = concat_35, weight_hh_back = concat_37, weight_ih = concat_34, weight_ih_back = concat_36, x = input_31_batch_first_0)[name = tensor<string, []>("input_33_batch_first")];
124
+ tensor<int32, [3]> input_33_perm_0 = const()[name = tensor<string, []>("input_33_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
125
+ tensor<string, []> input_33_batch_first_0_to_fp16_dtype_0 = const()[name = tensor<string, []>("input_33_batch_first_0_to_fp16_dtype_0"), val = tensor<string, []>("fp16")];
126
+ tensor<fp16, [128, 256]> linear0_weight_to_fp16 = const()[name = tensor<string, []>("linear0_weight_to_fp16"), val = tensor<fp16, [128, 256]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(5633792)))];
127
+ tensor<fp16, [128]> linear0_bias_to_fp16 = const()[name = tensor<string, []>("linear0_bias_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(5699392)))];
128
+ tensor<fp16, [589, 1, 256]> input_33_batch_first_0_to_fp16 = cast(dtype = input_33_batch_first_0_to_fp16_dtype_0, x = input_33_batch_first_0)[name = tensor<string, []>("cast_1")];
129
+ tensor<fp16, [1, 589, 256]> input_33_cast_fp16 = transpose(perm = input_33_perm_0, x = input_33_batch_first_0_to_fp16)[name = tensor<string, []>("transpose_1")];
130
+ tensor<fp16, [1, 589, 128]> linear_0_cast_fp16 = linear(bias = linear0_bias_to_fp16, weight = linear0_weight_to_fp16, x = input_33_cast_fp16)[name = tensor<string, []>("linear_0_cast_fp16")];
131
+ tensor<fp16, []> var_234_to_fp16 = const()[name = tensor<string, []>("op_234_to_fp16"), val = tensor<fp16, []>(0x1.47cp-7)];
132
+ tensor<fp16, [1, 589, 128]> input_37_cast_fp16 = leaky_relu(alpha = var_234_to_fp16, x = linear_0_cast_fp16)[name = tensor<string, []>("input_37_cast_fp16")];
133
+ tensor<fp16, [128, 128]> linear1_weight_to_fp16 = const()[name = tensor<string, []>("linear1_weight_to_fp16"), val = tensor<fp16, [128, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(5699712)))];
134
+ tensor<fp16, [128]> linear1_bias_to_fp16 = const()[name = tensor<string, []>("linear1_bias_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(5732544)))];
135
+ tensor<fp16, [1, 589, 128]> linear_1_cast_fp16 = linear(bias = linear1_bias_to_fp16, weight = linear1_weight_to_fp16, x = input_37_cast_fp16)[name = tensor<string, []>("linear_1_cast_fp16")];
136
+ tensor<fp16, []> var_239_to_fp16 = const()[name = tensor<string, []>("op_239_to_fp16"), val = tensor<fp16, []>(0x1.47cp-7)];
137
+ tensor<fp16, [1, 589, 128]> input_cast_fp16 = leaky_relu(alpha = var_239_to_fp16, x = linear_1_cast_fp16)[name = tensor<string, []>("input_cast_fp16")];
138
+ tensor<fp16, [7, 128]> classifier_weight_to_fp16 = const()[name = tensor<string, []>("classifier_weight_to_fp16"), val = tensor<fp16, [7, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(5732864)))];
139
+ tensor<fp16, [7]> classifier_bias_to_fp16 = const()[name = tensor<string, []>("classifier_bias_to_fp16"), val = tensor<fp16, [7]>([-0x1.01p+0, 0x1.67cp-2, 0x1.3d8p-1, 0x1.c8cp-2, -0x1.444p-2, -0x1.59p-1, -0x1.8fcp-2])];
140
+ tensor<fp16, [1, 589, 7]> linear_2_cast_fp16 = linear(bias = classifier_bias_to_fp16, weight = classifier_weight_to_fp16, x = input_cast_fp16)[name = tensor<string, []>("linear_2_cast_fp16")];
141
+ tensor<int32, [1]> var_247_axes_0 = const()[name = tensor<string, []>("op_247_axes_0"), val = tensor<int32, [1]>([-1])];
142
+ tensor<bool, []> var_247_keep_dims_0 = const()[name = tensor<string, []>("op_247_keep_dims_0"), val = tensor<bool, []>(true)];
143
+ tensor<fp16, [1, 589, 1]> var_247_cast_fp16 = reduce_log_sum_exp(axes = var_247_axes_0, keep_dims = var_247_keep_dims_0, x = linear_2_cast_fp16)[name = tensor<string, []>("op_247_cast_fp16")];
144
+ tensor<fp16, [1, 589, 7]> var_249_cast_fp16 = sub(x = linear_2_cast_fp16, y = var_247_cast_fp16)[name = tensor<string, []>("op_249_cast_fp16")];
145
+ tensor<string, []> var_249_cast_fp16_to_fp32_dtype_0 = const()[name = tensor<string, []>("op_249_cast_fp16_to_fp32_dtype_0"), val = tensor<string, []>("fp32")];
146
+ tensor<fp32, [1, 589, 7]> segments = cast(dtype = var_249_cast_fp16_to_fp32_dtype_0, x = var_249_cast_fp16)[name = tensor<string, []>("cast_0")];
147
+ } -> (segments);
148
+ }
pyannote_segmentation.mlmodelc/weights/weight.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0266f4ad4d843ecf31ef9220ad6b80616b3ec64a4404b64f3ea0371554e236ec
3
+ size 5734720
pyannote_segmentation.mlpackage/Data/com.apple.CoreML/model.mlmodel ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:45349a79cc3d2acdde0699d6c24a2d953e2f33600e35f2e3a3696a76ca0aa5d2
3
+ size 24289
pyannote_segmentation.mlpackage/Data/com.apple.CoreML/weights/weight.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0266f4ad4d843ecf31ef9220ad6b80616b3ec64a4404b64f3ea0371554e236ec
3
+ size 5734720
pyannote_segmentation.mlpackage/Manifest.json ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "fileFormatVersion": "1.0.0",
3
+ "itemInfoEntries": {
4
+ "2AB5E6CE-0992-4457-BD72-544A89B64C74": {
5
+ "author": "com.apple.CoreML",
6
+ "description": "CoreML Model Weights",
7
+ "name": "weights",
8
+ "path": "com.apple.CoreML/weights"
9
+ },
10
+ "F4B9A266-717D-4897-82E1-28470E6A7FFC": {
11
+ "author": "com.apple.CoreML",
12
+ "description": "CoreML Model Specification",
13
+ "name": "model.mlmodel",
14
+ "path": "com.apple.CoreML/model.mlmodel"
15
+ }
16
+ },
17
+ "rootModelIdentifier": "F4B9A266-717D-4897-82E1-28470E6A7FFC"
18
+ }
wespeaker.mlmodelc/analytics/coremldata.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:30528b97b29e0f0221b99c1c3456484f3123a68214b777f324a8b85ef5634c9a
3
+ size 243
wespeaker.mlmodelc/coremldata.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4a2840e7abc9aafa02ca23f6a3cb37fd8c8d9a95887336dae3d1e09f6ba7f9f6
3
+ size 512
wespeaker.mlmodelc/metadata.json ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "metadataOutputVersion" : "3.0",
4
+ "shortDescription" : "WeSpeaker ResNet34-LM, epsilon-safe attentive-stat pooling divisor guard",
5
+ "outputSchema" : [
6
+ {
7
+ "hasShapeFlexibility" : "0",
8
+ "isOptional" : "0",
9
+ "dataType" : "Float32",
10
+ "formattedType" : "MultiArray (Float32)",
11
+ "shortDescription" : "",
12
+ "shape" : "[]",
13
+ "name" : "constant",
14
+ "type" : "MultiArray"
15
+ },
16
+ {
17
+ "hasShapeFlexibility" : "0",
18
+ "isOptional" : "0",
19
+ "dataType" : "Float32",
20
+ "formattedType" : "MultiArray (Float32 3 × 256)",
21
+ "shortDescription" : "",
22
+ "shape" : "[3, 256]",
23
+ "name" : "embedding",
24
+ "type" : "MultiArray"
25
+ }
26
+ ],
27
+ "storagePrecision" : "Float32",
28
+ "modelParameters" : [
29
+
30
+ ],
31
+ "author" : "Phase-A reconversion: wespeaker ResNet34-LM, attentive-pool eps 1e-8 -> 2^-24",
32
+ "specificationVersion" : 6,
33
+ "mlProgramOperationTypeHistogram" : {
34
+ "Transpose" : 4,
35
+ "Square" : 2,
36
+ "UpsampleNearestNeighbor" : 1,
37
+ "Squeeze" : 5,
38
+ "Sub" : 5,
39
+ "ReduceMean" : 2,
40
+ "Gather" : 2,
41
+ "Identity" : 1,
42
+ "Reshape" : 1,
43
+ "Matmul" : 2,
44
+ "Concat" : 1,
45
+ "Add" : 19,
46
+ "Sqrt" : 1,
47
+ "RealDiv" : 3,
48
+ "Pad" : 2,
49
+ "Linear" : 2,
50
+ "Relu" : 33,
51
+ "ExpandDims" : 11,
52
+ "Conv" : 36,
53
+ "Maximum" : 1,
54
+ "Log" : 1,
55
+ "SliceByIndex" : 1001,
56
+ "Stack" : 1,
57
+ "ReduceSum" : 4,
58
+ "Mul" : 8
59
+ },
60
+ "computePrecision" : "Mixed (Float32, Int32)",
61
+ "isUpdatable" : "0",
62
+ "stateSchema" : [
63
+
64
+ ],
65
+ "availability" : {
66
+ "macOS" : "12.0",
67
+ "tvOS" : "15.0",
68
+ "visionOS" : "1.0",
69
+ "watchOS" : "8.0",
70
+ "iOS" : "15.0",
71
+ "macCatalyst" : "15.0"
72
+ },
73
+ "modelType" : {
74
+ "name" : "MLModelType_mlProgram"
75
+ },
76
+ "inputSchema" : [
77
+ {
78
+ "hasShapeFlexibility" : "0",
79
+ "isOptional" : "0",
80
+ "dataType" : "Float32",
81
+ "formattedType" : "MultiArray (Float32 3 × 160000)",
82
+ "shortDescription" : "",
83
+ "shape" : "[3, 160000]",
84
+ "name" : "waveform",
85
+ "type" : "MultiArray"
86
+ },
87
+ {
88
+ "hasShapeFlexibility" : "0",
89
+ "isOptional" : "0",
90
+ "dataType" : "Float32",
91
+ "formattedType" : "MultiArray (Float32 3 × 589)",
92
+ "shortDescription" : "",
93
+ "shape" : "[3, 589]",
94
+ "name" : "mask",
95
+ "type" : "MultiArray"
96
+ }
97
+ ],
98
+ "userDefinedMetadata" : {
99
+ "com.github.apple.coremltools.source_dialect" : "TorchScript",
100
+ "com.github.apple.coremltools.version" : "8.3.0",
101
+ "com.github.apple.coremltools.source" : "torch==2.6.0"
102
+ },
103
+ "generatedClassName" : "wespeaker",
104
+ "method" : "predict"
105
+ }
106
+ ]
wespeaker.mlmodelc/model.mil ADDED
The diff for this file is too large to render. See raw diff
 
wespeaker.mlmodelc/weights/weight.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:680837ec172d67c3197bba93800e1623eebfd35c3b17011802f5f98b8026a0aa
3
+ size 28706752
wespeaker.mlpackage/Data/com.apple.CoreML/model.mlmodel ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d6c4bb8b77eec2118f81506cdc18c75923f1ba6e6961d1ce51b0eeb73e3a592c
3
+ size 612953
wespeaker.mlpackage/Data/com.apple.CoreML/weights/weight.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:680837ec172d67c3197bba93800e1623eebfd35c3b17011802f5f98b8026a0aa
3
+ size 28706752
wespeaker.mlpackage/Manifest.json ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "fileFormatVersion": "1.0.0",
3
+ "itemInfoEntries": {
4
+ "5D66401A-A11D-4CD9-88E0-39F3AAE8CBF8": {
5
+ "author": "com.apple.CoreML",
6
+ "description": "CoreML Model Specification",
7
+ "name": "model.mlmodel",
8
+ "path": "com.apple.CoreML/model.mlmodel"
9
+ },
10
+ "DFACC015-BD66-478C-97BF-63A2559637EA": {
11
+ "author": "com.apple.CoreML",
12
+ "description": "CoreML Model Weights",
13
+ "name": "weights",
14
+ "path": "com.apple.CoreML/weights"
15
+ }
16
+ },
17
+ "rootModelIdentifier": "5D66401A-A11D-4CD9-88E0-39F3AAE8CBF8"
18
+ }
wespeaker_int8.mlmodelc/analytics/coremldata.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4d7649edc0b071fecf4778bf533de05d6eadd5ade828179d30beaadb31258798
3
+ size 243
wespeaker_int8.mlmodelc/coremldata.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:119a9f64487e7a6617b26b1c4420c48f4cf60397694ea24c6c3c53f6eaf88c3d
3
+ size 529
wespeaker_int8.mlmodelc/metadata.json ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "metadataOutputVersion" : "3.0",
4
+ "shortDescription" : "WeSpeaker ResNet34-LM int8-palettized, epsilon-safe pooling guard",
5
+ "outputSchema" : [
6
+ {
7
+ "hasShapeFlexibility" : "0",
8
+ "isOptional" : "0",
9
+ "dataType" : "Float32",
10
+ "formattedType" : "MultiArray (Float32)",
11
+ "shortDescription" : "",
12
+ "shape" : "[]",
13
+ "name" : "constant",
14
+ "type" : "MultiArray"
15
+ },
16
+ {
17
+ "hasShapeFlexibility" : "0",
18
+ "isOptional" : "0",
19
+ "dataType" : "Float32",
20
+ "formattedType" : "MultiArray (Float32 3 × 256)",
21
+ "shortDescription" : "",
22
+ "shape" : "[3, 256]",
23
+ "name" : "embedding",
24
+ "type" : "MultiArray"
25
+ }
26
+ ],
27
+ "storagePrecision" : "Mixed (Float32, Palettized (8 bits))",
28
+ "modelParameters" : [
29
+
30
+ ],
31
+ "author" : "Phase-A reconversion: wespeaker ResNet34-LM, attentive-pool eps 1e-8 -> 2^-24 (int8 8-bit palettized)",
32
+ "specificationVersion" : 7,
33
+ "mlProgramOperationTypeHistogram" : {
34
+ "Transpose" : 4,
35
+ "UpsampleNearestNeighbor" : 1,
36
+ "Squeeze" : 5,
37
+ "Ios16.gather" : 2,
38
+ "Ios16.reduceMean" : 2,
39
+ "Ios16.linear" : 2,
40
+ "Ios16.add" : 19,
41
+ "Ios16.realDiv" : 3,
42
+ "Concat" : 1,
43
+ "Ios16.reduceSum" : 4,
44
+ "Ios16.square" : 2,
45
+ "Pad" : 2,
46
+ "Ios16.log" : 1,
47
+ "ExpandDims" : 11,
48
+ "Ios16.sub" : 5,
49
+ "Ios16.relu" : 33,
50
+ "Ios16.reshape" : 1,
51
+ "Ios16.constexprLutToDense" : 38,
52
+ "Ios16.matmul" : 2,
53
+ "SliceByIndex" : 1001,
54
+ "Stack" : 1,
55
+ "Ios16.maximum" : 1,
56
+ "Ios16.conv" : 36,
57
+ "Ios16.sqrt" : 1,
58
+ "Ios16.mul" : 8
59
+ },
60
+ "computePrecision" : "Mixed (Float32, Int32)",
61
+ "isUpdatable" : "0",
62
+ "stateSchema" : [
63
+
64
+ ],
65
+ "availability" : {
66
+ "macOS" : "13.0",
67
+ "tvOS" : "16.0",
68
+ "visionOS" : "1.0",
69
+ "watchOS" : "9.0",
70
+ "iOS" : "16.0",
71
+ "macCatalyst" : "16.0"
72
+ },
73
+ "modelType" : {
74
+ "name" : "MLModelType_mlProgram"
75
+ },
76
+ "inputSchema" : [
77
+ {
78
+ "hasShapeFlexibility" : "0",
79
+ "isOptional" : "0",
80
+ "dataType" : "Float32",
81
+ "formattedType" : "MultiArray (Float32 3 × 160000)",
82
+ "shortDescription" : "",
83
+ "shape" : "[3, 160000]",
84
+ "name" : "waveform",
85
+ "type" : "MultiArray"
86
+ },
87
+ {
88
+ "hasShapeFlexibility" : "0",
89
+ "isOptional" : "0",
90
+ "dataType" : "Float32",
91
+ "formattedType" : "MultiArray (Float32 3 × 589)",
92
+ "shortDescription" : "",
93
+ "shape" : "[3, 589]",
94
+ "name" : "mask",
95
+ "type" : "MultiArray"
96
+ }
97
+ ],
98
+ "userDefinedMetadata" : {
99
+ "com.github.apple.coremltools.version" : "8.3.0",
100
+ "com.github.apple.coremltools.source" : "torch==2.6.0",
101
+ "com.github.apple.coremltools.source_dialect" : "TorchScript"
102
+ },
103
+ "generatedClassName" : "wespeaker_int8",
104
+ "method" : "predict"
105
+ }
106
+ ]
wespeaker_int8.mlmodelc/model.mil ADDED
The diff for this file is too large to render. See raw diff
 
wespeaker_int8.mlmodelc/weights/weight.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fb7310f849dd3db544fb016b0073d773e5293a26763a980a06d0834526f3a848
3
+ size 7243904
wespeaker_int8.mlpackage/Data/com.apple.CoreML/model.mlmodel ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5f8f14e1a044267294b1f554100cf9e3784e477ef575297b66f73d6251cc4317
3
+ size 618559
wespeaker_int8.mlpackage/Data/com.apple.CoreML/weights/weight.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fb7310f849dd3db544fb016b0073d773e5293a26763a980a06d0834526f3a848
3
+ size 7243904
wespeaker_int8.mlpackage/Manifest.json ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "fileFormatVersion": "1.0.0",
3
+ "itemInfoEntries": {
4
+ "37DC31EE-89C9-4957-B431-8BF5CFAA8EFF": {
5
+ "author": "com.apple.CoreML",
6
+ "description": "CoreML Model Specification",
7
+ "name": "model.mlmodel",
8
+ "path": "com.apple.CoreML/model.mlmodel"
9
+ },
10
+ "BDEDC262-0C99-44CC-8757-C7E297D636DA": {
11
+ "author": "com.apple.CoreML",
12
+ "description": "CoreML Model Weights",
13
+ "name": "weights",
14
+ "path": "com.apple.CoreML/weights"
15
+ }
16
+ },
17
+ "rootModelIdentifier": "37DC31EE-89C9-4957-B431-8BF5CFAA8EFF"
18
+ }