diff --git a/birdnet_analyzer/gui/assets/gui.css b/birdnet_analyzer/gui/assets/gui.css index 882aec8a4..6ab268a13 100644 --- a/birdnet_analyzer/gui/assets/gui.css +++ b/birdnet_analyzer/gui/assets/gui.css @@ -46,4 +46,20 @@ footer { resize: none !important; text-overflow: ellipsis !important; text-align: left !important; +} + +.info-accordion-dark { + background-color: #2980b9; +} + +.info-accordion { + background-color: rgba(17, 38, 224, 0.6); +} + +.info-accordion p { + color: white; +} + +.info-accordion button { + color: white; } \ No newline at end of file diff --git a/birdnet_analyzer/gui/embeddings.py b/birdnet_analyzer/gui/embeddings.py index a1f69d556..827e10bb1 100644 --- a/birdnet_analyzer/gui/embeddings.py +++ b/birdnet_analyzer/gui/embeddings.py @@ -117,6 +117,11 @@ def build_embeddings_tab() -> gu.TAB_BUILDER_RESULT: input_directory_state = gr.State() db_directory_state = gr.State() + gu.info_box( + description=loc.localize("embeddings-tab-info-text"), + title=loc.localize("embeddings-tab-info-title"), + ) + def select_directory_to_state_and_tb(current, state_key=None): path = ( gu.select_directory(collect_files=False, state_key=state_key) @@ -324,7 +329,7 @@ def select_file_output_directory_and_update_tb(current): progress_plot = gr.Plot(show_label=False) start_btn = gr.Button( - loc.localize("embeddings-tab-start-button-label"), variant="huggingface" + loc.localize("embeddings-tab-start-button-label"), variant="primary" ) start_btn.click( diff --git a/birdnet_analyzer/gui/evaluation.py b/birdnet_analyzer/gui/evaluation.py index 829e7a98a..c90f1424e 100644 --- a/birdnet_analyzer/gui/evaluation.py +++ b/birdnet_analyzer/gui/evaluation.py @@ -387,6 +387,11 @@ def update_selections( prediction_files_state = gr.State() plot_name_state = gr.State() + gu.info_box( + description=loc.localize("eval-tab-info-text"), + title=loc.localize("eval-tab-info-title"), + ) + def get_selection_tables(directory): from pathlib import Path @@ -668,7 +673,7 @@ def select_directory_on_empty(): calculate_button = gr.Button( loc.localize("eval-tab-calculate-metrics-button-label"), - variant="huggingface", + variant="primary", ) with gr.Column(visible=False) as action_col: diff --git a/birdnet_analyzer/gui/multi_file.py b/birdnet_analyzer/gui/multi_file.py index 10622a0c6..67fa1cf75 100644 --- a/birdnet_analyzer/gui/multi_file.py +++ b/birdnet_analyzer/gui/multi_file.py @@ -111,6 +111,11 @@ def build_multi_analysis_tab() -> gu.TAB_BUILDER_RESULT: input_directory_state = gr.State() output_directory_predict_state = gr.State() + gu.info_box( + description=loc.localize("multi-tab-info-text"), + title=loc.localize("multi-tab-info-title"), + ) + with gr.Group(), gr.Row(equal_height=True): select_directory_btn = gr.Button( loc.localize("multi-tab-input-selection-button-label"), @@ -222,7 +227,7 @@ def select_directory_wrapper(): bs_number, producers_number, workers_number = gu.computing_settings() start_batch_analysis_btn = gr.Button( - loc.localize("analyze-start-button-label"), variant="huggingface" + loc.localize("analyze-start-button-label"), variant="primary" ) result_grid = gr.List(headers=[""]) inputs = [ diff --git a/birdnet_analyzer/gui/review.py b/birdnet_analyzer/gui/review.py index 8a4d0488f..cfd6652ca 100644 --- a/birdnet_analyzer/gui/review.py +++ b/birdnet_analyzer/gui/review.py @@ -148,6 +148,11 @@ def create_log_plot(positives, negatives, fig_num=None): } ) + gu.info_box( + description=loc.localize("review-tab-info-text"), + title=loc.localize("review-tab-info-title"), + ) + select_directory_btn = gr.Button( loc.localize("review-tab-input-directory-button-label") ) diff --git a/birdnet_analyzer/gui/search.py b/birdnet_analyzer/gui/search.py index fe35317b3..83e52fad6 100644 --- a/birdnet_analyzer/gui/search.py +++ b/birdnet_analyzer/gui/search.py @@ -112,6 +112,11 @@ def build_search_tab() -> gu.TAB_BUILDER_RESULT: export_state = gr.State({}) hidden_audio = gr.Audio(visible="hidden", autoplay=True, type="numpy") + gu.info_box( + description=loc.localize("embeddings-search-tab-info-text"), + title=loc.localize("embeddings-search-tab-info-title"), + ) + with gr.Row(): with gr.Column(): with gr.Group(), gr.Row(equal_height=True): @@ -236,7 +241,7 @@ def build_search_tab() -> gu.TAB_BUILDER_RESULT: ) search_btn = gr.Button( loc.localize("embeddings-search-start-button-label"), - variant="huggingface", + variant="primary", ) with gr.Column(): diff --git a/birdnet_analyzer/gui/segments.py b/birdnet_analyzer/gui/segments.py index 377ea4ecc..72565627e 100644 --- a/birdnet_analyzer/gui/segments.py +++ b/birdnet_analyzer/gui/segments.py @@ -80,6 +80,11 @@ def build_segments_tab() -> gu.TAB_BUILDER_RESULT: result_directory_state = gr.State() output_directory_state = gr.State() + gu.info_box( + description=loc.localize("segments-tab-info-text"), + title=loc.localize("segments-tab-info-title"), + ) + def select_directory_to_state_and_tb(state_key): selection = gu.select_directory(collect_files=False, state_key=state_key) if selection: @@ -244,7 +249,7 @@ def select_directory_to_state_and_tb(state_key): ) extract_segments_btn = gr.Button( - loc.localize("segments-tab-extract-button-label"), variant="huggingface" + loc.localize("segments-tab-extract-button-label"), variant="primary" ) result_grid = gr.List(headers=[""]) diff --git a/birdnet_analyzer/gui/single_file.py b/birdnet_analyzer/gui/single_file.py index bc64be8a6..f8ae59694 100644 --- a/birdnet_analyzer/gui/single_file.py +++ b/birdnet_analyzer/gui/single_file.py @@ -185,7 +185,7 @@ def build_single_analysis_tab() -> gu.TAB_BUILDER_RESULT: single_file_analyze = gr.Button( loc.localize("analyze-start-button-label"), - variant="huggingface", + variant="primary", interactive=False, ) @@ -304,7 +304,7 @@ def try_generate_spectrogram(audio_path, generate_spectrogram): try_generate_spectrogram, inputs=[audio_path_state, generate_spectrogram_cb], outputs=[spectrogram_group, spectrogram_output], - show_progress_on=generate_spectrogram_cb + show_progress_on=generate_spectrogram_cb, ) select_file_button.click( diff --git a/birdnet_analyzer/gui/species.py b/birdnet_analyzer/gui/species.py index ef21c9c4d..68d60d12f 100644 --- a/birdnet_analyzer/gui/species.py +++ b/birdnet_analyzer/gui/species.py @@ -31,6 +31,11 @@ def build_species_tab() -> gu.TAB_BUILDER_RESULT: with gr.Tab(loc.localize("species-tab-title")) as species_tab: output_directory_state = gr.State() + gu.info_box( + description=loc.localize("species-tab-info-text"), + title=loc.localize("species-tab-info-title"), + ) + with gr.Group(), gr.Row(equal_height=True): select_directory_btn = gr.Button( loc.localize("species-tab-select-output-directory-button-label"), @@ -86,7 +91,7 @@ def select_directory_and_update_tb(name_tb): locale = gu.locale() start_btn = gr.Button( - loc.localize("species-tab-start-button-label"), variant="huggingface" + loc.localize("species-tab-start-button-label"), variant="primary" ) start_btn.click( run_species_list, diff --git a/birdnet_analyzer/gui/train.py b/birdnet_analyzer/gui/train.py index 7ed288be1..a0c54df66 100644 --- a/birdnet_analyzer/gui/train.py +++ b/birdnet_analyzer/gui/train.py @@ -253,6 +253,11 @@ def build_train_tab() -> gu.TAB_BUILDER_RESULT: output_directory_state = gr.State() test_data_dir_state = gr.State() + gu.info_box( + description=loc.localize("training-tab-info-text"), + title=loc.localize("training-tab-info-title"), + ) + with gr.Group(), gr.Row(equal_height=True): select_directory_btn = gr.Button( loc.localize("training-tab-input-selection-button-label"), @@ -808,7 +813,7 @@ def on_autotune_change(value): ) start_training_button = gr.Button( loc.localize("training-tab-start-training-button-label"), - variant="huggingface", + variant="primary", ) def train_and_show_metrics(*args): diff --git a/birdnet_analyzer/gui/utils.py b/birdnet_analyzer/gui/utils.py index e1af98ae2..395aca262 100644 --- a/birdnet_analyzer/gui/utils.py +++ b/birdnet_analyzer/gui/utils.py @@ -8,6 +8,7 @@ import warnings from collections.abc import Callable from contextlib import suppress +from html import escape from typing import Literal, cast, get_args import gradio as gr @@ -1017,6 +1018,22 @@ def computing_settings(): return bs_number, producers_number, workers_number +def info_box(description: str, title="Info") -> gr.HTML: + title = escape(title) + description = escape(description) + + with gr.Accordion( + title, + elem_classes="info-accordion-dark" + if settings.theme() == "dark" + else "info-accordion", + open=False, + ) as c: + gr.Markdown(description) + + return c + + def slider_to_value(value: float): return max(0.1, 1.0 / (value * -1)) if value < 0 else max(1.0, float(value)) @@ -1111,4 +1128,4 @@ def update_plots(*args): ctypes.sizeof(wintypes.BOOL), ) - webview.start(private_mode=False) + webview.start(private_mode=False, debug=True) diff --git a/birdnet_analyzer/lang/de.json b/birdnet_analyzer/lang/de.json index 08ce880f1..2eec726c0 100644 --- a/birdnet_analyzer/lang/de.json +++ b/birdnet_analyzer/lang/de.json @@ -389,5 +389,21 @@ "validation-no-valid-classifier-name": "Bitte geben Sie einen gültigen Namen für den Klassifikator an.", "validation-no-valid-epoch-number": "Bitte geben Sie eine gültige Anzahl von Epochen an.", "validation-no-valid-frequency": "Bitte geben Sie eine gültige Frequenz an", - "validation-no-valid-learning-rate": "Bitte geben Sie eine gültige Lernrate an." + "validation-no-valid-learning-rate": "Bitte geben Sie eine gültige Lernrate an.", + "multi-tab-info-text": "Analyze all audio files in a directory recursively. Select an input folder, review the sample list, choose an output location and result formats, adjust settings if needed, then start the batch run.", + "multi-tab-info-title": "Info", + "embeddings-search-tab-info-text": "Search an embeddings database with a query sample. Select the database and audio root, choose a query clip, tune the search options, then review or export the closest matches.", + "embeddings-search-tab-info-title": "Info", + "embeddings-tab-info-text": "Build an embeddings database from a directory of audio files. Choose the source audio and database location, adjust settings if needed, then generate the database for later search and review.", + "embeddings-tab-info-title": "Info", + "eval-tab-info-text": "Compare prediction files against annotations. Upload both sets, confirm the column mapping, calculate the metrics, then inspect plots and export the result tables if needed.", + "eval-tab-info-title": "Info", + "review-tab-info-text": "Review extracted segments one species at a time. Select a directory, step through the clips, mark each item as positive or negative, and use the history and regression plot to track progress.", + "review-tab-info-title": "Info", + "segments-tab-info-text": "Extract segments from analysis results. Select the source audio, result files, and output folder, set the collection filters, then create a segment set for review or training.", + "segments-tab-info-title": "Info", + "species-tab-info-text": "Generate a species list for a location. Choose where to save the file, set the coordinates and seasonal filters, then export the list for later analysis.", + "species-tab-info-title": "Info", + "training-tab-info-text": "Train a custom classifier from labeled folders. Select the training data and output location, optionally add test data and preprocessing settings, then run training and review the metrics.", + "training-tab-info-title": "Info" } diff --git a/birdnet_analyzer/lang/en.json b/birdnet_analyzer/lang/en.json index 3fa95b7ac..d88fa4d5e 100644 --- a/birdnet_analyzer/lang/en.json +++ b/birdnet_analyzer/lang/en.json @@ -163,6 +163,8 @@ "multi-tab-additional-column-week-label": "Week", "multi-tab-additional-columns-checkbox-info": "Adds additional columns to the output. \"Start (s)\", \"End (s)\", \"Scientific name\", \"Common name\", \"Confidence\", \"File\" are already included.", "multi-tab-additional-columns-checkbox-label": "Additional columns for CSV", + "multi-tab-info-text": "Analyze all audio files in a directory recursively. Select an input folder, review the sample list, choose an output location and result formats, adjust settings if needed, then start the batch run.", + "multi-tab-info-title": "Info", "multi-tab-input-selection-button-label": "Select input directory (recursive)", "multi-tab-input-selection-textbox-placeholder": "No input directory selected", "multi-tab-more-files-label": "more...", @@ -389,5 +391,19 @@ "validation-no-valid-classifier-name": "Please enter a valid name for the classifier.", "validation-no-valid-epoch-number": "Please enter a valid number of epochs.", "validation-no-valid-frequency": "Please enter a valid frequency in", - "validation-no-valid-learning-rate": "Please enter a valid learning rate." + "validation-no-valid-learning-rate": "Please enter a valid learning rate.", + "embeddings-search-tab-info-text": "Search an embeddings database with a query sample. Select the database and audio root, choose a query clip, tune the search options, then review or export the closest matches.", + "embeddings-search-tab-info-title": "Info", + "embeddings-tab-info-text": "Build an embeddings database from a directory of audio files. Choose the source audio and database location, adjust settings if needed, then generate the database for later search and review.", + "embeddings-tab-info-title": "Info", + "eval-tab-info-text": "Compare prediction files against annotations. Upload both sets, confirm the column mapping, calculate the metrics, then inspect plots and export the result tables if needed.", + "eval-tab-info-title": "Info", + "review-tab-info-text": "Review extracted segments one species at a time. Select a directory, step through the clips, mark each item as positive or negative, and use the history and regression plot to track progress.", + "review-tab-info-title": "Info", + "segments-tab-info-text": "Extract segments from analysis results. Select the source audio, result files, and output folder, set the collection filters, then create a segment set for review or training.", + "segments-tab-info-title": "Info", + "species-tab-info-text": "Generate a species list for a location. Choose where to save the file, set the coordinates and seasonal filters, then export the list for later analysis.", + "species-tab-info-title": "Info", + "training-tab-info-text": "Train a custom classifier from labeled folders. Select the training data and output location, optionally add test data and preprocessing settings, then run training and review the metrics.", + "training-tab-info-title": "Info" } \ No newline at end of file diff --git a/birdnet_analyzer/lang/fi.json b/birdnet_analyzer/lang/fi.json index 7080400e1..bcafa00af 100644 --- a/birdnet_analyzer/lang/fi.json +++ b/birdnet_analyzer/lang/fi.json @@ -389,5 +389,21 @@ "validation-no-valid-classifier-name": "Anna kelvollinen nimi luokittelijalle.", "validation-no-valid-epoch-number": "Anna kelvollinen aikakausien määrä.", "validation-no-valid-frequency": "Anna kelvollinen taajuus", - "validation-no-valid-learning-rate": "Anna kelvollinen oppimistahti." + "validation-no-valid-learning-rate": "Anna kelvollinen oppimistahti.", + "multi-tab-info-text": "Analyze all audio files in a directory recursively. Select an input folder, review the sample list, choose an output location and result formats, adjust settings if needed, then start the batch run.", + "multi-tab-info-title": "Info", + "embeddings-search-tab-info-text": "Search an embeddings database with a query sample. Select the database and audio root, choose a query clip, tune the search options, then review or export the closest matches.", + "embeddings-search-tab-info-title": "Info", + "embeddings-tab-info-text": "Build an embeddings database from a directory of audio files. Choose the source audio and database location, adjust settings if needed, then generate the database for later search and review.", + "embeddings-tab-info-title": "Info", + "eval-tab-info-text": "Compare prediction files against annotations. Upload both sets, confirm the column mapping, calculate the metrics, then inspect plots and export the result tables if needed.", + "eval-tab-info-title": "Info", + "review-tab-info-text": "Review extracted segments one species at a time. Select a directory, step through the clips, mark each item as positive or negative, and use the history and regression plot to track progress.", + "review-tab-info-title": "Info", + "segments-tab-info-text": "Extract segments from analysis results. Select the source audio, result files, and output folder, set the collection filters, then create a segment set for review or training.", + "segments-tab-info-title": "Info", + "species-tab-info-text": "Generate a species list for a location. Choose where to save the file, set the coordinates and seasonal filters, then export the list for later analysis.", + "species-tab-info-title": "Info", + "training-tab-info-text": "Train a custom classifier from labeled folders. Select the training data and output location, optionally add test data and preprocessing settings, then run training and review the metrics.", + "training-tab-info-title": "Info" } diff --git a/birdnet_analyzer/lang/fr.json b/birdnet_analyzer/lang/fr.json index 79fe3750a..ca5bf8f38 100644 --- a/birdnet_analyzer/lang/fr.json +++ b/birdnet_analyzer/lang/fr.json @@ -389,5 +389,21 @@ "validation-no-valid-classifier-name": "Veuillez saisir un nom valide pour le classificateur.", "validation-no-valid-epoch-number": "Veuillez saisir un nombre valide d'époques.", "validation-no-valid-frequency": "Veuillez saisir une fréquence valide dans", - "validation-no-valid-learning-rate": "Veuillez saisir un taux d'apprentissage valide." + "validation-no-valid-learning-rate": "Veuillez saisir un taux d'apprentissage valide.", + "multi-tab-info-text": "Analyze all audio files in a directory recursively. Select an input folder, review the sample list, choose an output location and result formats, adjust settings if needed, then start the batch run.", + "multi-tab-info-title": "Info", + "embeddings-search-tab-info-text": "Search an embeddings database with a query sample. Select the database and audio root, choose a query clip, tune the search options, then review or export the closest matches.", + "embeddings-search-tab-info-title": "Info", + "embeddings-tab-info-text": "Build an embeddings database from a directory of audio files. Choose the source audio and database location, adjust settings if needed, then generate the database for later search and review.", + "embeddings-tab-info-title": "Info", + "eval-tab-info-text": "Compare prediction files against annotations. Upload both sets, confirm the column mapping, calculate the metrics, then inspect plots and export the result tables if needed.", + "eval-tab-info-title": "Info", + "review-tab-info-text": "Review extracted segments one species at a time. Select a directory, step through the clips, mark each item as positive or negative, and use the history and regression plot to track progress.", + "review-tab-info-title": "Info", + "segments-tab-info-text": "Extract segments from analysis results. Select the source audio, result files, and output folder, set the collection filters, then create a segment set for review or training.", + "segments-tab-info-title": "Info", + "species-tab-info-text": "Generate a species list for a location. Choose where to save the file, set the coordinates and seasonal filters, then export the list for later analysis.", + "species-tab-info-title": "Info", + "training-tab-info-text": "Train a custom classifier from labeled folders. Select the training data and output location, optionally add test data and preprocessing settings, then run training and review the metrics.", + "training-tab-info-title": "Info" } diff --git a/birdnet_analyzer/lang/id.json b/birdnet_analyzer/lang/id.json index 534265b57..a489f4cee 100644 --- a/birdnet_analyzer/lang/id.json +++ b/birdnet_analyzer/lang/id.json @@ -389,5 +389,21 @@ "validation-no-valid-classifier-name": "Silakan masukkan nama yang valid untuk klasifikator.", "validation-no-valid-epoch-number": "Silakan masukkan jumlah epochs yang valid.", "validation-no-valid-frequency": "Silakan masukkan frekuensi yang valid dalam", - "validation-no-valid-learning-rate": "Silakan masukkan laju pembelajaran yang valid." + "validation-no-valid-learning-rate": "Silakan masukkan laju pembelajaran yang valid.", + "multi-tab-info-text": "Analyze all audio files in a directory recursively. Select an input folder, review the sample list, choose an output location and result formats, adjust settings if needed, then start the batch run.", + "multi-tab-info-title": "Info", + "embeddings-search-tab-info-text": "Search an embeddings database with a query sample. Select the database and audio root, choose a query clip, tune the search options, then review or export the closest matches.", + "embeddings-search-tab-info-title": "Info", + "embeddings-tab-info-text": "Build an embeddings database from a directory of audio files. Choose the source audio and database location, adjust settings if needed, then generate the database for later search and review.", + "embeddings-tab-info-title": "Info", + "eval-tab-info-text": "Compare prediction files against annotations. Upload both sets, confirm the column mapping, calculate the metrics, then inspect plots and export the result tables if needed.", + "eval-tab-info-title": "Info", + "review-tab-info-text": "Review extracted segments one species at a time. Select a directory, step through the clips, mark each item as positive or negative, and use the history and regression plot to track progress.", + "review-tab-info-title": "Info", + "segments-tab-info-text": "Extract segments from analysis results. Select the source audio, result files, and output folder, set the collection filters, then create a segment set for review or training.", + "segments-tab-info-title": "Info", + "species-tab-info-text": "Generate a species list for a location. Choose where to save the file, set the coordinates and seasonal filters, then export the list for later analysis.", + "species-tab-info-title": "Info", + "training-tab-info-text": "Train a custom classifier from labeled folders. Select the training data and output location, optionally add test data and preprocessing settings, then run training and review the metrics.", + "training-tab-info-title": "Info" } diff --git a/birdnet_analyzer/lang/pt-br.json b/birdnet_analyzer/lang/pt-br.json index 121f80ace..0f3077ad0 100644 --- a/birdnet_analyzer/lang/pt-br.json +++ b/birdnet_analyzer/lang/pt-br.json @@ -389,5 +389,21 @@ "validation-no-valid-classifier-name": "Adicionar um nome válido para o classificador.", "validation-no-valid-epoch-number": "Adicionar um número de épocas (epochs) válido.", "validation-no-valid-frequency": "Adicionar uma frequência válida em", - "validation-no-valid-learning-rate": "Adicionar uma taxa de amostragem válida." + "validation-no-valid-learning-rate": "Adicionar uma taxa de amostragem válida.", + "multi-tab-info-text": "Analyze all audio files in a directory recursively. Select an input folder, review the sample list, choose an output location and result formats, adjust settings if needed, then start the batch run.", + "multi-tab-info-title": "Info", + "embeddings-search-tab-info-text": "Search an embeddings database with a query sample. Select the database and audio root, choose a query clip, tune the search options, then review or export the closest matches.", + "embeddings-search-tab-info-title": "Info", + "embeddings-tab-info-text": "Build an embeddings database from a directory of audio files. Choose the source audio and database location, adjust settings if needed, then generate the database for later search and review.", + "embeddings-tab-info-title": "Info", + "eval-tab-info-text": "Compare prediction files against annotations. Upload both sets, confirm the column mapping, calculate the metrics, then inspect plots and export the result tables if needed.", + "eval-tab-info-title": "Info", + "review-tab-info-text": "Review extracted segments one species at a time. Select a directory, step through the clips, mark each item as positive or negative, and use the history and regression plot to track progress.", + "review-tab-info-title": "Info", + "segments-tab-info-text": "Extract segments from analysis results. Select the source audio, result files, and output folder, set the collection filters, then create a segment set for review or training.", + "segments-tab-info-title": "Info", + "species-tab-info-text": "Generate a species list for a location. Choose where to save the file, set the coordinates and seasonal filters, then export the list for later analysis.", + "species-tab-info-title": "Info", + "training-tab-info-text": "Train a custom classifier from labeled folders. Select the training data and output location, optionally add test data and preprocessing settings, then run training and review the metrics.", + "training-tab-info-title": "Info" } diff --git a/birdnet_analyzer/lang/ru.json b/birdnet_analyzer/lang/ru.json index 54638a622..5d28146a5 100644 --- a/birdnet_analyzer/lang/ru.json +++ b/birdnet_analyzer/lang/ru.json @@ -389,5 +389,21 @@ "validation-no-valid-classifier-name": "Пожалуйста, введите имя для классификатора.", "validation-no-valid-epoch-number": "Пожалуйста, введите допустимое количество периодов.", "validation-no-valid-frequency": "Введите допустимую частоту в", - "validation-no-valid-learning-rate": "Пожалуйста, введите допустимый коэффициент обучения." + "validation-no-valid-learning-rate": "Пожалуйста, введите допустимый коэффициент обучения.", + "multi-tab-info-text": "Analyze all audio files in a directory recursively. Select an input folder, review the sample list, choose an output location and result formats, adjust settings if needed, then start the batch run.", + "multi-tab-info-title": "Info", + "embeddings-search-tab-info-text": "Search an embeddings database with a query sample. Select the database and audio root, choose a query clip, tune the search options, then review or export the closest matches.", + "embeddings-search-tab-info-title": "Info", + "embeddings-tab-info-text": "Build an embeddings database from a directory of audio files. Choose the source audio and database location, adjust settings if needed, then generate the database for later search and review.", + "embeddings-tab-info-title": "Info", + "eval-tab-info-text": "Compare prediction files against annotations. Upload both sets, confirm the column mapping, calculate the metrics, then inspect plots and export the result tables if needed.", + "eval-tab-info-title": "Info", + "review-tab-info-text": "Review extracted segments one species at a time. Select a directory, step through the clips, mark each item as positive or negative, and use the history and regression plot to track progress.", + "review-tab-info-title": "Info", + "segments-tab-info-text": "Extract segments from analysis results. Select the source audio, result files, and output folder, set the collection filters, then create a segment set for review or training.", + "segments-tab-info-title": "Info", + "species-tab-info-text": "Generate a species list for a location. Choose where to save the file, set the coordinates and seasonal filters, then export the list for later analysis.", + "species-tab-info-title": "Info", + "training-tab-info-text": "Train a custom classifier from labeled folders. Select the training data and output location, optionally add test data and preprocessing settings, then run training and review the metrics.", + "training-tab-info-title": "Info" } diff --git a/birdnet_analyzer/lang/se.json b/birdnet_analyzer/lang/se.json index 875f537f3..907f2b5ab 100644 --- a/birdnet_analyzer/lang/se.json +++ b/birdnet_analyzer/lang/se.json @@ -389,5 +389,21 @@ "validation-no-valid-classifier-name": "Ange ett giltigt namn för klassificeraren.", "validation-no-valid-epoch-number": "Ange ett giltigt antal epoker.", "validation-no-valid-frequency": "Ange en giltig frekvens i", - "validation-no-valid-learning-rate": "Ange en giltig inlärningshastighet." + "validation-no-valid-learning-rate": "Ange en giltig inlärningshastighet.", + "multi-tab-info-text": "Analyze all audio files in a directory recursively. Select an input folder, review the sample list, choose an output location and result formats, adjust settings if needed, then start the batch run.", + "multi-tab-info-title": "Info", + "embeddings-search-tab-info-text": "Search an embeddings database with a query sample. Select the database and audio root, choose a query clip, tune the search options, then review or export the closest matches.", + "embeddings-search-tab-info-title": "Info", + "embeddings-tab-info-text": "Build an embeddings database from a directory of audio files. Choose the source audio and database location, adjust settings if needed, then generate the database for later search and review.", + "embeddings-tab-info-title": "Info", + "eval-tab-info-text": "Compare prediction files against annotations. Upload both sets, confirm the column mapping, calculate the metrics, then inspect plots and export the result tables if needed.", + "eval-tab-info-title": "Info", + "review-tab-info-text": "Review extracted segments one species at a time. Select a directory, step through the clips, mark each item as positive or negative, and use the history and regression plot to track progress.", + "review-tab-info-title": "Info", + "segments-tab-info-text": "Extract segments from analysis results. Select the source audio, result files, and output folder, set the collection filters, then create a segment set for review or training.", + "segments-tab-info-title": "Info", + "species-tab-info-text": "Generate a species list for a location. Choose where to save the file, set the coordinates and seasonal filters, then export the list for later analysis.", + "species-tab-info-title": "Info", + "training-tab-info-text": "Train a custom classifier from labeled folders. Select the training data and output location, optionally add test data and preprocessing settings, then run training and review the metrics.", + "training-tab-info-title": "Info" } diff --git a/birdnet_analyzer/lang/tlh.json b/birdnet_analyzer/lang/tlh.json index b0258dea1..4c486fd1f 100644 --- a/birdnet_analyzer/lang/tlh.json +++ b/birdnet_analyzer/lang/tlh.json @@ -389,5 +389,21 @@ "validation-no-valid-classifier-name": "tu'law' pong yIchoH.", "validation-no-valid-epoch-number": "epQochmey yIchoH.", "validation-no-valid-frequency": "qeq 'eS patlh yIchoH", - "validation-no-valid-learning-rate": "qeq patlh yIchoH." + "validation-no-valid-learning-rate": "qeq patlh yIchoH.", + "multi-tab-info-text": "Analyze all audio files in a directory recursively. Select an input folder, review the sample list, choose an output location and result formats, adjust settings if needed, then start the batch run.", + "multi-tab-info-title": "Info", + "embeddings-search-tab-info-text": "Search an embeddings database with a query sample. Select the database and audio root, choose a query clip, tune the search options, then review or export the closest matches.", + "embeddings-search-tab-info-title": "Info", + "embeddings-tab-info-text": "Build an embeddings database from a directory of audio files. Choose the source audio and database location, adjust settings if needed, then generate the database for later search and review.", + "embeddings-tab-info-title": "Info", + "eval-tab-info-text": "Compare prediction files against annotations. Upload both sets, confirm the column mapping, calculate the metrics, then inspect plots and export the result tables if needed.", + "eval-tab-info-title": "Info", + "review-tab-info-text": "Review extracted segments one species at a time. Select a directory, step through the clips, mark each item as positive or negative, and use the history and regression plot to track progress.", + "review-tab-info-title": "Info", + "segments-tab-info-text": "Extract segments from analysis results. Select the source audio, result files, and output folder, set the collection filters, then create a segment set for review or training.", + "segments-tab-info-title": "Info", + "species-tab-info-text": "Generate a species list for a location. Choose where to save the file, set the coordinates and seasonal filters, then export the list for later analysis.", + "species-tab-info-title": "Info", + "training-tab-info-text": "Train a custom classifier from labeled folders. Select the training data and output location, optionally add test data and preprocessing settings, then run training and review the metrics.", + "training-tab-info-title": "Info" } diff --git a/birdnet_analyzer/lang/zh_TW.json b/birdnet_analyzer/lang/zh_TW.json index 7a4fe496c..925ad7d9c 100644 --- a/birdnet_analyzer/lang/zh_TW.json +++ b/birdnet_analyzer/lang/zh_TW.json @@ -389,5 +389,21 @@ "validation-no-valid-classifier-name": "請輸入有效的分類器名稱", "validation-no-valid-epoch-number": "請輸入有效的訓練期(eopch)數量", "validation-no-valid-frequency": "請輸入有效的頻率", - "validation-no-valid-learning-rate": "請輸入有效的學習速率" + "validation-no-valid-learning-rate": "請輸入有效的學習速率", + "multi-tab-info-text": "Analyze all audio files in a directory recursively. Select an input folder, review the sample list, choose an output location and result formats, adjust settings if needed, then start the batch run.", + "multi-tab-info-title": "Info", + "embeddings-search-tab-info-text": "Search an embeddings database with a query sample. Select the database and audio root, choose a query clip, tune the search options, then review or export the closest matches.", + "embeddings-search-tab-info-title": "Info", + "embeddings-tab-info-text": "Build an embeddings database from a directory of audio files. Choose the source audio and database location, adjust settings if needed, then generate the database for later search and review.", + "embeddings-tab-info-title": "Info", + "eval-tab-info-text": "Compare prediction files against annotations. Upload both sets, confirm the column mapping, calculate the metrics, then inspect plots and export the result tables if needed.", + "eval-tab-info-title": "Info", + "review-tab-info-text": "Review extracted segments one species at a time. Select a directory, step through the clips, mark each item as positive or negative, and use the history and regression plot to track progress.", + "review-tab-info-title": "Info", + "segments-tab-info-text": "Extract segments from analysis results. Select the source audio, result files, and output folder, set the collection filters, then create a segment set for review or training.", + "segments-tab-info-title": "Info", + "species-tab-info-text": "Generate a species list for a location. Choose where to save the file, set the coordinates and seasonal filters, then export the list for later analysis.", + "species-tab-info-title": "Info", + "training-tab-info-text": "Train a custom classifier from labeled folders. Select the training data and output location, optionally add test data and preprocessing settings, then run training and review the metrics.", + "training-tab-info-title": "Info" }