From 96dc790eb1dc94ee827322eaec962ff874d6d348 Mon Sep 17 00:00:00 2001 From: peichins Date: Thu, 4 Jul 2024 15:13:50 +1000 Subject: [PATCH] added mgw --- README.md | 59 +-------------------------- models/mgw/mgw_v05.keras | Bin 0 -> 100274 bytes models/mgw/mgw_v05.keras.labels.json | 1 + scripts/Readme.md | 7 +++- scripts/analyze.ps1 | 3 +- scripts/analyze.sh | 38 +++++++++-------- src/default_configs/mgw.classify.yml | 2 + tests/docker_tests/test_analyze.py | 5 ++- 8 files changed, 37 insertions(+), 78 deletions(-) create mode 100755 models/mgw/mgw_v05.keras create mode 100755 models/mgw/mgw_v05.keras.labels.json create mode 100644 src/default_configs/mgw.classify.yml diff --git a/README.md b/README.md index 8a03252..6363860 100644 --- a/README.md +++ b/README.md @@ -32,18 +32,14 @@ The `generate` command accepts one input file or one input folder and one output #### Usage ``` -generate [-F|--format] [-c|--config ] +generate The file to generate embeddings for The directory to write the embeddings to -F|--format [csv|parquet] The format of the embeddings file: `CSV`` or `Parquet`` -c|--config An optional configuration file to use ``` -#### Configuration file -```yaml -hop_length_seconds: 5.0 -``` #### Examples @@ -75,60 +71,9 @@ classify [-F|--format] [-c|--config ] ] - The file to generate embeddings for - The directory to write the embeddings to - The file to use as the query - -c|--config An optional configuration file to use -``` - -#### Configuration file - -```yaml -hop_length_seconds: 5.0 +classifier: keras_saved_model_path ``` -#### Example - -```bash -cd /data -curl -o audio.wav https://api.ecosounds.org/audio_recordings/123.wav -curl -o query.wav https://api.ecosounds.org/audio_recordings/456/media.wav?start=10&end=15 -docker run -v /data:/data perch-runner distance -c /data/config.yml /data/audio.wav /data/query.wav /data/output -``` ## Batch Mode diff --git a/models/mgw/mgw_v05.keras b/models/mgw/mgw_v05.keras new file mode 100755 index 0000000000000000000000000000000000000000..67bc57214dc5069333631719dba48f834c29a2a3 GIT binary patch literal 100274 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 {N7I1Vi5O;8B`6j>$2`F9Q2uv1m_7dhiCE8?J+- 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 SKmNQ?cV^CE4=vt literal 0 HcmV?d00001 diff --git a/models/mgw/mgw_v05.keras.labels.json b/models/mgw/mgw_v05.keras.labels.json new file mode 100755 index 0000000..631fec7 --- /dev/null +++ b/models/mgw/mgw_v05.keras.labels.json @@ -0,0 +1 @@ +["mgw", "negative"] \ No newline at end of file diff --git a/scripts/Readme.md b/scripts/Readme.md index 4d13b41..eac8bb0 100644 --- a/scripts/Readme.md +++ b/scripts/Readme.md @@ -25,8 +25,11 @@ Notes 1. Open a terminal window 2. Change directory to this scripts directory 3. Run the following command: - - windows: `powershell -ExecutionPolicy Bypass -File analyze.ps1 classify [path_to_audio_folder] [path_to_embeddings_folder] 'pw'` - - linux or intel mac: `./analyze.sh classify [path_to_embeddings_output_folder] [path_to_classifications_output_folder] 'pw'` + - windows: `powershell -ExecutionPolicy Bypass -File analyze.ps1 classify [path_to_audio_folder] [path_to_embeddings_folder] '[recognizer_id]'` + - linux or intel mac: `./analyze.sh classify [path_to_embeddings_output_folder] [path_to_classifications_output_folder] '[recognizer_id]'` + - where [recognizer_id] is one of + - 'pw' (Plains wanderer) + - 'mgw' (Mukarrthippi graw wren) Notes diff --git a/scripts/analyze.ps1 b/scripts/analyze.ps1 index dcac679..9ac0dce 100644 --- a/scripts/analyze.ps1 +++ b/scripts/analyze.ps1 @@ -39,10 +39,11 @@ $config = "" $recognizer_configs = @{ "pw" = "pw.classify.yml" "cgw" = "cgw.classify.yml" + "mgw" = "mgw.classify.yml" } # Check if the recognizer argument has been provided -if ($recognizer) { +if ($recognizer -and $analysis -eq "classify") { # Check if the provided recognizer is supported and set the config variable if ($recognizer_configs.ContainsKey($recognizer)) { $config = $recognizer_configs[$recognizer] diff --git a/scripts/analyze.sh b/scripts/analyze.sh index 58ff5dd..728e399 100755 --- a/scripts/analyze.sh +++ b/scripts/analyze.sh @@ -35,27 +35,33 @@ fi # Initialize command with a default value command="" -declare -A recognizer_configs -recognizer_configs["pw"]="pw.classify.yml" -recognizer_configs["cgw"]="cgw.classify.yml" - -# Check if the recognizer argument has been provided -if [[ -n "$recognizer" ]]; then - # Check if the provided recognizer is supported and set the config variable - if [[ -n ${recognizer_configs[$recognizer]} ]]; then - config=${recognizer_configs[$recognizer]} - echo "Using config file: $config" - config="--config $config" +# if analysis is 'classify' +if [[ "$analysis" == "classify" ]]; then + declare -A recognizer_configs + recognizer_configs["pw"]="pw.classify.yml" + recognizer_configs["cgw"]="cgw.classify.yml" + recognizer_configs["mgw"]="mgw.classify.yml" + + # Check if the recognizer argument has been provided + if [[ -n "$recognizer" ]]; then + # Check if the provided recognizer is supported and set the config variable + if [[ -n ${recognizer_configs[$recognizer]} ]]; then + config=${recognizer_configs[$recognizer]} + echo "Using config file: $config" + config="--config $config" + else + echo "Recognizer $recognizer not supported" + exit 1 + fi else - echo "Recognizer $recognizer not supported" - exit 1 + # Set config variable to an empty string if no recognizer is provided + config="" fi -else - # Set config variable to an empty string if no recognizer is provided - config="" fi + + # paths to things inside the container, to be mounted # Determine input container path diff --git a/src/default_configs/mgw.classify.yml b/src/default_configs/mgw.classify.yml new file mode 100644 index 0000000..39ecfc4 --- /dev/null +++ b/src/default_configs/mgw.classify.yml @@ -0,0 +1,2 @@ +classifier: mgw +inherit: classify.yml diff --git a/tests/docker_tests/test_analyze.py b/tests/docker_tests/test_analyze.py index 66a9202..61a1921 100644 --- a/tests/docker_tests/test_analyze.py +++ b/tests/docker_tests/test_analyze.py @@ -7,7 +7,8 @@ ["pwsh", "-ExecutionPolicy", "Bypass", "-File", "./scripts/analyze.ps1"] ] -index = 1 +index = 0 +#image = "pr10:latest" def test_analyze_script_classify(): @@ -19,7 +20,7 @@ def test_analyze_script_classify(): shutil.copy("tests/files/embeddings/100sec.parquet", two) # Run the embed helper script - command = scripts[index] + ["classify", "./tests/input/", "./tests/output/", "pw"] + command = scripts[index] + ["classify", "./tests/input/", "./tests/output/", "mgw"] print(f'running command: {" ".join(command)}') subprocess.run(command, check=True)