Skip to content

Commit 62e5c67

Browse files
committed
feat(speech): add AppTek Call-Center Dialogues benchmark
Signed-off-by: Piotr Żelasko <pzelasko@nvidia.com>
1 parent 9c34cd1 commit 62e5c67

11 files changed

Lines changed: 1494 additions & 9 deletions

File tree

docs/evaluation/speech-audio.md

Lines changed: 72 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,19 @@ ASR benchmark based on the [HuggingFace Open ASR Leaderboard](https://huggingfac
2020
- Benchmark is defined in [`nemo_skills/dataset/asr-leaderboard/__init__.py`](https://github.com/NVIDIA-NeMo/Skills/blob/main/nemo_skills/dataset/asr-leaderboard/__init__.py)
2121
- Original datasets are hosted on HuggingFace (downloaded automatically during preparation)
2222

23+
### AppTek Call-Center Dialogues
24+
25+
AppTek Call-Center Dialogues is a long-form English ASR benchmark of role-played agent-customer calls across 14 accent groups and 16 service domains. It contains 1,746 split-channel WAV files, totaling 128.6 hours. Many calls run several minutes long (the longest exceeds 20 minutes), so a model's generation budget and long-audio settings often need tuning before evaluation.
26+
27+
The benchmark uses the official HuggingFace release: [apptek-com/apptek_callcenter_dialogues](https://huggingface.co/datasets/apptek-com/apptek_callcenter_dialogues). Scoring uses WER with Whisper English normalization plus the dataset-specific word mappings from the released `score.py` and `word_mappings.py`.
28+
29+
#### Dataset Location
30+
31+
- Benchmark is defined in [`nemo_skills/dataset/apptek-callcenter-dialogues/__init__.py`](https://github.com/NVIDIA-NeMo/Skills/blob/main/nemo_skills/dataset/apptek-callcenter-dialogues/__init__.py)
32+
- Original data is hosted on HuggingFace and downloaded automatically during preparation.
33+
- All accent metadata is mapped to one NeMo Skills split: `test.jsonl`.
34+
- A standalone Parakeet v3 reproduction script lives at [`recipes/apptek-callcenter-dialogues/reproduce_parakeet_v3.py`](https://github.com/NVIDIA-NeMo/Skills/blob/main/recipes/apptek-callcenter-dialogues/reproduce_parakeet_v3.py) for cross-checking the WER against the dataset paper.
35+
2336
### MMAU-Pro
2437

2538
MMAU-Pro (Multimodal Audio Understanding - Pro) is a comprehensive benchmark for evaluating audio understanding capabilities across three different task categories:
@@ -51,6 +64,28 @@ Prepare specific datasets only:
5164
ns prepare_data asr-leaderboard --datasets librispeech_clean ami
5265
```
5366

67+
### AppTek Call-Center Dialogues
68+
69+
The full dataset is 34.9 GB. If `--data_dir` is not passed to the dataset prepare script, raw files are downloaded to a sibling directory outside the repo, such as `<repo-parent>/Skills-data/apptek-callcenter-dialogues`.
70+
71+
```bash
72+
ns prepare_data apptek-callcenter-dialogues --skip_data_dir_check
73+
```
74+
75+
To prepare metadata only:
76+
77+
```bash
78+
ns prepare_data apptek-callcenter-dialogues --skip_data_dir_check --no-audio
79+
```
80+
81+
To point generated manifests at a container-mounted audio path:
82+
83+
```bash
84+
python -m nemo_skills.dataset.prepare apptek-callcenter-dialogues \
85+
--data_dir=/data/apptek-callcenter-dialogues \
86+
--audio-prefix=/data/apptek-callcenter-dialogues
87+
```
88+
5489
### MMAU-Pro
5590

5691
```bash
@@ -74,7 +109,7 @@ eval(
74109
model="/workspace/checkpoint",
75110
server_entrypoint="/workspace/megatron-lm/server.py",
76111
server_container="/path/to/container.sqsh",
77-
data_dir="/dataset",
112+
data_dir="/data",
78113
installation_command="pip install -r requirements/audio.txt",
79114
server_args="--inference-max-requests 1 --model-config /workspace/checkpoint/config.yaml",
80115
)
@@ -86,6 +121,26 @@ Evaluate a specific dataset:
86121
eval(benchmarks="asr-leaderboard", split="librispeech_clean", ...)
87122
```
88123

124+
### AppTek Call-Center Dialogues
125+
126+
```python
127+
from nemo_skills.pipeline.cli import wrap_arguments, eval
128+
129+
eval(
130+
ctx=wrap_arguments(""),
131+
cluster="oci_iad",
132+
output_dir="/workspace/apptek-callcenter-eval",
133+
benchmarks="apptek-callcenter-dialogues",
134+
server_type="megatron",
135+
server_gpus=1,
136+
model="/workspace/checkpoint",
137+
server_entrypoint="/workspace/megatron-lm/server.py",
138+
server_container="/path/to/container.sqsh",
139+
data_dir="/data",
140+
installation_command="pip install -r requirements/audio.txt",
141+
)
142+
```
143+
89144
??? note "Alternative: Command-line usage"
90145

91146
```bash
@@ -98,7 +153,7 @@ eval(benchmarks="asr-leaderboard", split="librispeech_clean", ...)
98153
--model=/workspace/path/to/checkpoint \
99154
--server_entrypoint=/workspace/megatron-lm/server.py \
100155
--server_container=/path/to/container.sqsh \
101-
--data_dir=/dataset \
156+
--data_dir=/data \
102157
--installation_command="pip install -r requirements/audio.txt"
103158
```
104159

@@ -120,7 +175,7 @@ eval(
120175
model="/workspace/checkpoint",
121176
server_entrypoint="/workspace/megatron-lm/server.py",
122177
server_container="/path/to/container.sqsh",
123-
data_dir="/dataset",
178+
data_dir="/data",
124179
installation_command="pip install sacrebleu",
125180
server_args="--inference-max-requests 1 --model-config /workspace/checkpoint/config.yaml",
126181
)
@@ -150,7 +205,7 @@ eval(benchmarks="mmau-pro.closed_form", ...)
150205
--model=/workspace/path/to/checkpoint \
151206
--server_entrypoint=/workspace/megatron-lm/server.py \
152207
--server_container=/path/to/container.sqsh \
153-
--data_dir=/dataset \
208+
--data_dir=/data \
154209
--installation_command="pip install sacrebleu"
155210
```
156211

@@ -255,6 +310,19 @@ evaluation_mode | avg_tokens | gen_seconds | success_rate | no_answer | wer |
255310
pass@1 | 741 | 4007 | 99.51% | 0.00% | 6.47% | 1842
256311
```
257312

313+
### AppTek Call-Center Dialogues Results
314+
315+
```text
316+
<output_dir>/
317+
└── eval-results/
318+
└── apptek-callcenter-dialogues/
319+
└── metrics.json
320+
```
321+
322+
Reported columns match the standard NeMo Skills ASR table — `wer`, `substitutions`, `insertions`, `deletions`, `ref_words` — and the summary includes per-accent rows such as `apptek-callcenter-dialogues-en-AU` because each sample sets `subset_for_metrics` to the accent code.
323+
324+
For reference, the AppTek dataset paper reports Parakeet v3 at 9.2% WER with Silero VAD segmentation and ~10.4% WER without external segmentation; report the segmentation setup with any reproduced number.
325+
258326
### MMAU-Pro Results
259327

260328
```
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
# Settings that define how evaluation should be done by default.
16+
#
17+
# task_type=ASR (not ASR_LEADERBOARD): scoring uses the AppTek-specific
18+
# normalization ``apptek_callcenter`` rather than the HF Open ASR Leaderboard
19+
# normalizer, so the leaderboard task code (with its multi-reference logic)
20+
# does not apply here.
21+
22+
REQUIRES_DATA_DIR = True
23+
DEFAULT_SPLIT = "test"
24+
25+
METRICS_TYPE = "audio"
26+
EVAL_ARGS = "++eval_type=audio ++eval_config.normalization_mode=apptek_callcenter"
27+
GENERATION_ARGS = "++prompt_format=openai ++enable_audio=true"

0 commit comments

Comments
 (0)