Upload 11 files
Browse files- .gitattributes +1 -0
- README.md +104 -0
- YAMNet.mlpackage/Data/com.apple.CoreML/model.mlmodel +3 -0
- YAMNet.mlpackage/Data/com.apple.CoreML/weights/weight.bin +3 -0
- YAMNet.mlpackage/Manifest.json +18 -0
- main.py +357 -0
- pyproject.toml +10 -0
- uv.lock +0 -0
- yamnet_model/assets/yamnet_class_map.csv +522 -0
- yamnet_model/saved_model.pb +3 -0
- yamnet_model/variables/variables.data-00000-of-00001 +3 -0
- yamnet_model/variables/variables.index +0 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
yamnet_model/variables/variables.data-00000-of-00001 filter=lfs diff=lfs merge=lfs -text
|
README.md
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
library_name: coreml
|
| 4 |
+
tags:
|
| 5 |
+
- coreml
|
| 6 |
+
- yamnet
|
| 7 |
+
- audio-classification
|
| 8 |
+
- tensorflow
|
| 9 |
+
- apple
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# YAMNet Core ML
|
| 13 |
+
|
| 14 |
+
This is a Core ML conversion of the YAMNet audio event classifier. The model was converted from the TensorFlow Hub YAMNet SavedModel.
|
| 15 |
+
|
| 16 |
+
Important: this Core ML package does not accept raw waveform audio. It accepts precomputed YAMNet log-mel feature patches shaped `[1, 96, 64]`.
|
| 17 |
+
|
| 18 |
+
## Model Interface
|
| 19 |
+
|
| 20 |
+
Input:
|
| 21 |
+
|
| 22 |
+
- `features`: `MLMultiArray` shaped `[1, 96, 64]`, `Float16`
|
| 23 |
+
- Represents one YAMNet log-mel patch: 96 frames x 64 mel bands.
|
| 24 |
+
|
| 25 |
+
Output:
|
| 26 |
+
|
| 27 |
+
- `Identity`: `MLMultiArray` shaped `[1, 521]`, `Float16`
|
| 28 |
+
- Contains class scores for the 521 YAMNet AudioSet classes.
|
| 29 |
+
|
| 30 |
+
Class labels are available in:
|
| 31 |
+
|
| 32 |
+
```text
|
| 33 |
+
yamnet_model/assets/yamnet_class_map.csv
|
| 34 |
+
```
|
| 35 |
+
|
| 36 |
+
## Swift Usage
|
| 37 |
+
|
| 38 |
+
```swift
|
| 39 |
+
import CoreML
|
| 40 |
+
import Foundation
|
| 41 |
+
|
| 42 |
+
let modelURL = URL(fileURLWithPath: "YAMNet.mlpackage")
|
| 43 |
+
let model = try MLModel(contentsOf: modelURL)
|
| 44 |
+
|
| 45 |
+
let features = try MLMultiArray(shape: [1, 96, 64], dataType: .float16)
|
| 46 |
+
|
| 47 |
+
// Fill `features` with YAMNet-compatible log-mel values.
|
| 48 |
+
// Layout is [batch, frame, melBand].
|
| 49 |
+
for frame in 0..<96 {
|
| 50 |
+
for band in 0..<64 {
|
| 51 |
+
let index = [0, NSNumber(value: frame), NSNumber(value: band)]
|
| 52 |
+
features[index] = 0.0
|
| 53 |
+
}
|
| 54 |
+
}
|
| 55 |
+
|
| 56 |
+
let input = try MLDictionaryFeatureProvider(dictionary: [
|
| 57 |
+
"features": MLFeatureValue(multiArray: features)
|
| 58 |
+
])
|
| 59 |
+
|
| 60 |
+
let output = try model.prediction(from: input)
|
| 61 |
+
guard let scores = output.featureValue(for: "Identity")?.multiArrayValue else {
|
| 62 |
+
throw NSError(domain: "YAMNet", code: 1, userInfo: [NSLocalizedDescriptionKey: "Missing scores output"])
|
| 63 |
+
}
|
| 64 |
+
|
| 65 |
+
var bestIndex = 0
|
| 66 |
+
var bestScore = -Double.infinity
|
| 67 |
+
for index in 0..<521 {
|
| 68 |
+
let score = scores[[0, NSNumber(value: index)]].doubleValue
|
| 69 |
+
if score > bestScore {
|
| 70 |
+
bestScore = score
|
| 71 |
+
bestIndex = index
|
| 72 |
+
}
|
| 73 |
+
}
|
| 74 |
+
|
| 75 |
+
print("Top class index: \(bestIndex), score: \(bestScore)")
|
| 76 |
+
```
|
| 77 |
+
|
| 78 |
+
## Feature Extraction
|
| 79 |
+
|
| 80 |
+
To use this model with raw audio, compute YAMNet-compatible features first:
|
| 81 |
+
|
| 82 |
+
- sample rate: 16 kHz mono
|
| 83 |
+
- STFT window: 25 ms
|
| 84 |
+
- STFT hop: 10 ms
|
| 85 |
+
- mel bands: 64
|
| 86 |
+
- mel range: 125 Hz to 7500 Hz
|
| 87 |
+
- log offset: `0.001`
|
| 88 |
+
- patch size: 96 frames x 64 mel bands
|
| 89 |
+
|
| 90 |
+
The original TensorFlow Hub YAMNet model includes waveform preprocessing, but that path uses TensorFlow ops that are not currently supported by Core ML conversion. This package therefore contains only the classifier network after feature extraction.
|
| 91 |
+
|
| 92 |
+
## Conversion
|
| 93 |
+
|
| 94 |
+
The package was generated with:
|
| 95 |
+
|
| 96 |
+
```bash
|
| 97 |
+
uv run main.py --model-path ./yamnet_model --output ./YAMNet.mlpackage
|
| 98 |
+
```
|
| 99 |
+
|
| 100 |
+
To download the TensorFlow Hub source model:
|
| 101 |
+
|
| 102 |
+
```bash
|
| 103 |
+
uv run main.py --download-only
|
| 104 |
+
```
|
YAMNet.mlpackage/Data/com.apple.CoreML/model.mlmodel
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:2f555c993e6632c3a1be43f87fa9ec44520c7697ebf3c27c5b17532f1f9c3a7d
|
| 3 |
+
size 70188
|
YAMNet.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:39aee5b5261a4d27cab29a0cd0d272a8d949d456e551bb68c14182cafb78a8ea
|
| 3 |
+
size 7462610
|
YAMNet.mlpackage/Manifest.json
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"fileFormatVersion": "1.0.0",
|
| 3 |
+
"itemInfoEntries": {
|
| 4 |
+
"59FD609B-A52D-4E4F-9F68-CD1D6DDD3322": {
|
| 5 |
+
"author": "com.apple.CoreML",
|
| 6 |
+
"description": "CoreML Model Specification",
|
| 7 |
+
"name": "model.mlmodel",
|
| 8 |
+
"path": "com.apple.CoreML/model.mlmodel"
|
| 9 |
+
},
|
| 10 |
+
"822F1EC3-B78E-47D5-A954-D8237778EB0D": {
|
| 11 |
+
"author": "com.apple.CoreML",
|
| 12 |
+
"description": "CoreML Model Weights",
|
| 13 |
+
"name": "weights",
|
| 14 |
+
"path": "com.apple.CoreML/weights"
|
| 15 |
+
}
|
| 16 |
+
},
|
| 17 |
+
"rootModelIdentifier": "59FD609B-A52D-4E4F-9F68-CD1D6DDD3322"
|
| 18 |
+
}
|
main.py
ADDED
|
@@ -0,0 +1,357 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import argparse
|
| 2 |
+
import shutil
|
| 3 |
+
import tarfile
|
| 4 |
+
import tempfile
|
| 5 |
+
import urllib.request
|
| 6 |
+
from dataclasses import dataclass
|
| 7 |
+
from pathlib import Path
|
| 8 |
+
|
| 9 |
+
import coremltools as ct
|
| 10 |
+
import tensorflow as tf
|
| 11 |
+
|
| 12 |
+
DEFAULT_TFHUB_URL = "https://tfhub.dev/google/yamnet/1?tf-hub-format=compressed"
|
| 13 |
+
|
| 14 |
+
|
| 15 |
+
def parse_args():
|
| 16 |
+
script_dir = Path(__file__).resolve().parent
|
| 17 |
+
parser = argparse.ArgumentParser(description="Convert YAMNet TensorFlow SavedModel to Core ML.")
|
| 18 |
+
parser.add_argument(
|
| 19 |
+
"--model-path",
|
| 20 |
+
default=script_dir / "yamnet_model",
|
| 21 |
+
type=Path,
|
| 22 |
+
help="Path to a TensorFlow SavedModel directory, .keras file, or .h5 file.",
|
| 23 |
+
)
|
| 24 |
+
parser.add_argument(
|
| 25 |
+
"--output",
|
| 26 |
+
default=script_dir / "YAMNet.mlpackage",
|
| 27 |
+
type=Path,
|
| 28 |
+
help="Output Core ML package path.",
|
| 29 |
+
)
|
| 30 |
+
parser.add_argument(
|
| 31 |
+
"--waveform-samples",
|
| 32 |
+
default=15_600,
|
| 33 |
+
type=int,
|
| 34 |
+
help="Fixed waveform length for the Core ML input. YAMNet commonly uses 0.975s at 16 kHz.",
|
| 35 |
+
)
|
| 36 |
+
parser.add_argument(
|
| 37 |
+
"--output-key",
|
| 38 |
+
default=None,
|
| 39 |
+
help="SavedModel output key for --conversion-mode waveform. Defaults to output_0 for TFHub YAMNet.",
|
| 40 |
+
)
|
| 41 |
+
parser.add_argument(
|
| 42 |
+
"--conversion-mode",
|
| 43 |
+
choices=["features", "waveform"],
|
| 44 |
+
default="features",
|
| 45 |
+
help=(
|
| 46 |
+
"features converts the YAMNet classifier from 96x64 log-mel patches and avoids unsupported "
|
| 47 |
+
"TensorFlow FFT ops. waveform attempts direct full SavedModel conversion."
|
| 48 |
+
),
|
| 49 |
+
)
|
| 50 |
+
parser.add_argument(
|
| 51 |
+
"--download-tfhub",
|
| 52 |
+
action="store_true",
|
| 53 |
+
help="Download YAMNet from TFHub into --model-path before conversion if it is missing.",
|
| 54 |
+
)
|
| 55 |
+
parser.add_argument(
|
| 56 |
+
"--force-download",
|
| 57 |
+
action="store_true",
|
| 58 |
+
help="Replace --model-path with a fresh TFHub download before conversion.",
|
| 59 |
+
)
|
| 60 |
+
parser.add_argument(
|
| 61 |
+
"--download-only",
|
| 62 |
+
action="store_true",
|
| 63 |
+
help="Download YAMNet from TFHub into --model-path and exit without Core ML conversion.",
|
| 64 |
+
)
|
| 65 |
+
parser.add_argument(
|
| 66 |
+
"--tfhub-url",
|
| 67 |
+
default=DEFAULT_TFHUB_URL,
|
| 68 |
+
help="TFHub compressed SavedModel URL.",
|
| 69 |
+
)
|
| 70 |
+
return parser.parse_args()
|
| 71 |
+
|
| 72 |
+
|
| 73 |
+
@dataclass(frozen=True)
|
| 74 |
+
class YamnetParams:
|
| 75 |
+
patch_frames: int = 96
|
| 76 |
+
patch_bands: int = 64
|
| 77 |
+
num_classes: int = 521
|
| 78 |
+
conv_padding: str = "same"
|
| 79 |
+
batchnorm_center: bool = True
|
| 80 |
+
batchnorm_scale: bool = False
|
| 81 |
+
batchnorm_epsilon: float = 1e-4
|
| 82 |
+
classifier_activation: str = "sigmoid"
|
| 83 |
+
|
| 84 |
+
|
| 85 |
+
YAMNET_LAYER_DEFS = [
|
| 86 |
+
("conv", [3, 3], 2, 32),
|
| 87 |
+
("separable_conv", [3, 3], 1, 64),
|
| 88 |
+
("separable_conv", [3, 3], 2, 128),
|
| 89 |
+
("separable_conv", [3, 3], 1, 128),
|
| 90 |
+
("separable_conv", [3, 3], 2, 256),
|
| 91 |
+
("separable_conv", [3, 3], 1, 256),
|
| 92 |
+
("separable_conv", [3, 3], 2, 512),
|
| 93 |
+
("separable_conv", [3, 3], 1, 512),
|
| 94 |
+
("separable_conv", [3, 3], 1, 512),
|
| 95 |
+
("separable_conv", [3, 3], 1, 512),
|
| 96 |
+
("separable_conv", [3, 3], 1, 512),
|
| 97 |
+
("separable_conv", [3, 3], 1, 512),
|
| 98 |
+
("separable_conv", [3, 3], 2, 1024),
|
| 99 |
+
("separable_conv", [3, 3], 1, 1024),
|
| 100 |
+
]
|
| 101 |
+
|
| 102 |
+
|
| 103 |
+
def download_tfhub_saved_model(tfhub_url, model_path, force=False):
|
| 104 |
+
if model_path.exists() and not force:
|
| 105 |
+
print(f"Using existing model: {model_path}")
|
| 106 |
+
return
|
| 107 |
+
|
| 108 |
+
if model_path.exists():
|
| 109 |
+
if model_path.is_dir():
|
| 110 |
+
shutil.rmtree(model_path)
|
| 111 |
+
else:
|
| 112 |
+
model_path.unlink()
|
| 113 |
+
|
| 114 |
+
model_path.parent.mkdir(parents=True, exist_ok=True)
|
| 115 |
+
print(f"Downloading TFHub model: {tfhub_url}")
|
| 116 |
+
|
| 117 |
+
with tempfile.TemporaryDirectory(prefix="yamnet-tfhub-") as temp_dir:
|
| 118 |
+
archive_path = Path(temp_dir) / "model.tar.gz"
|
| 119 |
+
request = urllib.request.Request(tfhub_url, headers={"User-Agent": "langpipe-yamnet-coreml"})
|
| 120 |
+
with urllib.request.urlopen(request) as response, archive_path.open("wb") as archive:
|
| 121 |
+
shutil.copyfileobj(response, archive)
|
| 122 |
+
|
| 123 |
+
extract_path = Path(temp_dir) / "model"
|
| 124 |
+
extract_path.mkdir()
|
| 125 |
+
with tarfile.open(archive_path, "r:gz") as tar:
|
| 126 |
+
tar.extractall(extract_path, filter="data")
|
| 127 |
+
|
| 128 |
+
saved_model_pb = next(extract_path.rglob("saved_model.pb"), None)
|
| 129 |
+
if saved_model_pb is None:
|
| 130 |
+
raise ValueError(f"TFHub archive did not contain saved_model.pb: {tfhub_url}")
|
| 131 |
+
|
| 132 |
+
extracted_model_root = saved_model_pb.parent
|
| 133 |
+
shutil.copytree(extracted_model_root, model_path)
|
| 134 |
+
|
| 135 |
+
print(f"Saved TFHub model: {model_path}")
|
| 136 |
+
|
| 137 |
+
|
| 138 |
+
def batch_norm(name, params, layer_input):
|
| 139 |
+
return tf.keras.layers.BatchNormalization(
|
| 140 |
+
name=name,
|
| 141 |
+
center=params.batchnorm_center,
|
| 142 |
+
scale=params.batchnorm_scale,
|
| 143 |
+
epsilon=params.batchnorm_epsilon,
|
| 144 |
+
)(layer_input)
|
| 145 |
+
|
| 146 |
+
|
| 147 |
+
def build_yamnet_feature_model(params=YamnetParams()):
|
| 148 |
+
features = tf.keras.Input(
|
| 149 |
+
shape=(params.patch_frames, params.patch_bands),
|
| 150 |
+
dtype=tf.float32,
|
| 151 |
+
name="features",
|
| 152 |
+
)
|
| 153 |
+
net = tf.keras.layers.Reshape(
|
| 154 |
+
(params.patch_frames, params.patch_bands, 1),
|
| 155 |
+
name="features_4d",
|
| 156 |
+
)(features)
|
| 157 |
+
|
| 158 |
+
for layer_index, (layer_type, kernel, stride, filters) in enumerate(YAMNET_LAYER_DEFS, start=1):
|
| 159 |
+
prefix = f"layer{layer_index}"
|
| 160 |
+
if layer_type == "conv":
|
| 161 |
+
net = tf.keras.layers.Conv2D(
|
| 162 |
+
name=f"{prefix}_conv",
|
| 163 |
+
filters=filters,
|
| 164 |
+
kernel_size=kernel,
|
| 165 |
+
strides=stride,
|
| 166 |
+
padding=params.conv_padding,
|
| 167 |
+
use_bias=False,
|
| 168 |
+
activation=None,
|
| 169 |
+
)(net)
|
| 170 |
+
net = batch_norm(f"{prefix}_conv_bn", params, net)
|
| 171 |
+
net = tf.keras.layers.ReLU(name=f"{prefix}_relu")(net)
|
| 172 |
+
continue
|
| 173 |
+
|
| 174 |
+
net = tf.keras.layers.DepthwiseConv2D(
|
| 175 |
+
name=f"{prefix}_depthwise_conv",
|
| 176 |
+
kernel_size=kernel,
|
| 177 |
+
strides=stride,
|
| 178 |
+
depth_multiplier=1,
|
| 179 |
+
padding=params.conv_padding,
|
| 180 |
+
use_bias=False,
|
| 181 |
+
activation=None,
|
| 182 |
+
)(net)
|
| 183 |
+
net = batch_norm(f"{prefix}_depthwise_conv_bn", params, net)
|
| 184 |
+
net = tf.keras.layers.ReLU(name=f"{prefix}_depthwise_relu")(net)
|
| 185 |
+
net = tf.keras.layers.Conv2D(
|
| 186 |
+
name=f"{prefix}_pointwise_conv",
|
| 187 |
+
filters=filters,
|
| 188 |
+
kernel_size=(1, 1),
|
| 189 |
+
strides=1,
|
| 190 |
+
padding=params.conv_padding,
|
| 191 |
+
use_bias=False,
|
| 192 |
+
activation=None,
|
| 193 |
+
)(net)
|
| 194 |
+
net = batch_norm(f"{prefix}_pointwise_conv_bn", params, net)
|
| 195 |
+
net = tf.keras.layers.ReLU(name=f"{prefix}_pointwise_relu")(net)
|
| 196 |
+
|
| 197 |
+
embeddings = tf.keras.layers.GlobalAveragePooling2D(name="embeddings")(net)
|
| 198 |
+
logits = tf.keras.layers.Dense(units=params.num_classes, use_bias=True, name="dense")(embeddings)
|
| 199 |
+
class_scores = tf.keras.layers.Activation(
|
| 200 |
+
activation=params.classifier_activation,
|
| 201 |
+
name="class_scores",
|
| 202 |
+
)(logits)
|
| 203 |
+
return tf.keras.Model(name="yamnet_features", inputs=features, outputs=class_scores)
|
| 204 |
+
|
| 205 |
+
|
| 206 |
+
def load_feature_model_weights_from_saved_model(model, model_path):
|
| 207 |
+
loaded = tf.saved_model.load(str(model_path))
|
| 208 |
+
if not hasattr(loaded, "_yamnet"):
|
| 209 |
+
raise ValueError("SavedModel does not expose the expected TFHub YAMNet _yamnet object.")
|
| 210 |
+
|
| 211 |
+
source_weights = list(loaded._yamnet.variables)
|
| 212 |
+
target_weights = model.weights
|
| 213 |
+
if len(source_weights) != len(target_weights):
|
| 214 |
+
raise ValueError(f"Weight count mismatch: source={len(source_weights)}, target={len(target_weights)}")
|
| 215 |
+
|
| 216 |
+
for index, (target, source) in enumerate(zip(target_weights, source_weights)):
|
| 217 |
+
if tuple(target.shape) != tuple(source.shape):
|
| 218 |
+
raise ValueError(
|
| 219 |
+
f"Weight shape mismatch at {index}: target {target.name} {target.shape}, "
|
| 220 |
+
f"source {source.name} {source.shape}"
|
| 221 |
+
)
|
| 222 |
+
|
| 223 |
+
model.set_weights([weight.numpy() for weight in source_weights])
|
| 224 |
+
|
| 225 |
+
|
| 226 |
+
def describe_signature(signature):
|
| 227 |
+
_, keyword_specs = signature.structured_input_signature
|
| 228 |
+
print("SavedModel inputs:")
|
| 229 |
+
for name, spec in keyword_specs.items():
|
| 230 |
+
print(f" {name}: shape={spec.shape}, dtype={spec.dtype.name}")
|
| 231 |
+
|
| 232 |
+
print("SavedModel outputs:")
|
| 233 |
+
for name, spec in signature.structured_outputs.items():
|
| 234 |
+
print(f" {name}: shape={spec.shape}, dtype={spec.dtype.name}")
|
| 235 |
+
|
| 236 |
+
|
| 237 |
+
def select_output_key(signature, requested_key):
|
| 238 |
+
outputs = signature.structured_outputs
|
| 239 |
+
if requested_key:
|
| 240 |
+
if requested_key not in outputs:
|
| 241 |
+
raise ValueError(f"--output-key {requested_key!r} not found. Available keys: {list(outputs)}")
|
| 242 |
+
return requested_key
|
| 243 |
+
|
| 244 |
+
if "output_0" in outputs:
|
| 245 |
+
return "output_0"
|
| 246 |
+
|
| 247 |
+
for key in outputs:
|
| 248 |
+
if "score" in key.lower() or "class" in key.lower():
|
| 249 |
+
return key
|
| 250 |
+
|
| 251 |
+
if not outputs:
|
| 252 |
+
raise ValueError("SavedModel serving_default has no outputs.")
|
| 253 |
+
return next(iter(outputs))
|
| 254 |
+
|
| 255 |
+
|
| 256 |
+
class SavedModelClassScores(tf.Module):
|
| 257 |
+
def __init__(self, signature, input_key, output_key):
|
| 258 |
+
super().__init__()
|
| 259 |
+
self.signature = signature
|
| 260 |
+
self.input_key = input_key
|
| 261 |
+
self.output_key = output_key
|
| 262 |
+
|
| 263 |
+
@tf.function
|
| 264 |
+
def __call__(self, waveform):
|
| 265 |
+
outputs = self.signature(**{self.input_key: waveform})
|
| 266 |
+
return {"class_scores": outputs[self.output_key]}
|
| 267 |
+
|
| 268 |
+
|
| 269 |
+
def convert_saved_model(model_path, output_path, waveform_samples, output_key):
|
| 270 |
+
loaded = tf.saved_model.load(str(model_path))
|
| 271 |
+
if "serving_default" not in loaded.signatures:
|
| 272 |
+
raise ValueError(f"SavedModel has no serving_default signature. Available: {list(loaded.signatures)}")
|
| 273 |
+
|
| 274 |
+
signature = loaded.signatures["serving_default"]
|
| 275 |
+
describe_signature(signature)
|
| 276 |
+
|
| 277 |
+
_, keyword_specs = signature.structured_input_signature
|
| 278 |
+
if len(keyword_specs) != 1:
|
| 279 |
+
raise ValueError(
|
| 280 |
+
"Expected one SavedModel input. Pass a wrapper model if this SavedModel has "
|
| 281 |
+
f"{len(keyword_specs)} inputs: {list(keyword_specs)}"
|
| 282 |
+
)
|
| 283 |
+
|
| 284 |
+
input_key = next(iter(keyword_specs))
|
| 285 |
+
selected_output = select_output_key(signature, output_key)
|
| 286 |
+
print(f"Converting input {input_key!r} -> output {selected_output!r} as 'class_scores'")
|
| 287 |
+
|
| 288 |
+
wrapper = SavedModelClassScores(signature, input_key, selected_output)
|
| 289 |
+
concrete = wrapper.__call__.get_concrete_function(
|
| 290 |
+
tf.TensorSpec([waveform_samples], tf.float32, name="waveform")
|
| 291 |
+
)
|
| 292 |
+
|
| 293 |
+
return ct.convert(
|
| 294 |
+
[concrete],
|
| 295 |
+
source="tensorflow",
|
| 296 |
+
inputs=[ct.TensorType(shape=(waveform_samples,), name="waveform")],
|
| 297 |
+
convert_to="mlprogram",
|
| 298 |
+
minimum_deployment_target=ct.target.macOS13,
|
| 299 |
+
)
|
| 300 |
+
|
| 301 |
+
|
| 302 |
+
def convert_keras_model(model_path, output_path):
|
| 303 |
+
model = tf.keras.models.load_model(str(model_path))
|
| 304 |
+
return ct.convert(
|
| 305 |
+
model,
|
| 306 |
+
inputs=[ct.TensorType(shape=(1, 64, 96, 1), name="features")],
|
| 307 |
+
outputs=[ct.TensorType(name="class_scores")],
|
| 308 |
+
convert_to="mlprogram",
|
| 309 |
+
minimum_deployment_target=ct.target.macOS13,
|
| 310 |
+
)
|
| 311 |
+
|
| 312 |
+
|
| 313 |
+
def convert_feature_model(model_path):
|
| 314 |
+
model = build_yamnet_feature_model()
|
| 315 |
+
model(tf.zeros((1, 96, 64), dtype=tf.float32))
|
| 316 |
+
load_feature_model_weights_from_saved_model(model, model_path)
|
| 317 |
+
return ct.convert(
|
| 318 |
+
model,
|
| 319 |
+
source="tensorflow",
|
| 320 |
+
inputs=[ct.TensorType(shape=(1, 96, 64), name="features")],
|
| 321 |
+
convert_to="mlprogram",
|
| 322 |
+
minimum_deployment_target=ct.target.macOS13,
|
| 323 |
+
)
|
| 324 |
+
|
| 325 |
+
|
| 326 |
+
def main():
|
| 327 |
+
args = parse_args()
|
| 328 |
+
if args.download_tfhub or args.force_download or args.download_only:
|
| 329 |
+
download_tfhub_saved_model(args.tfhub_url, args.model_path, force=args.force_download)
|
| 330 |
+
if args.download_only:
|
| 331 |
+
return
|
| 332 |
+
|
| 333 |
+
if not args.model_path.exists():
|
| 334 |
+
raise FileNotFoundError(
|
| 335 |
+
f"Model path does not exist: {args.model_path}. "
|
| 336 |
+
"Pass --download-tfhub to download YAMNet from TFHub."
|
| 337 |
+
)
|
| 338 |
+
|
| 339 |
+
if args.conversion_mode == "features":
|
| 340 |
+
mlmodel = convert_feature_model(args.model_path)
|
| 341 |
+
elif args.model_path.suffix in {".keras", ".h5", ".hdf5"}:
|
| 342 |
+
mlmodel = convert_keras_model(args.model_path, args.output)
|
| 343 |
+
else:
|
| 344 |
+
mlmodel = convert_saved_model(
|
| 345 |
+
args.model_path,
|
| 346 |
+
args.output,
|
| 347 |
+
args.waveform_samples,
|
| 348 |
+
args.output_key,
|
| 349 |
+
)
|
| 350 |
+
|
| 351 |
+
args.output.parent.mkdir(parents=True, exist_ok=True)
|
| 352 |
+
mlmodel.save(str(args.output))
|
| 353 |
+
print(f"Saved Core ML model: {args.output}")
|
| 354 |
+
|
| 355 |
+
|
| 356 |
+
if __name__ == "__main__":
|
| 357 |
+
main()
|
pyproject.toml
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[project]
|
| 2 |
+
name = "yamnet-coreml"
|
| 3 |
+
version = "0.1.0"
|
| 4 |
+
description = "Add your description here"
|
| 5 |
+
readme = "README.md"
|
| 6 |
+
requires-python = ">=3.13"
|
| 7 |
+
dependencies = [
|
| 8 |
+
"coremltools>=9.0",
|
| 9 |
+
"tensorflow>=2.21.0",
|
| 10 |
+
]
|
uv.lock
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
yamnet_model/assets/yamnet_class_map.csv
ADDED
|
@@ -0,0 +1,522 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
index,mid,display_name
|
| 2 |
+
0,/m/09x0r,Speech
|
| 3 |
+
1,/m/0ytgt,"Child speech, kid speaking"
|
| 4 |
+
2,/m/01h8n0,Conversation
|
| 5 |
+
3,/m/02qldy,"Narration, monologue"
|
| 6 |
+
4,/m/0261r1,Babbling
|
| 7 |
+
5,/m/0brhx,Speech synthesizer
|
| 8 |
+
6,/m/07p6fty,Shout
|
| 9 |
+
7,/m/07q4ntr,Bellow
|
| 10 |
+
8,/m/07rwj3x,Whoop
|
| 11 |
+
9,/m/07sr1lc,Yell
|
| 12 |
+
10,/t/dd00135,Children shouting
|
| 13 |
+
11,/m/03qc9zr,Screaming
|
| 14 |
+
12,/m/02rtxlg,Whispering
|
| 15 |
+
13,/m/01j3sz,Laughter
|
| 16 |
+
14,/t/dd00001,Baby laughter
|
| 17 |
+
15,/m/07r660_,Giggle
|
| 18 |
+
16,/m/07s04w4,Snicker
|
| 19 |
+
17,/m/07sq110,Belly laugh
|
| 20 |
+
18,/m/07rgt08,"Chuckle, chortle"
|
| 21 |
+
19,/m/0463cq4,"Crying, sobbing"
|
| 22 |
+
20,/t/dd00002,"Baby cry, infant cry"
|
| 23 |
+
21,/m/07qz6j3,Whimper
|
| 24 |
+
22,/m/07qw_06,"Wail, moan"
|
| 25 |
+
23,/m/07plz5l,Sigh
|
| 26 |
+
24,/m/015lz1,Singing
|
| 27 |
+
25,/m/0l14jd,Choir
|
| 28 |
+
26,/m/01swy6,Yodeling
|
| 29 |
+
27,/m/02bk07,Chant
|
| 30 |
+
28,/m/01c194,Mantra
|
| 31 |
+
29,/t/dd00005,Child singing
|
| 32 |
+
30,/t/dd00006,Synthetic singing
|
| 33 |
+
31,/m/06bxc,Rapping
|
| 34 |
+
32,/m/02fxyj,Humming
|
| 35 |
+
33,/m/07s2xch,Groan
|
| 36 |
+
34,/m/07r4k75,Grunt
|
| 37 |
+
35,/m/01w250,Whistling
|
| 38 |
+
36,/m/0lyf6,Breathing
|
| 39 |
+
37,/m/07mzm6,Wheeze
|
| 40 |
+
38,/m/01d3sd,Snoring
|
| 41 |
+
39,/m/07s0dtb,Gasp
|
| 42 |
+
40,/m/07pyy8b,Pant
|
| 43 |
+
41,/m/07q0yl5,Snort
|
| 44 |
+
42,/m/01b_21,Cough
|
| 45 |
+
43,/m/0dl9sf8,Throat clearing
|
| 46 |
+
44,/m/01hsr_,Sneeze
|
| 47 |
+
45,/m/07ppn3j,Sniff
|
| 48 |
+
46,/m/06h7j,Run
|
| 49 |
+
47,/m/07qv_x_,Shuffle
|
| 50 |
+
48,/m/07pbtc8,"Walk, footsteps"
|
| 51 |
+
49,/m/03cczk,"Chewing, mastication"
|
| 52 |
+
50,/m/07pdhp0,Biting
|
| 53 |
+
51,/m/0939n_,Gargling
|
| 54 |
+
52,/m/01g90h,Stomach rumble
|
| 55 |
+
53,/m/03q5_w,"Burping, eructation"
|
| 56 |
+
54,/m/02p3nc,Hiccup
|
| 57 |
+
55,/m/02_nn,Fart
|
| 58 |
+
56,/m/0k65p,Hands
|
| 59 |
+
57,/m/025_jnm,Finger snapping
|
| 60 |
+
58,/m/0l15bq,Clapping
|
| 61 |
+
59,/m/01jg02,"Heart sounds, heartbeat"
|
| 62 |
+
60,/m/01jg1z,Heart murmur
|
| 63 |
+
61,/m/053hz1,Cheering
|
| 64 |
+
62,/m/028ght,Applause
|
| 65 |
+
63,/m/07rkbfh,Chatter
|
| 66 |
+
64,/m/03qtwd,Crowd
|
| 67 |
+
65,/m/07qfr4h,"Hubbub, speech noise, speech babble"
|
| 68 |
+
66,/t/dd00013,Children playing
|
| 69 |
+
67,/m/0jbk,Animal
|
| 70 |
+
68,/m/068hy,"Domestic animals, pets"
|
| 71 |
+
69,/m/0bt9lr,Dog
|
| 72 |
+
70,/m/05tny_,Bark
|
| 73 |
+
71,/m/07r_k2n,Yip
|
| 74 |
+
72,/m/07qf0zm,Howl
|
| 75 |
+
73,/m/07rc7d9,Bow-wow
|
| 76 |
+
74,/m/0ghcn6,Growling
|
| 77 |
+
75,/t/dd00136,Whimper (dog)
|
| 78 |
+
76,/m/01yrx,Cat
|
| 79 |
+
77,/m/02yds9,Purr
|
| 80 |
+
78,/m/07qrkrw,Meow
|
| 81 |
+
79,/m/07rjwbb,Hiss
|
| 82 |
+
80,/m/07r81j2,Caterwaul
|
| 83 |
+
81,/m/0ch8v,"Livestock, farm animals, working animals"
|
| 84 |
+
82,/m/03k3r,Horse
|
| 85 |
+
83,/m/07rv9rh,Clip-clop
|
| 86 |
+
84,/m/07q5rw0,"Neigh, whinny"
|
| 87 |
+
85,/m/01xq0k1,"Cattle, bovinae"
|
| 88 |
+
86,/m/07rpkh9,Moo
|
| 89 |
+
87,/m/0239kh,Cowbell
|
| 90 |
+
88,/m/068zj,Pig
|
| 91 |
+
89,/t/dd00018,Oink
|
| 92 |
+
90,/m/03fwl,Goat
|
| 93 |
+
91,/m/07q0h5t,Bleat
|
| 94 |
+
92,/m/07bgp,Sheep
|
| 95 |
+
93,/m/025rv6n,Fowl
|
| 96 |
+
94,/m/09b5t,"Chicken, rooster"
|
| 97 |
+
95,/m/07st89h,Cluck
|
| 98 |
+
96,/m/07qn5dc,"Crowing, cock-a-doodle-doo"
|
| 99 |
+
97,/m/01rd7k,Turkey
|
| 100 |
+
98,/m/07svc2k,Gobble
|
| 101 |
+
99,/m/09ddx,Duck
|
| 102 |
+
100,/m/07qdb04,Quack
|
| 103 |
+
101,/m/0dbvp,Goose
|
| 104 |
+
102,/m/07qwf61,Honk
|
| 105 |
+
103,/m/01280g,Wild animals
|
| 106 |
+
104,/m/0cdnk,"Roaring cats (lions, tigers)"
|
| 107 |
+
105,/m/04cvmfc,Roar
|
| 108 |
+
106,/m/015p6,Bird
|
| 109 |
+
107,/m/020bb7,"Bird vocalization, bird call, bird song"
|
| 110 |
+
108,/m/07pggtn,"Chirp, tweet"
|
| 111 |
+
109,/m/07sx8x_,Squawk
|
| 112 |
+
110,/m/0h0rv,"Pigeon, dove"
|
| 113 |
+
111,/m/07r_25d,Coo
|
| 114 |
+
112,/m/04s8yn,Crow
|
| 115 |
+
113,/m/07r5c2p,Caw
|
| 116 |
+
114,/m/09d5_,Owl
|
| 117 |
+
115,/m/07r_80w,Hoot
|
| 118 |
+
116,/m/05_wcq,"Bird flight, flapping wings"
|
| 119 |
+
117,/m/01z5f,"Canidae, dogs, wolves"
|
| 120 |
+
118,/m/06hps,"Rodents, rats, mice"
|
| 121 |
+
119,/m/04rmv,Mouse
|
| 122 |
+
120,/m/07r4gkf,Patter
|
| 123 |
+
121,/m/03vt0,Insect
|
| 124 |
+
122,/m/09xqv,Cricket
|
| 125 |
+
123,/m/09f96,Mosquito
|
| 126 |
+
124,/m/0h2mp,"Fly, housefly"
|
| 127 |
+
125,/m/07pjwq1,Buzz
|
| 128 |
+
126,/m/01h3n,"Bee, wasp, etc."
|
| 129 |
+
127,/m/09ld4,Frog
|
| 130 |
+
128,/m/07st88b,Croak
|
| 131 |
+
129,/m/078jl,Snake
|
| 132 |
+
130,/m/07qn4z3,Rattle
|
| 133 |
+
131,/m/032n05,Whale vocalization
|
| 134 |
+
132,/m/04rlf,Music
|
| 135 |
+
133,/m/04szw,Musical instrument
|
| 136 |
+
134,/m/0fx80y,Plucked string instrument
|
| 137 |
+
135,/m/0342h,Guitar
|
| 138 |
+
136,/m/02sgy,Electric guitar
|
| 139 |
+
137,/m/018vs,Bass guitar
|
| 140 |
+
138,/m/042v_gx,Acoustic guitar
|
| 141 |
+
139,/m/06w87,"Steel guitar, slide guitar"
|
| 142 |
+
140,/m/01glhc,Tapping (guitar technique)
|
| 143 |
+
141,/m/07s0s5r,Strum
|
| 144 |
+
142,/m/018j2,Banjo
|
| 145 |
+
143,/m/0jtg0,Sitar
|
| 146 |
+
144,/m/04rzd,Mandolin
|
| 147 |
+
145,/m/01bns_,Zither
|
| 148 |
+
146,/m/07xzm,Ukulele
|
| 149 |
+
147,/m/05148p4,Keyboard (musical)
|
| 150 |
+
148,/m/05r5c,Piano
|
| 151 |
+
149,/m/01s0ps,Electric piano
|
| 152 |
+
150,/m/013y1f,Organ
|
| 153 |
+
151,/m/03xq_f,Electronic organ
|
| 154 |
+
152,/m/03gvt,Hammond organ
|
| 155 |
+
153,/m/0l14qv,Synthesizer
|
| 156 |
+
154,/m/01v1d8,Sampler
|
| 157 |
+
155,/m/03q5t,Harpsichord
|
| 158 |
+
156,/m/0l14md,Percussion
|
| 159 |
+
157,/m/02hnl,Drum kit
|
| 160 |
+
158,/m/0cfdd,Drum machine
|
| 161 |
+
159,/m/026t6,Drum
|
| 162 |
+
160,/m/06rvn,Snare drum
|
| 163 |
+
161,/m/03t3fj,Rimshot
|
| 164 |
+
162,/m/02k_mr,Drum roll
|
| 165 |
+
163,/m/0bm02,Bass drum
|
| 166 |
+
164,/m/011k_j,Timpani
|
| 167 |
+
165,/m/01p970,Tabla
|
| 168 |
+
166,/m/01qbl,Cymbal
|
| 169 |
+
167,/m/03qtq,Hi-hat
|
| 170 |
+
168,/m/01sm1g,Wood block
|
| 171 |
+
169,/m/07brj,Tambourine
|
| 172 |
+
170,/m/05r5wn,Rattle (instrument)
|
| 173 |
+
171,/m/0xzly,Maraca
|
| 174 |
+
172,/m/0mbct,Gong
|
| 175 |
+
173,/m/016622,Tubular bells
|
| 176 |
+
174,/m/0j45pbj,Mallet percussion
|
| 177 |
+
175,/m/0dwsp,"Marimba, xylophone"
|
| 178 |
+
176,/m/0dwtp,Glockenspiel
|
| 179 |
+
177,/m/0dwt5,Vibraphone
|
| 180 |
+
178,/m/0l156b,Steelpan
|
| 181 |
+
179,/m/05pd6,Orchestra
|
| 182 |
+
180,/m/01kcd,Brass instrument
|
| 183 |
+
181,/m/0319l,French horn
|
| 184 |
+
182,/m/07gql,Trumpet
|
| 185 |
+
183,/m/07c6l,Trombone
|
| 186 |
+
184,/m/0l14_3,Bowed string instrument
|
| 187 |
+
185,/m/02qmj0d,String section
|
| 188 |
+
186,/m/07y_7,"Violin, fiddle"
|
| 189 |
+
187,/m/0d8_n,Pizzicato
|
| 190 |
+
188,/m/01xqw,Cello
|
| 191 |
+
189,/m/02fsn,Double bass
|
| 192 |
+
190,/m/085jw,"Wind instrument, woodwind instrument"
|
| 193 |
+
191,/m/0l14j_,Flute
|
| 194 |
+
192,/m/06ncr,Saxophone
|
| 195 |
+
193,/m/01wy6,Clarinet
|
| 196 |
+
194,/m/03m5k,Harp
|
| 197 |
+
195,/m/0395lw,Bell
|
| 198 |
+
196,/m/03w41f,Church bell
|
| 199 |
+
197,/m/027m70_,Jingle bell
|
| 200 |
+
198,/m/0gy1t2s,Bicycle bell
|
| 201 |
+
199,/m/07n_g,Tuning fork
|
| 202 |
+
200,/m/0f8s22,Chime
|
| 203 |
+
201,/m/026fgl,Wind chime
|
| 204 |
+
202,/m/0150b9,Change ringing (campanology)
|
| 205 |
+
203,/m/03qjg,Harmonica
|
| 206 |
+
204,/m/0mkg,Accordion
|
| 207 |
+
205,/m/0192l,Bagpipes
|
| 208 |
+
206,/m/02bxd,Didgeridoo
|
| 209 |
+
207,/m/0l14l2,Shofar
|
| 210 |
+
208,/m/07kc_,Theremin
|
| 211 |
+
209,/m/0l14t7,Singing bowl
|
| 212 |
+
210,/m/01hgjl,Scratching (performance technique)
|
| 213 |
+
211,/m/064t9,Pop music
|
| 214 |
+
212,/m/0glt670,Hip hop music
|
| 215 |
+
213,/m/02cz_7,Beatboxing
|
| 216 |
+
214,/m/06by7,Rock music
|
| 217 |
+
215,/m/03lty,Heavy metal
|
| 218 |
+
216,/m/05r6t,Punk rock
|
| 219 |
+
217,/m/0dls3,Grunge
|
| 220 |
+
218,/m/0dl5d,Progressive rock
|
| 221 |
+
219,/m/07sbbz2,Rock and roll
|
| 222 |
+
220,/m/05w3f,Psychedelic rock
|
| 223 |
+
221,/m/06j6l,Rhythm and blues
|
| 224 |
+
222,/m/0gywn,Soul music
|
| 225 |
+
223,/m/06cqb,Reggae
|
| 226 |
+
224,/m/01lyv,Country
|
| 227 |
+
225,/m/015y_n,Swing music
|
| 228 |
+
226,/m/0gg8l,Bluegrass
|
| 229 |
+
227,/m/02x8m,Funk
|
| 230 |
+
228,/m/02w4v,Folk music
|
| 231 |
+
229,/m/06j64v,Middle Eastern music
|
| 232 |
+
230,/m/03_d0,Jazz
|
| 233 |
+
231,/m/026z9,Disco
|
| 234 |
+
232,/m/0ggq0m,Classical music
|
| 235 |
+
233,/m/05lls,Opera
|
| 236 |
+
234,/m/02lkt,Electronic music
|
| 237 |
+
235,/m/03mb9,House music
|
| 238 |
+
236,/m/07gxw,Techno
|
| 239 |
+
237,/m/07s72n,Dubstep
|
| 240 |
+
238,/m/0283d,Drum and bass
|
| 241 |
+
239,/m/0m0jc,Electronica
|
| 242 |
+
240,/m/08cyft,Electronic dance music
|
| 243 |
+
241,/m/0fd3y,Ambient music
|
| 244 |
+
242,/m/07lnk,Trance music
|
| 245 |
+
243,/m/0g293,Music of Latin America
|
| 246 |
+
244,/m/0ln16,Salsa music
|
| 247 |
+
245,/m/0326g,Flamenco
|
| 248 |
+
246,/m/0155w,Blues
|
| 249 |
+
247,/m/05fw6t,Music for children
|
| 250 |
+
248,/m/02v2lh,New-age music
|
| 251 |
+
249,/m/0y4f8,Vocal music
|
| 252 |
+
250,/m/0z9c,A capella
|
| 253 |
+
251,/m/0164x2,Music of Africa
|
| 254 |
+
252,/m/0145m,Afrobeat
|
| 255 |
+
253,/m/02mscn,Christian music
|
| 256 |
+
254,/m/016cjb,Gospel music
|
| 257 |
+
255,/m/028sqc,Music of Asia
|
| 258 |
+
256,/m/015vgc,Carnatic music
|
| 259 |
+
257,/m/0dq0md,Music of Bollywood
|
| 260 |
+
258,/m/06rqw,Ska
|
| 261 |
+
259,/m/02p0sh1,Traditional music
|
| 262 |
+
260,/m/05rwpb,Independent music
|
| 263 |
+
261,/m/074ft,Song
|
| 264 |
+
262,/m/025td0t,Background music
|
| 265 |
+
263,/m/02cjck,Theme music
|
| 266 |
+
264,/m/03r5q_,Jingle (music)
|
| 267 |
+
265,/m/0l14gg,Soundtrack music
|
| 268 |
+
266,/m/07pkxdp,Lullaby
|
| 269 |
+
267,/m/01z7dr,Video game music
|
| 270 |
+
268,/m/0140xf,Christmas music
|
| 271 |
+
269,/m/0ggx5q,Dance music
|
| 272 |
+
270,/m/04wptg,Wedding music
|
| 273 |
+
271,/t/dd00031,Happy music
|
| 274 |
+
272,/t/dd00033,Sad music
|
| 275 |
+
273,/t/dd00034,Tender music
|
| 276 |
+
274,/t/dd00035,Exciting music
|
| 277 |
+
275,/t/dd00036,Angry music
|
| 278 |
+
276,/t/dd00037,Scary music
|
| 279 |
+
277,/m/03m9d0z,Wind
|
| 280 |
+
278,/m/09t49,Rustling leaves
|
| 281 |
+
279,/t/dd00092,Wind noise (microphone)
|
| 282 |
+
280,/m/0jb2l,Thunderstorm
|
| 283 |
+
281,/m/0ngt1,Thunder
|
| 284 |
+
282,/m/0838f,Water
|
| 285 |
+
283,/m/06mb1,Rain
|
| 286 |
+
284,/m/07r10fb,Raindrop
|
| 287 |
+
285,/t/dd00038,Rain on surface
|
| 288 |
+
286,/m/0j6m2,Stream
|
| 289 |
+
287,/m/0j2kx,Waterfall
|
| 290 |
+
288,/m/05kq4,Ocean
|
| 291 |
+
289,/m/034srq,"Waves, surf"
|
| 292 |
+
290,/m/06wzb,Steam
|
| 293 |
+
291,/m/07swgks,Gurgling
|
| 294 |
+
292,/m/02_41,Fire
|
| 295 |
+
293,/m/07pzfmf,Crackle
|
| 296 |
+
294,/m/07yv9,Vehicle
|
| 297 |
+
295,/m/019jd,"Boat, Water vehicle"
|
| 298 |
+
296,/m/0hsrw,"Sailboat, sailing ship"
|
| 299 |
+
297,/m/056ks2,"Rowboat, canoe, kayak"
|
| 300 |
+
298,/m/02rlv9,"Motorboat, speedboat"
|
| 301 |
+
299,/m/06q74,Ship
|
| 302 |
+
300,/m/012f08,Motor vehicle (road)
|
| 303 |
+
301,/m/0k4j,Car
|
| 304 |
+
302,/m/0912c9,"Vehicle horn, car horn, honking"
|
| 305 |
+
303,/m/07qv_d5,Toot
|
| 306 |
+
304,/m/02mfyn,Car alarm
|
| 307 |
+
305,/m/04gxbd,"Power windows, electric windows"
|
| 308 |
+
306,/m/07rknqz,Skidding
|
| 309 |
+
307,/m/0h9mv,Tire squeal
|
| 310 |
+
308,/t/dd00134,Car passing by
|
| 311 |
+
309,/m/0ltv,"Race car, auto racing"
|
| 312 |
+
310,/m/07r04,Truck
|
| 313 |
+
311,/m/0gvgw0,Air brake
|
| 314 |
+
312,/m/05x_td,"Air horn, truck horn"
|
| 315 |
+
313,/m/02rhddq,Reversing beeps
|
| 316 |
+
314,/m/03cl9h,"Ice cream truck, ice cream van"
|
| 317 |
+
315,/m/01bjv,Bus
|
| 318 |
+
316,/m/03j1ly,Emergency vehicle
|
| 319 |
+
317,/m/04qvtq,Police car (siren)
|
| 320 |
+
318,/m/012n7d,Ambulance (siren)
|
| 321 |
+
319,/m/012ndj,"Fire engine, fire truck (siren)"
|
| 322 |
+
320,/m/04_sv,Motorcycle
|
| 323 |
+
321,/m/0btp2,"Traffic noise, roadway noise"
|
| 324 |
+
322,/m/06d_3,Rail transport
|
| 325 |
+
323,/m/07jdr,Train
|
| 326 |
+
324,/m/04zmvq,Train whistle
|
| 327 |
+
325,/m/0284vy3,Train horn
|
| 328 |
+
326,/m/01g50p,"Railroad car, train wagon"
|
| 329 |
+
327,/t/dd00048,Train wheels squealing
|
| 330 |
+
328,/m/0195fx,"Subway, metro, underground"
|
| 331 |
+
329,/m/0k5j,Aircraft
|
| 332 |
+
330,/m/014yck,Aircraft engine
|
| 333 |
+
331,/m/04229,Jet engine
|
| 334 |
+
332,/m/02l6bg,"Propeller, airscrew"
|
| 335 |
+
333,/m/09ct_,Helicopter
|
| 336 |
+
334,/m/0cmf2,"Fixed-wing aircraft, airplane"
|
| 337 |
+
335,/m/0199g,Bicycle
|
| 338 |
+
336,/m/06_fw,Skateboard
|
| 339 |
+
337,/m/02mk9,Engine
|
| 340 |
+
338,/t/dd00065,Light engine (high frequency)
|
| 341 |
+
339,/m/08j51y,"Dental drill, dentist's drill"
|
| 342 |
+
340,/m/01yg9g,Lawn mower
|
| 343 |
+
341,/m/01j4z9,Chainsaw
|
| 344 |
+
342,/t/dd00066,Medium engine (mid frequency)
|
| 345 |
+
343,/t/dd00067,Heavy engine (low frequency)
|
| 346 |
+
344,/m/01h82_,Engine knocking
|
| 347 |
+
345,/t/dd00130,Engine starting
|
| 348 |
+
346,/m/07pb8fc,Idling
|
| 349 |
+
347,/m/07q2z82,"Accelerating, revving, vroom"
|
| 350 |
+
348,/m/02dgv,Door
|
| 351 |
+
349,/m/03wwcy,Doorbell
|
| 352 |
+
350,/m/07r67yg,Ding-dong
|
| 353 |
+
351,/m/02y_763,Sliding door
|
| 354 |
+
352,/m/07rjzl8,Slam
|
| 355 |
+
353,/m/07r4wb8,Knock
|
| 356 |
+
354,/m/07qcpgn,Tap
|
| 357 |
+
355,/m/07q6cd_,Squeak
|
| 358 |
+
356,/m/0642b4,Cupboard open or close
|
| 359 |
+
357,/m/0fqfqc,Drawer open or close
|
| 360 |
+
358,/m/04brg2,"Dishes, pots, and pans"
|
| 361 |
+
359,/m/023pjk,"Cutlery, silverware"
|
| 362 |
+
360,/m/07pn_8q,Chopping (food)
|
| 363 |
+
361,/m/0dxrf,Frying (food)
|
| 364 |
+
362,/m/0fx9l,Microwave oven
|
| 365 |
+
363,/m/02pjr4,Blender
|
| 366 |
+
364,/m/02jz0l,"Water tap, faucet"
|
| 367 |
+
365,/m/0130jx,Sink (filling or washing)
|
| 368 |
+
366,/m/03dnzn,Bathtub (filling or washing)
|
| 369 |
+
367,/m/03wvsk,Hair dryer
|
| 370 |
+
368,/m/01jt3m,Toilet flush
|
| 371 |
+
369,/m/012xff,Toothbrush
|
| 372 |
+
370,/m/04fgwm,Electric toothbrush
|
| 373 |
+
371,/m/0d31p,Vacuum cleaner
|
| 374 |
+
372,/m/01s0vc,Zipper (clothing)
|
| 375 |
+
373,/m/03v3yw,Keys jangling
|
| 376 |
+
374,/m/0242l,Coin (dropping)
|
| 377 |
+
375,/m/01lsmm,Scissors
|
| 378 |
+
376,/m/02g901,"Electric shaver, electric razor"
|
| 379 |
+
377,/m/05rj2,Shuffling cards
|
| 380 |
+
378,/m/0316dw,Typing
|
| 381 |
+
379,/m/0c2wf,Typewriter
|
| 382 |
+
380,/m/01m2v,Computer keyboard
|
| 383 |
+
381,/m/081rb,Writing
|
| 384 |
+
382,/m/07pp_mv,Alarm
|
| 385 |
+
383,/m/07cx4,Telephone
|
| 386 |
+
384,/m/07pp8cl,Telephone bell ringing
|
| 387 |
+
385,/m/01hnzm,Ringtone
|
| 388 |
+
386,/m/02c8p,"Telephone dialing, DTMF"
|
| 389 |
+
387,/m/015jpf,Dial tone
|
| 390 |
+
388,/m/01z47d,Busy signal
|
| 391 |
+
389,/m/046dlr,Alarm clock
|
| 392 |
+
390,/m/03kmc9,Siren
|
| 393 |
+
391,/m/0dgbq,Civil defense siren
|
| 394 |
+
392,/m/030rvx,Buzzer
|
| 395 |
+
393,/m/01y3hg,"Smoke detector, smoke alarm"
|
| 396 |
+
394,/m/0c3f7m,Fire alarm
|
| 397 |
+
395,/m/04fq5q,Foghorn
|
| 398 |
+
396,/m/0l156k,Whistle
|
| 399 |
+
397,/m/06hck5,Steam whistle
|
| 400 |
+
398,/t/dd00077,Mechanisms
|
| 401 |
+
399,/m/02bm9n,"Ratchet, pawl"
|
| 402 |
+
400,/m/01x3z,Clock
|
| 403 |
+
401,/m/07qjznt,Tick
|
| 404 |
+
402,/m/07qjznl,Tick-tock
|
| 405 |
+
403,/m/0l7xg,Gears
|
| 406 |
+
404,/m/05zc1,Pulleys
|
| 407 |
+
405,/m/0llzx,Sewing machine
|
| 408 |
+
406,/m/02x984l,Mechanical fan
|
| 409 |
+
407,/m/025wky1,Air conditioning
|
| 410 |
+
408,/m/024dl,Cash register
|
| 411 |
+
409,/m/01m4t,Printer
|
| 412 |
+
410,/m/0dv5r,Camera
|
| 413 |
+
411,/m/07bjf,Single-lens reflex camera
|
| 414 |
+
412,/m/07k1x,Tools
|
| 415 |
+
413,/m/03l9g,Hammer
|
| 416 |
+
414,/m/03p19w,Jackhammer
|
| 417 |
+
415,/m/01b82r,Sawing
|
| 418 |
+
416,/m/02p01q,Filing (rasp)
|
| 419 |
+
417,/m/023vsd,Sanding
|
| 420 |
+
418,/m/0_ksk,Power tool
|
| 421 |
+
419,/m/01d380,Drill
|
| 422 |
+
420,/m/014zdl,Explosion
|
| 423 |
+
421,/m/032s66,"Gunshot, gunfire"
|
| 424 |
+
422,/m/04zjc,Machine gun
|
| 425 |
+
423,/m/02z32qm,Fusillade
|
| 426 |
+
424,/m/0_1c,Artillery fire
|
| 427 |
+
425,/m/073cg4,Cap gun
|
| 428 |
+
426,/m/0g6b5,Fireworks
|
| 429 |
+
427,/g/122z_qxw,Firecracker
|
| 430 |
+
428,/m/07qsvvw,"Burst, pop"
|
| 431 |
+
429,/m/07pxg6y,Eruption
|
| 432 |
+
430,/m/07qqyl4,Boom
|
| 433 |
+
431,/m/083vt,Wood
|
| 434 |
+
432,/m/07pczhz,Chop
|
| 435 |
+
433,/m/07pl1bw,Splinter
|
| 436 |
+
434,/m/07qs1cx,Crack
|
| 437 |
+
435,/m/039jq,Glass
|
| 438 |
+
436,/m/07q7njn,"Chink, clink"
|
| 439 |
+
437,/m/07rn7sz,Shatter
|
| 440 |
+
438,/m/04k94,Liquid
|
| 441 |
+
439,/m/07rrlb6,"Splash, splatter"
|
| 442 |
+
440,/m/07p6mqd,Slosh
|
| 443 |
+
441,/m/07qlwh6,Squish
|
| 444 |
+
442,/m/07r5v4s,Drip
|
| 445 |
+
443,/m/07prgkl,Pour
|
| 446 |
+
444,/m/07pqc89,"Trickle, dribble"
|
| 447 |
+
445,/t/dd00088,Gush
|
| 448 |
+
446,/m/07p7b8y,Fill (with liquid)
|
| 449 |
+
447,/m/07qlf79,Spray
|
| 450 |
+
448,/m/07ptzwd,Pump (liquid)
|
| 451 |
+
449,/m/07ptfmf,Stir
|
| 452 |
+
450,/m/0dv3j,Boiling
|
| 453 |
+
451,/m/0790c,Sonar
|
| 454 |
+
452,/m/0dl83,Arrow
|
| 455 |
+
453,/m/07rqsjt,"Whoosh, swoosh, swish"
|
| 456 |
+
454,/m/07qnq_y,"Thump, thud"
|
| 457 |
+
455,/m/07rrh0c,Thunk
|
| 458 |
+
456,/m/0b_fwt,Electronic tuner
|
| 459 |
+
457,/m/02rr_,Effects unit
|
| 460 |
+
458,/m/07m2kt,Chorus effect
|
| 461 |
+
459,/m/018w8,Basketball bounce
|
| 462 |
+
460,/m/07pws3f,Bang
|
| 463 |
+
461,/m/07ryjzk,"Slap, smack"
|
| 464 |
+
462,/m/07rdhzs,"Whack, thwack"
|
| 465 |
+
463,/m/07pjjrj,"Smash, crash"
|
| 466 |
+
464,/m/07pc8lb,Breaking
|
| 467 |
+
465,/m/07pqn27,Bouncing
|
| 468 |
+
466,/m/07rbp7_,Whip
|
| 469 |
+
467,/m/07pyf11,Flap
|
| 470 |
+
468,/m/07qb_dv,Scratch
|
| 471 |
+
469,/m/07qv4k0,Scrape
|
| 472 |
+
470,/m/07pdjhy,Rub
|
| 473 |
+
471,/m/07s8j8t,Roll
|
| 474 |
+
472,/m/07plct2,Crushing
|
| 475 |
+
473,/t/dd00112,"Crumpling, crinkling"
|
| 476 |
+
474,/m/07qcx4z,Tearing
|
| 477 |
+
475,/m/02fs_r,"Beep, bleep"
|
| 478 |
+
476,/m/07qwdck,Ping
|
| 479 |
+
477,/m/07phxs1,Ding
|
| 480 |
+
478,/m/07rv4dm,Clang
|
| 481 |
+
479,/m/07s02z0,Squeal
|
| 482 |
+
480,/m/07qh7jl,Creak
|
| 483 |
+
481,/m/07qwyj0,Rustle
|
| 484 |
+
482,/m/07s34ls,Whir
|
| 485 |
+
483,/m/07qmpdm,Clatter
|
| 486 |
+
484,/m/07p9k1k,Sizzle
|
| 487 |
+
485,/m/07qc9xj,Clicking
|
| 488 |
+
486,/m/07rwm0c,Clickety-clack
|
| 489 |
+
487,/m/07phhsh,Rumble
|
| 490 |
+
488,/m/07qyrcz,Plop
|
| 491 |
+
489,/m/07qfgpx,"Jingle, tinkle"
|
| 492 |
+
490,/m/07rcgpl,Hum
|
| 493 |
+
491,/m/07p78v5,Zing
|
| 494 |
+
492,/t/dd00121,Boing
|
| 495 |
+
493,/m/07s12q4,Crunch
|
| 496 |
+
494,/m/028v0c,Silence
|
| 497 |
+
495,/m/01v_m0,Sine wave
|
| 498 |
+
496,/m/0b9m1,Harmonic
|
| 499 |
+
497,/m/0hdsk,Chirp tone
|
| 500 |
+
498,/m/0c1dj,Sound effect
|
| 501 |
+
499,/m/07pt_g0,Pulse
|
| 502 |
+
500,/t/dd00125,"Inside, small room"
|
| 503 |
+
501,/t/dd00126,"Inside, large room or hall"
|
| 504 |
+
502,/t/dd00127,"Inside, public space"
|
| 505 |
+
503,/t/dd00128,"Outside, urban or manmade"
|
| 506 |
+
504,/t/dd00129,"Outside, rural or natural"
|
| 507 |
+
505,/m/01b9nn,Reverberation
|
| 508 |
+
506,/m/01jnbd,Echo
|
| 509 |
+
507,/m/096m7z,Noise
|
| 510 |
+
508,/m/06_y0by,Environmental noise
|
| 511 |
+
509,/m/07rgkc5,Static
|
| 512 |
+
510,/m/06xkwv,Mains hum
|
| 513 |
+
511,/m/0g12c5,Distortion
|
| 514 |
+
512,/m/08p9q4,Sidetone
|
| 515 |
+
513,/m/07szfh9,Cacophony
|
| 516 |
+
514,/m/0chx_,White noise
|
| 517 |
+
515,/m/0cj0r,Pink noise
|
| 518 |
+
516,/m/07p_0gm,Throbbing
|
| 519 |
+
517,/m/01jwx6,Vibration
|
| 520 |
+
518,/m/07c52,Television
|
| 521 |
+
519,/m/06bz3,Radio
|
| 522 |
+
520,/m/07hvw1,Field recording
|
yamnet_model/saved_model.pb
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:672af6e1e34fe15a42d45d70217fd39f97e10aef9b0effbf9b0bf7826fccd462
|
| 3 |
+
size 3176321
|
yamnet_model/variables/variables.data-00000-of-00001
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d6753f22f173b2a8b1ce78918eaae79bf0a41ca61f4cfe9a1b948c97ff094ddc
|
| 3 |
+
size 15077564
|
yamnet_model/variables/variables.index
ADDED
|
Binary file (7.4 kB). View file
|
|
|