birdnet-analyzer 2.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. birdnet_analyzer/__init__.py +8 -0
  2. birdnet_analyzer/analyze/__init__.py +5 -0
  3. birdnet_analyzer/analyze/__main__.py +4 -0
  4. birdnet_analyzer/analyze/cli.py +25 -0
  5. birdnet_analyzer/analyze/core.py +245 -0
  6. birdnet_analyzer/analyze/utils.py +701 -0
  7. birdnet_analyzer/audio.py +372 -0
  8. birdnet_analyzer/cli.py +707 -0
  9. birdnet_analyzer/config.py +242 -0
  10. birdnet_analyzer/eBird_taxonomy_codes_2021E.json +25280 -0
  11. birdnet_analyzer/embeddings/__init__.py +4 -0
  12. birdnet_analyzer/embeddings/__main__.py +3 -0
  13. birdnet_analyzer/embeddings/cli.py +13 -0
  14. birdnet_analyzer/embeddings/core.py +70 -0
  15. birdnet_analyzer/embeddings/utils.py +193 -0
  16. birdnet_analyzer/evaluation/__init__.py +195 -0
  17. birdnet_analyzer/evaluation/__main__.py +3 -0
  18. birdnet_analyzer/gui/__init__.py +23 -0
  19. birdnet_analyzer/gui/__main__.py +3 -0
  20. birdnet_analyzer/gui/analysis.py +174 -0
  21. birdnet_analyzer/gui/assets/arrow_down.svg +4 -0
  22. birdnet_analyzer/gui/assets/arrow_left.svg +4 -0
  23. birdnet_analyzer/gui/assets/arrow_right.svg +4 -0
  24. birdnet_analyzer/gui/assets/arrow_up.svg +4 -0
  25. birdnet_analyzer/gui/assets/gui.css +29 -0
  26. birdnet_analyzer/gui/assets/gui.js +94 -0
  27. birdnet_analyzer/gui/assets/img/birdnet-icon.ico +0 -0
  28. birdnet_analyzer/gui/assets/img/birdnet_logo.png +0 -0
  29. birdnet_analyzer/gui/assets/img/birdnet_logo_no_transparent.png +0 -0
  30. birdnet_analyzer/gui/assets/img/clo-logo-bird.svg +1 -0
  31. birdnet_analyzer/gui/embeddings.py +620 -0
  32. birdnet_analyzer/gui/evaluation.py +813 -0
  33. birdnet_analyzer/gui/localization.py +68 -0
  34. birdnet_analyzer/gui/multi_file.py +246 -0
  35. birdnet_analyzer/gui/review.py +527 -0
  36. birdnet_analyzer/gui/segments.py +191 -0
  37. birdnet_analyzer/gui/settings.py +129 -0
  38. birdnet_analyzer/gui/single_file.py +269 -0
  39. birdnet_analyzer/gui/species.py +95 -0
  40. birdnet_analyzer/gui/train.py +698 -0
  41. birdnet_analyzer/gui/utils.py +808 -0
  42. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_af.txt +6522 -0
  43. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_ar.txt +6522 -0
  44. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_bg.txt +6522 -0
  45. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_ca.txt +6522 -0
  46. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_cs.txt +6522 -0
  47. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_da.txt +6522 -0
  48. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_de.txt +6522 -0
  49. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_el.txt +6522 -0
  50. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_en_uk.txt +6522 -0
  51. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_es.txt +6522 -0
  52. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_fi.txt +6522 -0
  53. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_fr.txt +6522 -0
  54. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_he.txt +6522 -0
  55. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_hr.txt +6522 -0
  56. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_hu.txt +6522 -0
  57. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_in.txt +6522 -0
  58. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_is.txt +6522 -0
  59. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_it.txt +6522 -0
  60. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_ja.txt +6522 -0
  61. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_ko.txt +6522 -0
  62. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_lt.txt +6522 -0
  63. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_ml.txt +6522 -0
  64. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_nl.txt +6522 -0
  65. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_no.txt +6522 -0
  66. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_pl.txt +6522 -0
  67. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_pt_BR.txt +6522 -0
  68. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_pt_PT.txt +6522 -0
  69. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_ro.txt +6522 -0
  70. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_ru.txt +6522 -0
  71. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_sk.txt +6522 -0
  72. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_sl.txt +6522 -0
  73. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_sr.txt +6522 -0
  74. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_sv.txt +6522 -0
  75. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_th.txt +6522 -0
  76. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_tr.txt +6522 -0
  77. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_uk.txt +6522 -0
  78. birdnet_analyzer/labels/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels_zh.txt +6522 -0
  79. birdnet_analyzer/lang/de.json +335 -0
  80. birdnet_analyzer/lang/en.json +335 -0
  81. birdnet_analyzer/lang/fi.json +335 -0
  82. birdnet_analyzer/lang/fr.json +335 -0
  83. birdnet_analyzer/lang/id.json +335 -0
  84. birdnet_analyzer/lang/pt-br.json +335 -0
  85. birdnet_analyzer/lang/ru.json +335 -0
  86. birdnet_analyzer/lang/se.json +335 -0
  87. birdnet_analyzer/lang/tlh.json +335 -0
  88. birdnet_analyzer/lang/zh_TW.json +335 -0
  89. birdnet_analyzer/model.py +1243 -0
  90. birdnet_analyzer/search/__init__.py +3 -0
  91. birdnet_analyzer/search/__main__.py +3 -0
  92. birdnet_analyzer/search/cli.py +12 -0
  93. birdnet_analyzer/search/core.py +78 -0
  94. birdnet_analyzer/search/utils.py +111 -0
  95. birdnet_analyzer/segments/__init__.py +3 -0
  96. birdnet_analyzer/segments/__main__.py +3 -0
  97. birdnet_analyzer/segments/cli.py +14 -0
  98. birdnet_analyzer/segments/core.py +78 -0
  99. birdnet_analyzer/segments/utils.py +394 -0
  100. birdnet_analyzer/species/__init__.py +3 -0
  101. birdnet_analyzer/species/__main__.py +3 -0
  102. birdnet_analyzer/species/cli.py +14 -0
  103. birdnet_analyzer/species/core.py +35 -0
  104. birdnet_analyzer/species/utils.py +75 -0
  105. birdnet_analyzer/train/__init__.py +3 -0
  106. birdnet_analyzer/train/__main__.py +3 -0
  107. birdnet_analyzer/train/cli.py +14 -0
  108. birdnet_analyzer/train/core.py +113 -0
  109. birdnet_analyzer/train/utils.py +847 -0
  110. birdnet_analyzer/translate.py +104 -0
  111. birdnet_analyzer/utils.py +419 -0
  112. birdnet_analyzer-2.0.0.dist-info/METADATA +129 -0
  113. birdnet_analyzer-2.0.0.dist-info/RECORD +117 -0
  114. birdnet_analyzer-2.0.0.dist-info/WHEEL +5 -0
  115. birdnet_analyzer-2.0.0.dist-info/entry_points.txt +11 -0
  116. birdnet_analyzer-2.0.0.dist-info/licenses/LICENSE +19 -0
  117. birdnet_analyzer-2.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,4 @@
