-
Notifications
You must be signed in to change notification settings - Fork 3.5k
[TTS] Update multi-language eval report format #15915
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -216,7 +216,9 @@ def run_inference_and_evaluation( | |||||||||||||||
| violin_plot_metrics.remove('utmosv2') | ||||||||||||||||
|
|
||||||||||||||||
| # Build full checkpoint identifier (include MoE info if present) | ||||||||||||||||
| full_checkpoint_name = f"{checkpoint_name}_{moe_info}{inference_config.build_identifier()}_SV_{eval_config.sv_model}_{eval_config.language}" | ||||||||||||||||
| full_checkpoint_name = ( | ||||||||||||||||
| f"{checkpoint_name}_{moe_info}{inference_config.build_identifier()}_SV_{eval_config.sv_model}" | ||||||||||||||||
| ) | ||||||||||||||||
|
|
||||||||||||||||
| # Tracking metrics across datasets | ||||||||||||||||
| ssim_per_dataset = [] | ||||||||||||||||
|
|
@@ -261,7 +263,7 @@ def run_inference_and_evaluation( | |||||||||||||||
| } | ||||||||||||||||
|
|
||||||||||||||||
| # Setup output directories | ||||||||||||||||
| eval_dir = os.path.join(out_dir, f"{full_checkpoint_name}_{dataset}") | ||||||||||||||||
| eval_dir = os.path.join(out_dir, f"{full_checkpoint_name}_{language}_{dataset}") | ||||||||||||||||
| audio_dir = os.path.join(eval_dir, "audio") | ||||||||||||||||
| os.makedirs(eval_dir, exist_ok=True) | ||||||||||||||||
|
|
||||||||||||||||
|
|
@@ -341,7 +343,7 @@ def run_inference_and_evaluation( | |||||||||||||||
|
|
||||||||||||||||
| sorted_filewise = sorted(filewise_metrics, key=lambda x: x.get('cer', 0), reverse=True) | ||||||||||||||||
| with open(os.path.join(eval_dir, f"{dataset}_filewise_metrics_{repeat_idx}.json"), "w") as f: | ||||||||||||||||
| json.dump(sorted_filewise, f, indent=4) | ||||||||||||||||
| json.dump(sorted_filewise, f, indent=4, ensure_ascii=False) | ||||||||||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win Open the JSON file with an explicit UTF-8 encoding.
Proposed fix- with open(os.path.join(eval_dir, f"{dataset}_filewise_metrics_{repeat_idx}.json"), "w") as f:
+ with open(
+ os.path.join(eval_dir, f"{dataset}_filewise_metrics_{repeat_idx}.json"),
+ "w",
+ encoding="utf-8",
+ ) as f:
json.dump(sorted_filewise, f, indent=4, ensure_ascii=False)📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||
|
|
||||||||||||||||
| # Append to per-run CSV | ||||||||||||||||
| append_metrics_to_csv(per_run_csv, full_checkpoint_name, dataset, metrics) | ||||||||||||||||
|
|
||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -187,8 +187,8 @@ The default expiration time is one year. | |
| - The expiration time is also included as a suffix in the uploaded artifacts | ||
| directory name, using the format `%Y-%m-%dT%H-%M-%SZ`, so uploaded reports | ||
| can be filtered and deleted later if needed. | ||
| - Both generated reports include a clickable Jira link derived from `--task_id`. | ||
| If no task ID is specified, the link points to the Jira project page. | ||
| - Both generated reports include a clickable POR link derived from `--task_id`. | ||
| If no task ID is specified, the link points to the POR project page. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Suggestion: remove this sentence, since every comparison report should now be linked to a POR ticket, so a missing task ID is no longer a valid case |
||
|
|
||
| ## Maintenance | ||
|
|
||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -17,15 +17,30 @@ | |
| _ROOT: Path = Path(__file__).parent.parent | ||
|
|
||
| # Benchmark names supported by the comparison report pipeline. | ||
| SUPPORTED_BENCHMARK_NAMES: list[str] = [ | ||
| "libritts_seen", | ||
| "libritts_test_clean", | ||
| "riva_hard_digits", | ||
| "riva_hard_letters", | ||
| "riva_hard_money", | ||
| "riva_hard_short", | ||
| "vctk", | ||
| ] | ||
| BENCHMARK_META = { | ||
| 'libritts': 'en', | ||
| 'riva_en': 'en', | ||
| 'riva_en_hard_sentences': 'en', | ||
| 'riva_en_short_sentences': 'en', | ||
| 'riva_en_qa': 'en', | ||
| 'riva_en_qa_longform': 'en', | ||
| 'King_ASR_sa_diacritics': 'ar', | ||
| 'King_ASR_sa_no_diacritics': 'ar', | ||
| 'King_ASR_uae_diacritics': 'ar', | ||
| 'King_ASR_uae_no_diacritics': 'ar', | ||
| 'cmltts_de': 'de', | ||
| 'cmltts_es': 'es', | ||
| 'cmltts_fr': 'fr', | ||
| 'AI4bharat': 'hi', | ||
| 'cmltts_it': 'it', | ||
| 'jvs_jsut': 'ja', | ||
| 'F5I9N7A1': 'ko', | ||
| 'cmltts_pt': 'pt', | ||
| 'vivos': 'vi', | ||
| 'mscenespeech': 'zh', | ||
| } | ||
|
|
||
| SUPPORTED_BENCHMARK_NAMES = BENCHMARK_META.keys() | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The type was |
||
|
|
||
| # Default width of tqdm progress bars in terminal columns. | ||
| TQDM_NCOLS: int = 80 | ||
|
|
@@ -52,4 +67,4 @@ | |
| DUMMY_TASK_ID: str = "NEMOTTS-0000" | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Since we decided to move from Jira to POR, |
||
|
|
||
| # URL prefix used to construct clickable Jira ticket links in reports. | ||
| JIRA_TICKET_URL_PREFIX: str = "https://jirasw.nvidia.com/browse" | ||
| TICKET_URL_PREFIX: str = "https://modelpor.ideas.aha.io/ideas" | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -281,7 +281,7 @@ | |
| <h2>Links ↗</h2> | ||
| <ul> | ||
| <li class="link-comment"> | ||
| <a href="{{ jira_url }}" target="_blank" rel="noopener noreferrer">Jira {{ jira_id }}</a> | ||
| <a href="{{ jira_url }}" target="_blank" rel="noopener noreferrer">POR {{ jira_id }}</a> | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please rename |
||
| </li> | ||
| </ul> | ||
| </aside> | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -384,7 +384,7 @@ | |
| <h2>Links ↗</h2> | ||
| <ul> | ||
| <li class="link-comment"> | ||
| <a href="{{ jira_url }}" target="_blank" rel="noopener noreferrer">Jira {{ jira_id }}</a> | ||
| <a href="{{ jira_url }}" target="_blank" rel="noopener noreferrer">POR {{ jira_id }}</a> | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same: please rename |
||
| </li> | ||
| {% if audio_report_url %} | ||
| <li class="link-comment"> | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift
Preserve language in aggregate CSV identity.
full_checkpoint_nameno longer contains the dataset language, butappend_metrics_to_csvstill writes it at Lines 349 and 376 while the CSV schema has no language column. Multilingual runs can therefore produce indistinguishable aggregate rows for the same checkpoint and dataset. Add a language column or pass a language-qualified checkpoint identifier to the aggregate CSV writer.🤖 Prompt for AI Agents