1
+ <svg width="50" height="50" viewBox="0 0 50 50" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="5" y="5" width="40" height="40" rx="5" ry="5" fill="#ccc" stroke="#888" stroke-width="2"/>
3
+ <polygon points="25,36 12,24 20,24 20,16 30,16 30,24 38,24" fill="black"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="50" height="50" viewBox="0 0 50 50" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="5" y="5" width="40" height="40" rx="5" ry="5" fill="#ccc" stroke="#888" stroke-width="2"/>
3
+ <polygon points="14,25 26,12 26,20 34,20 34,30 26,30 26,38" fill="black"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="50" height="50" viewBox="0 0 50 50" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="5" y="5" width="40" height="40" rx="5" ry="5" fill="#ccc" stroke="#888" stroke-width="2"/>
3
+ <polygon points="36,25 24,12 24,20 16,20 16,30 24,30 24,38" fill="black"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="50" height="50" viewBox="0 0 50 50" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="5" y="5" width="40" height="40" rx="5" ry="5" fill="#ccc" stroke="#888" stroke-width="2"/>
3
+ <polygon points="25,14 12,26 20,26 20,34 30,34 30,26 38,26" fill="black"/>
4
+ </svg>
@@ -0,0 +1,29 @@
1
+ footer {
2
+ display: none !important;
3
+ }
4
+
5
+ #single_file_audio,
6
+ #single_file_audio * {
7
+ max-height: 81.6px;
8
+ min-height: 0;
9
+ }
10
+
11
+ #update-available a {
12
+ text-decoration: none;
13
+ }
14
+
15
+ :root {
16
+ --block-title-text-color: var(--neutral-800);
17
+ --block-info-text-color: var(--neutral-500);
18
+ }
19
+
20
+ #single-file-output td:first-of-type span {
21
+ text-align: center;
22
+ }
23
+
24
+ #embeddings-search-results {
25
+ max-height: 1107px;
26
+ overflow: auto;
27
+ flex-wrap: nowrap;
28
+ padding-right: 5px;
29
+ }
@@ -0,0 +1,94 @@
1
+ function init() {
2
+ function checkForNewerVersion() {
3
+ let gui_version_element = document.getElementById("current-version")
4
+
5
+ if (gui_version_element && gui_version_element.textContent != "main") {
6
+ console.log("Checking for newer version...");
7
+
8
+ function sendGetRequest(url) {
9
+ return new Promise((resolve, reject) => {
10
+ const xhr = new XMLHttpRequest();
11
+ xhr.open("GET", url);
12
+ xhr.onload = () => {
13
+ if (xhr.status === 200) {
14
+ resolve(xhr.responseText);
15
+ } else {
16
+ reject(new Error(`Request failed with status ${xhr.status}`));
17
+ }
18
+ };
19
+ xhr.onerror = () => {
20
+ reject(new Error("Request failed"));
21
+ };
22
+ xhr.send();
23
+ });
24
+ }
25
+
26
+ const apiUrl = "https://api.github.com/repos/birdnet-team/BirdNET-Analyzer/releases/latest";
27
+
28
+ sendGetRequest(apiUrl)
29
+ .then(response => {
30
+ const current_version = document.getElementById("current-version").textContent;
31
+ const response_object = JSON.parse(response);
32
+ const latest_version = response_object.tag_name;
33
+
34
+ if (latest_version.startsWith("v")) {
35
+ latest_version = latest_version.slice(1);
36
+ }
37
+
38
+ if (current_version !== latest_version) {
39
+ const updateNotification = document.getElementById("update-available");
40
+
41
+ updateNotification.style.display = "block";
42
+ const linkElement = updateNotification.getElementsByTagName("a")[0]
43
+ linkElement.href = response_object.html_url;
44
+ linkElement.target = "_blank";
45
+ }
46
+ })
47
+ .catch(error => {
48
+ console.error(error);
49
+ });
50
+ }
51
+ }
52
+
53
+ function overwriteStyles() {
54
+ console.log("Overwriting styles...");
55
+ const styles = document.createElement("style");
56
+ styles.innerHTML = "@media (width <= 1024px) { .app {max-width: initial !important;}}";
57
+ document.head.appendChild(styles);
58
+ }
59
+
60
+ function bindReviewKeyShortcuts() {
61
+ const posBtn = document.getElementById("positive-button");
62
+ const negBtn = document.getElementById("negative-button");
63
+ const skipBtn = document.getElementById("skip-button");
64
+ const undoBtn = document.getElementById("undo-button");
65
+
66
+ if (!posBtn || !negBtn) return;
67
+
68
+ console.log("Binding review key shortcuts...");
69
+
70
+ document.addEventListener("keydown", function (event) {
71
+ const reviewTabBtn = document.getElementById("review-tab-button");
72
+
73
+ if (reviewTabBtn.ariaSelected === "false") return;
74
+
75
+ if (event.key === "ArrowUp") {
76
+ event.preventDefault();
77
+ posBtn.click();
78
+ } else if (event.key === "ArrowDown") {
79
+ event.preventDefault();
80
+ negBtn.click();
81
+ } else if (event.key === "ArrowLeft") {
82
+ event.preventDefault();
83
+ undoBtn.click();
84
+ } else if (event.key === "ArrowRight") {
85
+ event.preventDefault();
86
+ skipBtn.click();
87
+ }
88
+ });
89
+ }
90
+
91
+ checkForNewerVersion();
92
+ overwriteStyles();
93
+ bindReviewKeyShortcuts();
94
+ }
@@ -0,0 +1 @@
1
+ <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 206.87 116.66"><defs><style>.cls-1{fill:#f4e505;}.cls-2{fill:#e31e26;}.cls-3{fill:#fff;}</style></defs><path d="M206.37,16.68s-16.44-4.34-22.76-4.9c0,0-25,13.5-32,18a19.16,19.16,0,0,0-8.67,13.89l35.71-26.32h28C207.31,17.39,206.37,16.68,206.37,16.68Z" transform="translate(0 0.63)"/><path d="M148.55,27.33c7.32-4.9,32.62-18.73,32.62-18.73l0,0A30.69,30.69,0,0,0,159-.63a44.23,44.23,0,0,0-20.71,5H0c0,3.71,5.6,6.56,12.14,6.56H52.36L86.62,35.12V71.37c0,15.73,8.26,29.44,21.78,37.35S128.68,116,138.63,116V46.87C138.63,40.78,140.47,32.73,148.55,27.33ZM167.87,8a2.51,2.51,0,1,1-2.51,2.51A2.51,2.51,0,0,1,167.87,8Zm-29.13,13,15.69-8.68,6.89.57L138.74,25.36Z" transform="translate(0 0.63)"/><path class="cls-1" d="M52.36,10.91H110c-12.89,0-23.4,10.35-23.4,24.21Z" transform="translate(0 0.63)"/><path class="cls-2" d="M178,10.33A31.71,31.71,0,0,0,157.78,2.9V-.61l1.25,0A30.63,30.63,0,0,1,181.17,8.6Z" transform="translate(0 0.63)"/><path class="cls-2" d="M178.63,17.39l-25,18.43s-.29-2.7,3.47-5.74,26.5-18.3,26.5-18.3Z" transform="translate(0 0.63)"/><path class="cls-3" d="M128.14,64.47V52.15c0-5.18-2.11-8.77-6.93-12.18L100.79,25.54a14.32,14.32,0,0,0,2,21Z" transform="translate(0 0.63)"/><path class="cls-3" d="M128.14,64.47V52.15c0-5.18-2.11-8.77-6.93-12.18L100.79,25.54a14.32,14.32,0,0,0,2,21Z" transform="translate(0 0.63)"/><path class="cls-3" d="M151.59,29.82c7-4.54,32-18,32-18a16.24,16.24,0,0,0-2.41-3.15l0,0s-25.3,13.83-32.62,18.73-9.57,12.17-9.87,18l-.05,1.51,4.29-3.16A19.16,19.16,0,0,1,151.59,29.82Z" transform="translate(0 0.63)"/><path class="cls-3" d="M167.87,8a2.51,2.51,0,1,1-2.51,2.51A2.51,2.51,0,0,1,167.87,8Z" transform="translate(0 0.63)"/><polygon class="cls-3" points="138.74 21.57 154.43 12.89 161.32 13.45 138.74 25.98 138.74 21.57"/></svg>