Paper release v1: benchmark/deployment modes, use_filter, pinned revisions, analysis package, predictions and 8-best lists (no reference transcripts)
Browse files- .gitattributes +3 -0
- README.md +17 -2
- analysis/README.md +36 -0
- analysis/attach_references.py +109 -0
- analysis/build_release.py +51 -0
- analysis/cpu_timing.py +57 -0
- analysis/results.json +1786 -0
- analysis/reviewer_analyses.py +388 -0
- paper_artifacts/README.md +17 -0
- paper_artifacts/audar/audar_casablanca_test.jsonl +0 -0
- paper_artifacts/audar/audar_commonvoice_test.jsonl +0 -0
- paper_artifacts/audar/audar_masc_test_clean.jsonl +0 -0
- paper_artifacts/audar/audar_masc_test_noisy.jsonl +0 -0
- paper_artifacts/audar/audar_mgb2_test.jsonl +0 -0
- paper_artifacts/audar/audar_sada_test.jsonl +0 -0
- paper_artifacts/audar/audarfix_casablanca_test.jsonl +0 -0
- paper_artifacts/audar/audarfix_commonvoice_test.jsonl +0 -0
- paper_artifacts/audar/audarfix_masc_test_clean.jsonl +0 -0
- paper_artifacts/audar/audarfix_masc_test_noisy.jsonl +0 -0
- paper_artifacts/audar/audarfix_mgb2_test.jsonl +0 -0
- paper_artifacts/audar/audarfix_sada_test.jsonl +0 -0
- paper_artifacts/base/base_casablanca_test.jsonl +0 -0
- paper_artifacts/base/base_cv_commonvoice_test.jsonl +0 -0
- paper_artifacts/base/base_masc_test_clean.jsonl +0 -0
- paper_artifacts/base/base_masc_test_noisy.jsonl +0 -0
- paper_artifacts/base/base_mgb2_test.jsonl +0 -0
- paper_artifacts/base/base_sada_test.jsonl +0 -0
- paper_artifacts/nbest/casablanca_test.jsonl +0 -0
- paper_artifacts/nbest/commonvoice_test.jsonl +3 -0
- paper_artifacts/nbest/dev_saudi_podcasts.jsonl +8 -0
- paper_artifacts/nbest/dev_youtube_najdi.jsonl +0 -0
- paper_artifacts/nbest/masc_test_clean.jsonl +3 -0
- paper_artifacts/nbest/masc_test_noisy.jsonl +3 -0
- paper_artifacts/nbest/mgb2_test.jsonl +0 -0
- paper_artifacts/nbest/sada_test.jsonl +0 -0
- sygma_asr.py +53 -6
.gitattributes
CHANGED
|
@@ -33,3 +33,6 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
paper_artifacts/nbest/commonvoice_test.jsonl filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
paper_artifacts/nbest/masc_test_clean.jsonl filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
paper_artifacts/nbest/masc_test_noisy.jsonl filter=lfs diff=lfs merge=lfs -text
|
README.md
CHANGED
|
@@ -66,11 +66,26 @@ Sygma improves the base model in every group. With equal loop protection, Audar
|
|
| 66 |
# pip install "transformers==4.57.6" torch soundfile librosa huggingface_hub sentencepiece
|
| 67 |
from sygma_asr import SygmaASR
|
| 68 |
|
| 69 |
-
asr = SygmaASR(device="cuda") # downloads the Cohere
|
| 70 |
print(asr.transcribe(["clip.wav"]))
|
| 71 |
```
|
| 72 |
|
| 73 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 74 |
|
| 75 |
## Limitations
|
| 76 |
|
|
|
|
| 66 |
# pip install "transformers==4.57.6" torch soundfile librosa huggingface_hub sentencepiece
|
| 67 |
from sygma_asr import SygmaASR
|
| 68 |
|
| 69 |
+
asr = SygmaASR(device="cuda") # mode="benchmark" (default); downloads the pinned Cohere revision
|
| 70 |
print(asr.transcribe(["clip.wav"]))
|
| 71 |
```
|
| 72 |
|
| 73 |
+
### Modes
|
| 74 |
+
|
| 75 |
+
| Mode | Word count for the bonus | All 8 hypotheses degenerate | Six-set average WER |
|
| 76 |
+
|---|---|---|---|
|
| 77 |
+
| `mode="benchmark"` (default) | words after the leaderboard normalization | re-rank all 8 | **23.04** (the paper's numbers) |
|
| 78 |
+
| `mode="deployment"` | words on punctuation-stripped raw text | keep the top beam hypothesis (or repair) | 23.06 |
|
| 79 |
+
|
| 80 |
+
`SygmaASR(..., mode="deployment", repair=True)` adds a fallback re-decode when all 8 hypotheses are degenerate. It is **not** part of the benchmarked configuration.
|
| 81 |
+
|
| 82 |
+
### Reproducing the paper
|
| 83 |
+
|
| 84 |
+
- Base model: `CohereLabs/cohere-transcribe-arabic-07-2026` at revision `c3e911b42149bf7a1e53d5cef9878aee87515a23` (pinned as `BASE_REVISION`); vendored model code in `cohere_asr/`.
|
| 85 |
+
- Environment: transformers 4.57.6; beam 8, length penalty 0, β = 1.0, at most 12 tokens per second + 20; bf16 autocast on GPU.
|
| 86 |
+
- Other pinned revisions used in the paper: `audarai/Audar-ASR-V1-Turbo` (remote code) `371428bea487c7aec82b27dc21f8d4324002e98e`; `Qwen/Qwen3-1.7B-Base` `ea980cb0a6c2ae4b936e82123acc929f1cec04c1`.
|
| 87 |
+
- Two levels of reproduction: the released 8-best lists reproduce every table exactly (analysis reproduction); re-running inference on rebuilt audio can differ slightly with GPU type, batching and precision (end-to-end reproduction).
|
| 88 |
+
- Exact selection rules (given the released 8-best lists they reproduce all per-set WERs): reward only (the paper's primary result, 23.05) `select_hypothesis(hyps, 1.0, "benchmark", use_filter=False)`; Sygma, reward + filter (23.04) `select_hypothesis(hyps, 1.0, "benchmark", use_filter=True)`; Beam-8 top (24.21) `select_hypothesis(hyps, 0.0, "benchmark", use_filter=False)`. `SygmaASR(..., use_filter=False)` decodes audio in the reward-only configuration.
|
| 89 |
|
| 90 |
## Limitations
|
| 91 |
|
analysis/README.md
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Reproducing the paper's tables
|
| 2 |
+
|
| 3 |
+
The analysis environment is:
|
| 4 |
+
|
| 5 |
+
- Python 3.12.8
|
| 6 |
+
- jiwer 4.0.0
|
| 7 |
+
- NumPy 1.26.4
|
| 8 |
+
- PyTorch 2.2.2
|
| 9 |
+
- transformers 4.57.6
|
| 10 |
+
- huggingface_hub 0.36.2
|
| 11 |
+
- pyarrow 15.0.2
|
| 12 |
+
|
| 13 |
+
```bash
|
| 14 |
+
pip install "jiwer==4.0.0" "numpy==1.26.4" "torch==2.2.2" "transformers==4.57.6" "huggingface_hub==0.36.2" \
|
| 15 |
+
sentencepiece soundfile librosa "pyarrow==15.0.2"
|
| 16 |
+
|
| 17 |
+
# 1. re-attach reference transcripts from their public sources (leaderboard manifests, dev datasets)
|
| 18 |
+
python analysis/attach_references.py --release paper_artifacts --out art
|
| 19 |
+
|
| 20 |
+
# 2. all tables, bootstrap intervals (10,000 replicates, seed 0), sensitivity analysis, detector checks
|
| 21 |
+
python analysis/reviewer_analyses.py --art art --out my_results.json
|
| 22 |
+
```
|
| 23 |
+
|
| 24 |
+
`my_results.json` should equal `analysis/results.json`. We verified this in a newly created environment with the versions above. Run both commands from the repository root: the analysis imports `sygma_asr.py` and `cohere_asr/` from there.
|
| 25 |
+
|
| 26 |
+
## Configurations
|
| 27 |
+
|
| 28 |
+
| Paper name | Selection rule |
|
| 29 |
+
|---|---|
|
| 30 |
+
| Beam-8 top | `select_hypothesis(hyps, beta=0.0, mode="benchmark", use_filter=False)` |
|
| 31 |
+
| **Sygma-reward** (primary) | `select_hypothesis(hyps, beta=1.0, mode="benchmark", use_filter=False)` |
|
| 32 |
+
| Sygma-filtered | `select_hypothesis(hyps, beta=1.0, mode="benchmark", use_filter=True)` |
|
| 33 |
+
| LN re-ranking (± filter) | `pick(hyps, lambda h: h["am"] / ntok(h["text"]) ** 2.5, filt)` in `reviewer_analyses.py` (Cohere tokens + EOS) |
|
| 34 |
+
| Neural LM | `pick(hyps, lambda h: h["am"] + 0.01 * h["qwen"] + 1.5 * words(h), True)` |
|
| 35 |
+
|
| 36 |
+
Words are counted after the leaderboard normalization. Search spaces are given in the paper's appendix. `cpu_timing.py` reproduces the CPU timing, which needs audio clips.
|
analysis/attach_references.py
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Re-attach reference transcripts to the released predictions, producing the input directory that
|
| 2 |
+
reviewer_analyses.py expects. The release contains no reference text; references come from:
|
| 3 |
+
|
| 4 |
+
test sets the Open Universal Arabic ASR Leaderboard manifests (GitHub, pinned commit)
|
| 5 |
+
dev sets the Hugging Face datasets ahmedsamirtarjama/youtube_najdi and
|
| 6 |
+
HuggingPanda/Saudi_Podcasts_ASR (pinned revisions), by row index: a dev clip named
|
| 7 |
+
<set>_<i:06d> is row i of the listed files read in sorted path order (finetune/dev_prep.py)
|
| 8 |
+
|
| 9 |
+
python paper/analysis/attach_references.py --release RELEASE_DIR --out ART_DIR
|
| 10 |
+
python paper/analysis/reviewer_analyses.py --art ART_DIR --out results.json
|
| 11 |
+
"""
|
| 12 |
+
|
| 13 |
+
import argparse
|
| 14 |
+
import json
|
| 15 |
+
import shutil
|
| 16 |
+
import urllib.request
|
| 17 |
+
from pathlib import Path
|
| 18 |
+
|
| 19 |
+
import pyarrow as pa
|
| 20 |
+
import pyarrow.parquet as pq
|
| 21 |
+
|
| 22 |
+
LB_REPO = "Natural-Language-Processing-Elm/open_universal_arabic_asr_leaderboard"
|
| 23 |
+
LB_COMMIT = "8fce8595b49057c98bafc2ba41b69c331cb5176e"
|
| 24 |
+
TEST = ["sada_test", "commonvoice_test", "masc_test_clean", "masc_test_noisy", "mgb2_test", "casablanca_test"]
|
| 25 |
+
BASE = {"sada_test": "base_sada_test", "commonvoice_test": "base_cv_commonvoice_test",
|
| 26 |
+
"masc_test_clean": "base_masc_test_clean", "masc_test_noisy": "base_masc_test_noisy",
|
| 27 |
+
"mgb2_test": "base_mgb2_test", "casablanca_test": "base_casablanca_test"}
|
| 28 |
+
# (repo, revision, files read by dev_prep.py): the youtube_najdi tuning set was built from the
|
| 29 |
+
# dataset's save_to_disk .arrow files only (its data/ parquet copy holds the same rows in another order)
|
| 30 |
+
DEV = {"dev_youtube_najdi": ("ahmedsamirtarjama/youtube_najdi", "d308545faa94f0f11bfa4d3b180ed661373f4a69", "data-*.arrow"),
|
| 31 |
+
"dev_saudi_podcasts": ("HuggingPanda/Saudi_Podcasts_ASR", "0f9b9b26ced10e26b4883948c517f70e14b01ab4", "data/*.parquet")}
|
| 32 |
+
TEXT_COLS = ("text", "transcription", "transcript", "sentence")
|
| 33 |
+
|
| 34 |
+
|
| 35 |
+
def stem(p):
|
| 36 |
+
return Path(p).name.rsplit(".wav", 1)[0]
|
| 37 |
+
|
| 38 |
+
|
| 39 |
+
def rows(src, pattern):
|
| 40 |
+
"""Same row order as finetune/dev_prep.py: the dataset's files in sorted path order."""
|
| 41 |
+
for p in sorted(Path(src).glob(pattern)):
|
| 42 |
+
if p.suffix == ".parquet":
|
| 43 |
+
pf = pq.ParquetFile(p)
|
| 44 |
+
for i in range(pf.num_row_groups):
|
| 45 |
+
yield from pf.read_row_group(i, columns=[c for c in pf.schema_arrow.names if c in TEXT_COLS]).to_pylist()
|
| 46 |
+
elif p.suffix == ".arrow":
|
| 47 |
+
with pa.memory_map(str(p)) as f:
|
| 48 |
+
try:
|
| 49 |
+
reader = pa.ipc.open_stream(f)
|
| 50 |
+
except pa.ArrowInvalid:
|
| 51 |
+
reader = pa.ipc.open_file(f)
|
| 52 |
+
for batch in reader:
|
| 53 |
+
yield from batch.select([c for c in batch.schema.names if c in TEXT_COLS]).to_pylist()
|
| 54 |
+
|
| 55 |
+
|
| 56 |
+
def load(p):
|
| 57 |
+
return [json.loads(l) for l in open(p, encoding="utf-8")]
|
| 58 |
+
|
| 59 |
+
|
| 60 |
+
def dump(rows_, p):
|
| 61 |
+
p.parent.mkdir(parents=True, exist_ok=True)
|
| 62 |
+
with open(p, "w", encoding="utf-8") as f:
|
| 63 |
+
for r in rows_:
|
| 64 |
+
f.write(json.dumps(r, ensure_ascii=False) + "\n")
|
| 65 |
+
|
| 66 |
+
|
| 67 |
+
def main():
|
| 68 |
+
ap = argparse.ArgumentParser()
|
| 69 |
+
ap.add_argument("--release", required=True)
|
| 70 |
+
ap.add_argument("--out", required=True)
|
| 71 |
+
a = ap.parse_args()
|
| 72 |
+
rel, out = Path(a.release), Path(a.out)
|
| 73 |
+
if out.exists():
|
| 74 |
+
shutil.rmtree(out)
|
| 75 |
+
|
| 76 |
+
for s in TEST:
|
| 77 |
+
url = f"https://raw.githubusercontent.com/{LB_REPO}/{LB_COMMIT}/datasets/{s}.json"
|
| 78 |
+
raw = urllib.request.urlopen(url).read().decode("utf-8")
|
| 79 |
+
(out / "lb").mkdir(parents=True, exist_ok=True)
|
| 80 |
+
(out / f"lb/{s}.json").write_text(raw, encoding="utf-8")
|
| 81 |
+
ref = {stem(r["audio_filepath"]): r["text"] for r in map(json.loads, raw.splitlines())}
|
| 82 |
+
nb = load(rel / f"nbest/{s}.jsonl")
|
| 83 |
+
for r in nb:
|
| 84 |
+
r["ref"] = ref[stem(r["file"])]
|
| 85 |
+
dump(nb, out / f"nbest/{s}.jsonl")
|
| 86 |
+
for sub, name in [("base", BASE[s]), ("audar", f"audar_{s}"), ("audar", f"audarfix_{s}")]:
|
| 87 |
+
rs = load(rel / f"{sub}/{name}.jsonl")
|
| 88 |
+
for r in rs:
|
| 89 |
+
r["text"] = ref[stem(r["audio_filepath"])]
|
| 90 |
+
dump(rs, out / f"{sub}/{name}.jsonl")
|
| 91 |
+
print(f"[test] {s}: {len(nb)} clips", flush=True)
|
| 92 |
+
|
| 93 |
+
from huggingface_hub import snapshot_download
|
| 94 |
+
for s, (repo, rev, pattern) in DEV.items():
|
| 95 |
+
local = snapshot_download(repo, repo_type="dataset", revision=rev)
|
| 96 |
+
texts = {}
|
| 97 |
+
for i, r in enumerate(rows(local, pattern)):
|
| 98 |
+
col = next((c for c in TEXT_COLS if r.get(c)), None)
|
| 99 |
+
if col:
|
| 100 |
+
texts[i] = r[col].strip()
|
| 101 |
+
nb = load(rel / f"nbest/{s}.jsonl")
|
| 102 |
+
for r in nb:
|
| 103 |
+
r["ref"] = texts[int(stem(r["file"]).rsplit("_", 1)[1])]
|
| 104 |
+
dump(nb, out / f"nbest/{s}.jsonl")
|
| 105 |
+
print(f"[dev] {s}: {len(nb)} clips", flush=True)
|
| 106 |
+
|
| 107 |
+
|
| 108 |
+
if __name__ == "__main__":
|
| 109 |
+
main()
|
analysis/build_release.py
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Build the public artifact release from the private analysis inputs: identical files with every
|
| 2 |
+
reference transcript removed (test and development references are re-attached from their public
|
| 3 |
+
sources by attach_references.py).
|
| 4 |
+
|
| 5 |
+
python paper/analysis/build_release.py --art ART_DIR --out RELEASE_DIR
|
| 6 |
+
"""
|
| 7 |
+
|
| 8 |
+
import argparse
|
| 9 |
+
import json
|
| 10 |
+
import shutil
|
| 11 |
+
from pathlib import Path
|
| 12 |
+
|
| 13 |
+
TEST = ["sada_test", "commonvoice_test", "masc_test_clean", "masc_test_noisy", "mgb2_test", "casablanca_test"]
|
| 14 |
+
DEV = ["dev_youtube_najdi", "dev_saudi_podcasts"]
|
| 15 |
+
BASE = {"sada_test": "base_sada_test", "commonvoice_test": "base_cv_commonvoice_test",
|
| 16 |
+
"masc_test_clean": "base_masc_test_clean", "masc_test_noisy": "base_masc_test_noisy",
|
| 17 |
+
"mgb2_test": "base_mgb2_test", "casablanca_test": "base_casablanca_test"}
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
def rewrite(src, dst, drop):
|
| 21 |
+
dst.parent.mkdir(parents=True, exist_ok=True)
|
| 22 |
+
with open(src, encoding="utf-8") as f, open(dst, "w", encoding="utf-8") as g:
|
| 23 |
+
for line in f:
|
| 24 |
+
r = json.loads(line)
|
| 25 |
+
for k in drop:
|
| 26 |
+
r.pop(k, None)
|
| 27 |
+
g.write(json.dumps(r, ensure_ascii=False) + "\n")
|
| 28 |
+
|
| 29 |
+
|
| 30 |
+
def main():
|
| 31 |
+
ap = argparse.ArgumentParser()
|
| 32 |
+
ap.add_argument("--art", required=True)
|
| 33 |
+
ap.add_argument("--out", required=True)
|
| 34 |
+
a = ap.parse_args()
|
| 35 |
+
art, out = Path(a.art), Path(a.out)
|
| 36 |
+
if out.exists():
|
| 37 |
+
shutil.rmtree(out)
|
| 38 |
+
for s in TEST + DEV:
|
| 39 |
+
rewrite(art / f"nbest/{s}.jsonl", out / f"nbest/{s}.jsonl", ["ref"])
|
| 40 |
+
for s in TEST:
|
| 41 |
+
rewrite(art / f"base/{BASE[s]}.jsonl", out / f"base/{BASE[s]}.jsonl", ["text"])
|
| 42 |
+
for tag in ("audar", "audarfix"):
|
| 43 |
+
rewrite(art / f"audar/{tag}_{s}.jsonl", out / f"audar/{tag}_{s}.jsonl", ["text"])
|
| 44 |
+
leaks = [p for p in out.rglob("*.jsonl") for l in open(p, encoding="utf-8")
|
| 45 |
+
if '"ref"' in l or '"text": ' in l.split('"hyps"')[0]]
|
| 46 |
+
assert not leaks, f"reference text left in {sorted({str(p) for p in leaks})[:3]}"
|
| 47 |
+
print(f"wrote {sum(1 for _ in out.rglob('*.jsonl'))} files to {out}")
|
| 48 |
+
|
| 49 |
+
|
| 50 |
+
if __name__ == "__main__":
|
| 51 |
+
main()
|
analysis/cpu_timing.py
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""CPU cost of greedy vs. Sygma decoding (fp32, batch 1, one clip at a time) on 30 random Arabic clips.
|
| 2 |
+
|
| 3 |
+
Timing boundary: wall-clock (time.perf_counter) around one call of the decoder on an in-memory float32
|
| 4 |
+
array, i.e. feature extraction + encoder + search + detokenization; model loading and audio reading
|
| 5 |
+
excluded. Greedy = model.transcribe(...) (the model's own routine); Sygma = SygmaASR.transcribe(...).
|
| 6 |
+
With --mode greedy|sygma only that decoder runs, so the process's peak RSS is attributable to it.
|
| 7 |
+
|
| 8 |
+
.venv/bin/python paper/analysis/cpu_timing.py --clips kaggle_ser/output/test --out paper/analysis/cpu_timing.json
|
| 9 |
+
.venv/bin/python paper/analysis/cpu_timing.py --clips kaggle_ser/output/test --mode greedy --out .../cpu_greedy.json
|
| 10 |
+
"""
|
| 11 |
+
import argparse, json, random, resource, sys, time
|
| 12 |
+
from pathlib import Path
|
| 13 |
+
|
| 14 |
+
import soundfile as sf
|
| 15 |
+
import torch
|
| 16 |
+
|
| 17 |
+
ROOT = Path(__file__).resolve().parents[2]
|
| 18 |
+
sys.path.insert(0, str(ROOT / "hf_release" / "Sygma-ASR-Arabic"))
|
| 19 |
+
from sygma_asr import SygmaASR # noqa: E402
|
| 20 |
+
|
| 21 |
+
ap = argparse.ArgumentParser()
|
| 22 |
+
ap.add_argument("--clips", required=True)
|
| 23 |
+
ap.add_argument("--n", type=int, default=30)
|
| 24 |
+
ap.add_argument("--out", required=True)
|
| 25 |
+
ap.add_argument("--mode", choices=["both", "greedy", "sygma"], default="both")
|
| 26 |
+
a = ap.parse_args()
|
| 27 |
+
files = sorted(Path(a.clips).glob("*.wav"))
|
| 28 |
+
random.Random(0).shuffle(files)
|
| 29 |
+
files = files[: a.n]
|
| 30 |
+
asr = SygmaASR(device="cpu")
|
| 31 |
+
rows = []
|
| 32 |
+
for f in files:
|
| 33 |
+
x, sr = sf.read(f, dtype="float32")
|
| 34 |
+
x = x.mean(axis=1) if x.ndim > 1 else x
|
| 35 |
+
dur = len(x) / sr
|
| 36 |
+
tg = ts = float("nan")
|
| 37 |
+
if a.mode in ("both", "greedy"):
|
| 38 |
+
t0 = time.perf_counter()
|
| 39 |
+
with torch.inference_mode():
|
| 40 |
+
asr.model.transcribe(asr.processor, language="ar", audio_arrays=[x], sample_rates=[sr])
|
| 41 |
+
tg = time.perf_counter() - t0
|
| 42 |
+
if a.mode in ("both", "sygma"):
|
| 43 |
+
t0 = time.perf_counter()
|
| 44 |
+
asr.transcribe(audio_arrays=[x], sample_rates=[sr])
|
| 45 |
+
ts = time.perf_counter() - t0
|
| 46 |
+
rows.append({"file": f.name, "dur": dur, "greedy_s": tg, "sygma_s": ts})
|
| 47 |
+
print(f"{f.name} {dur:.1f}s greedy {tg:.1f}s sygma {ts:.1f}s", flush=True)
|
| 48 |
+
tot = sum(r["dur"] for r in rows)
|
| 49 |
+
res = {"clips": len(rows), "audio_s": round(tot, 1), "threads": torch.get_num_threads(),
|
| 50 |
+
"rtf_greedy": round(sum(r["greedy_s"] for r in rows) / tot, 3),
|
| 51 |
+
"rtf_sygma": round(sum(r["sygma_s"] for r in rows) / tot, 3),
|
| 52 |
+
"peak_rss_gb": round(resource.getrusage(resource.RUSAGE_SELF).ru_maxrss / 1e9, 2), # bytes on macOS
|
| 53 |
+
"rows": rows}
|
| 54 |
+
res["mode"] = a.mode
|
| 55 |
+
res["torch"] = torch.__version__
|
| 56 |
+
Path(a.out).write_text(json.dumps(res, indent=1))
|
| 57 |
+
print({k: v for k, v in res.items() if k != "rows"})
|
analysis/results.json
ADDED
|
@@ -0,0 +1,1786 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"dev_lennorm": {
|
| 3 |
+
"nofilter_lambda0.0": 33.71,
|
| 4 |
+
"nofilter_lambda0.25": 32.5,
|
| 5 |
+
"nofilter_lambda0.5": 31.52,
|
| 6 |
+
"nofilter_lambda0.75": 30.95,
|
| 7 |
+
"nofilter_lambda1.0": 30.54,
|
| 8 |
+
"nofilter_lambda1.25": 30.34,
|
| 9 |
+
"nofilter_lambda1.5": 30.33,
|
| 10 |
+
"nofilter_lambda2.0": 30.13,
|
| 11 |
+
"nofilter_lambda2.5": 30.06,
|
| 12 |
+
"nofilter_lambda3.0": 30.08,
|
| 13 |
+
"nofilter_lambda4.0": 30.2,
|
| 14 |
+
"nofilter_lambda6.0": 30.39,
|
| 15 |
+
"filter_lambda0.0": 33.71,
|
| 16 |
+
"filter_lambda0.25": 32.5,
|
| 17 |
+
"filter_lambda0.5": 31.52,
|
| 18 |
+
"filter_lambda0.75": 30.95,
|
| 19 |
+
"filter_lambda1.0": 30.54,
|
| 20 |
+
"filter_lambda1.25": 30.34,
|
| 21 |
+
"filter_lambda1.5": 30.33,
|
| 22 |
+
"filter_lambda2.0": 30.13,
|
| 23 |
+
"filter_lambda2.5": 30.06,
|
| 24 |
+
"filter_lambda3.0": 30.08,
|
| 25 |
+
"filter_lambda4.0": 30.2,
|
| 26 |
+
"filter_lambda6.0": 30.39
|
| 27 |
+
},
|
| 28 |
+
"dev_lennorm_best": {
|
| 29 |
+
"nofilter": 2.5,
|
| 30 |
+
"filter": 2.5
|
| 31 |
+
},
|
| 32 |
+
"dev": {
|
| 33 |
+
"beam_top": 33.71,
|
| 34 |
+
"beam_filter": 33.71,
|
| 35 |
+
"beam_bonus": 29.18,
|
| 36 |
+
"sygma": 29.18
|
| 37 |
+
},
|
| 38 |
+
"dev_beta_curve": {
|
| 39 |
+
"nofilter": {
|
| 40 |
+
"0.0": 33.71,
|
| 41 |
+
"0.25": 31.28,
|
| 42 |
+
"0.5": 29.92,
|
| 43 |
+
"0.75": 29.37,
|
| 44 |
+
"1.0": 29.18,
|
| 45 |
+
"1.25": 29.18,
|
| 46 |
+
"1.5": 29.19,
|
| 47 |
+
"2.0": 29.32,
|
| 48 |
+
"2.5": 29.48,
|
| 49 |
+
"3.0": 29.51
|
| 50 |
+
},
|
| 51 |
+
"filter": {
|
| 52 |
+
"0.0": 33.71,
|
| 53 |
+
"0.25": 31.28,
|
| 54 |
+
"0.5": 29.92,
|
| 55 |
+
"0.75": 29.37,
|
| 56 |
+
"1.0": 29.18,
|
| 57 |
+
"1.25": 29.18,
|
| 58 |
+
"1.5": 29.19,
|
| 59 |
+
"2.0": 29.32,
|
| 60 |
+
"2.5": 29.48,
|
| 61 |
+
"3.0": 29.51
|
| 62 |
+
}
|
| 63 |
+
},
|
| 64 |
+
"dev_youtube_only_beam_top": 33.57,
|
| 65 |
+
"test": {
|
| 66 |
+
"sada_test": {
|
| 67 |
+
"greedy": {
|
| 68 |
+
"wer": 36.57,
|
| 69 |
+
"S": 17082,
|
| 70 |
+
"D": 8777,
|
| 71 |
+
"I": 4168,
|
| 72 |
+
"N": 82107,
|
| 73 |
+
"degenerate": 110
|
| 74 |
+
},
|
| 75 |
+
"beam_top": {
|
| 76 |
+
"wer": 37.85,
|
| 77 |
+
"S": 15268,
|
| 78 |
+
"D": 13228,
|
| 79 |
+
"I": 2580,
|
| 80 |
+
"N": 82107,
|
| 81 |
+
"degenerate": 25
|
| 82 |
+
},
|
| 83 |
+
"beam_filter": {
|
| 84 |
+
"wer": 37.84,
|
| 85 |
+
"S": 15268,
|
| 86 |
+
"D": 13216,
|
| 87 |
+
"I": 2584,
|
| 88 |
+
"N": 82107,
|
| 89 |
+
"degenerate": 16
|
| 90 |
+
},
|
| 91 |
+
"beam_bonus": {
|
| 92 |
+
"wer": 33.68,
|
| 93 |
+
"S": 16708,
|
| 94 |
+
"D": 7224,
|
| 95 |
+
"I": 3721,
|
| 96 |
+
"N": 82107,
|
| 97 |
+
"degenerate": 32
|
| 98 |
+
},
|
| 99 |
+
"sygma": {
|
| 100 |
+
"wer": 33.6,
|
| 101 |
+
"S": 16687,
|
| 102 |
+
"D": 7248,
|
| 103 |
+
"I": 3653,
|
| 104 |
+
"N": 82107,
|
| 105 |
+
"degenerate": 16
|
| 106 |
+
},
|
| 107 |
+
"sygma_release": {
|
| 108 |
+
"wer": 33.58,
|
| 109 |
+
"S": 16688,
|
| 110 |
+
"D": 7255,
|
| 111 |
+
"I": 3626,
|
| 112 |
+
"N": 82107,
|
| 113 |
+
"degenerate": 16
|
| 114 |
+
},
|
| 115 |
+
"lennorm": {
|
| 116 |
+
"wer": 34.11,
|
| 117 |
+
"S": 16989,
|
| 118 |
+
"D": 7415,
|
| 119 |
+
"I": 3603,
|
| 120 |
+
"N": 82107,
|
| 121 |
+
"degenerate": 61
|
| 122 |
+
},
|
| 123 |
+
"lennorm_filter": {
|
| 124 |
+
"wer": 33.95,
|
| 125 |
+
"S": 17021,
|
| 126 |
+
"D": 7326,
|
| 127 |
+
"I": 3530,
|
| 128 |
+
"N": 82107,
|
| 129 |
+
"degenerate": 16
|
| 130 |
+
},
|
| 131 |
+
"qwen": {
|
| 132 |
+
"wer": 33.65,
|
| 133 |
+
"S": 16861,
|
| 134 |
+
"D": 6851,
|
| 135 |
+
"I": 3915,
|
| 136 |
+
"N": 82107,
|
| 137 |
+
"degenerate": 16
|
| 138 |
+
},
|
| 139 |
+
"nolm_b15": {
|
| 140 |
+
"wer": 33.71,
|
| 141 |
+
"S": 16933,
|
| 142 |
+
"D": 6810,
|
| 143 |
+
"I": 3938,
|
| 144 |
+
"N": 82107,
|
| 145 |
+
"degenerate": 16
|
| 146 |
+
},
|
| 147 |
+
"audar_raw": {
|
| 148 |
+
"wer": 35.52,
|
| 149 |
+
"S": 16866,
|
| 150 |
+
"D": 2964,
|
| 151 |
+
"I": 9335,
|
| 152 |
+
"N": 82107,
|
| 153 |
+
"degenerate": 40
|
| 154 |
+
},
|
| 155 |
+
"audar_fix": {
|
| 156 |
+
"wer": 28.24,
|
| 157 |
+
"S": 16486,
|
| 158 |
+
"D": 3062,
|
| 159 |
+
"I": 3641,
|
| 160 |
+
"N": 82107,
|
| 161 |
+
"degenerate": 0
|
| 162 |
+
},
|
| 163 |
+
"clips": 6087
|
| 164 |
+
},
|
| 165 |
+
"commonvoice_test": {
|
| 166 |
+
"greedy": {
|
| 167 |
+
"wer": 5.41,
|
| 168 |
+
"S": 2557,
|
| 169 |
+
"D": 172,
|
| 170 |
+
"I": 144,
|
| 171 |
+
"N": 53104,
|
| 172 |
+
"degenerate": 0
|
| 173 |
+
},
|
| 174 |
+
"beam_top": {
|
| 175 |
+
"wer": 5.23,
|
| 176 |
+
"S": 2473,
|
| 177 |
+
"D": 174,
|
| 178 |
+
"I": 130,
|
| 179 |
+
"N": 53104,
|
| 180 |
+
"degenerate": 0
|
| 181 |
+
},
|
| 182 |
+
"beam_filter": {
|
| 183 |
+
"wer": 5.23,
|
| 184 |
+
"S": 2473,
|
| 185 |
+
"D": 174,
|
| 186 |
+
"I": 130,
|
| 187 |
+
"N": 53104,
|
| 188 |
+
"degenerate": 0
|
| 189 |
+
},
|
| 190 |
+
"beam_bonus": {
|
| 191 |
+
"wer": 5.26,
|
| 192 |
+
"S": 2493,
|
| 193 |
+
"D": 117,
|
| 194 |
+
"I": 184,
|
| 195 |
+
"N": 53104,
|
| 196 |
+
"degenerate": 0
|
| 197 |
+
},
|
| 198 |
+
"sygma": {
|
| 199 |
+
"wer": 5.26,
|
| 200 |
+
"S": 2493,
|
| 201 |
+
"D": 117,
|
| 202 |
+
"I": 184,
|
| 203 |
+
"N": 53104,
|
| 204 |
+
"degenerate": 0
|
| 205 |
+
},
|
| 206 |
+
"sygma_release": {
|
| 207 |
+
"wer": 5.28,
|
| 208 |
+
"S": 2501,
|
| 209 |
+
"D": 120,
|
| 210 |
+
"I": 184,
|
| 211 |
+
"N": 53104,
|
| 212 |
+
"degenerate": 0
|
| 213 |
+
},
|
| 214 |
+
"lennorm": {
|
| 215 |
+
"wer": 5.49,
|
| 216 |
+
"S": 2615,
|
| 217 |
+
"D": 158,
|
| 218 |
+
"I": 141,
|
| 219 |
+
"N": 53104,
|
| 220 |
+
"degenerate": 3
|
| 221 |
+
},
|
| 222 |
+
"lennorm_filter": {
|
| 223 |
+
"wer": 5.47,
|
| 224 |
+
"S": 2612,
|
| 225 |
+
"D": 152,
|
| 226 |
+
"I": 141,
|
| 227 |
+
"N": 53104,
|
| 228 |
+
"degenerate": 0
|
| 229 |
+
},
|
| 230 |
+
"qwen": {
|
| 231 |
+
"wer": 5.31,
|
| 232 |
+
"S": 2501,
|
| 233 |
+
"D": 108,
|
| 234 |
+
"I": 213,
|
| 235 |
+
"N": 53104,
|
| 236 |
+
"degenerate": 0
|
| 237 |
+
},
|
| 238 |
+
"nolm_b15": {
|
| 239 |
+
"wer": 5.33,
|
| 240 |
+
"S": 2508,
|
| 241 |
+
"D": 108,
|
| 242 |
+
"I": 212,
|
| 243 |
+
"N": 53104,
|
| 244 |
+
"degenerate": 0
|
| 245 |
+
},
|
| 246 |
+
"audar_raw": {
|
| 247 |
+
"wer": 8.13,
|
| 248 |
+
"S": 3836,
|
| 249 |
+
"D": 236,
|
| 250 |
+
"I": 247,
|
| 251 |
+
"N": 53104,
|
| 252 |
+
"degenerate": 0
|
| 253 |
+
},
|
| 254 |
+
"audar_fix": {
|
| 255 |
+
"wer": 8.13,
|
| 256 |
+
"S": 3836,
|
| 257 |
+
"D": 236,
|
| 258 |
+
"I": 247,
|
| 259 |
+
"N": 53104,
|
| 260 |
+
"degenerate": 0
|
| 261 |
+
},
|
| 262 |
+
"clips": 10471
|
| 263 |
+
},
|
| 264 |
+
"masc_test_clean": {
|
| 265 |
+
"greedy": {
|
| 266 |
+
"wer": 16.33,
|
| 267 |
+
"S": 9199,
|
| 268 |
+
"D": 1313,
|
| 269 |
+
"I": 471,
|
| 270 |
+
"N": 67274,
|
| 271 |
+
"degenerate": 4
|
| 272 |
+
},
|
| 273 |
+
"beam_top": {
|
| 274 |
+
"wer": 16.07,
|
| 275 |
+
"S": 9150,
|
| 276 |
+
"D": 1394,
|
| 277 |
+
"I": 266,
|
| 278 |
+
"N": 67274,
|
| 279 |
+
"degenerate": 1
|
| 280 |
+
},
|
| 281 |
+
"beam_filter": {
|
| 282 |
+
"wer": 16.07,
|
| 283 |
+
"S": 9150,
|
| 284 |
+
"D": 1394,
|
| 285 |
+
"I": 266,
|
| 286 |
+
"N": 67274,
|
| 287 |
+
"degenerate": 0
|
| 288 |
+
},
|
| 289 |
+
"beam_bonus": {
|
| 290 |
+
"wer": 15.95,
|
| 291 |
+
"S": 9213,
|
| 292 |
+
"D": 1098,
|
| 293 |
+
"I": 422,
|
| 294 |
+
"N": 67274,
|
| 295 |
+
"degenerate": 0
|
| 296 |
+
},
|
| 297 |
+
"sygma": {
|
| 298 |
+
"wer": 15.95,
|
| 299 |
+
"S": 9213,
|
| 300 |
+
"D": 1098,
|
| 301 |
+
"I": 422,
|
| 302 |
+
"N": 67274,
|
| 303 |
+
"degenerate": 0
|
| 304 |
+
},
|
| 305 |
+
"sygma_release": {
|
| 306 |
+
"wer": 15.97,
|
| 307 |
+
"S": 9216,
|
| 308 |
+
"D": 1108,
|
| 309 |
+
"I": 421,
|
| 310 |
+
"N": 67274,
|
| 311 |
+
"degenerate": 0
|
| 312 |
+
},
|
| 313 |
+
"lennorm": {
|
| 314 |
+
"wer": 16.01,
|
| 315 |
+
"S": 9238,
|
| 316 |
+
"D": 1182,
|
| 317 |
+
"I": 349,
|
| 318 |
+
"N": 67274,
|
| 319 |
+
"degenerate": 2
|
| 320 |
+
},
|
| 321 |
+
"lennorm_filter": {
|
| 322 |
+
"wer": 16.0,
|
| 323 |
+
"S": 9236,
|
| 324 |
+
"D": 1180,
|
| 325 |
+
"I": 349,
|
| 326 |
+
"N": 67274,
|
| 327 |
+
"degenerate": 0
|
| 328 |
+
},
|
| 329 |
+
"qwen": {
|
| 330 |
+
"wer": 16.1,
|
| 331 |
+
"S": 9243,
|
| 332 |
+
"D": 1060,
|
| 333 |
+
"I": 525,
|
| 334 |
+
"N": 67274,
|
| 335 |
+
"degenerate": 0
|
| 336 |
+
},
|
| 337 |
+
"nolm_b15": {
|
| 338 |
+
"wer": 16.09,
|
| 339 |
+
"S": 9235,
|
| 340 |
+
"D": 1055,
|
| 341 |
+
"I": 532,
|
| 342 |
+
"N": 67274,
|
| 343 |
+
"degenerate": 0
|
| 344 |
+
},
|
| 345 |
+
"audar_raw": {
|
| 346 |
+
"wer": 17.2,
|
| 347 |
+
"S": 9789,
|
| 348 |
+
"D": 1384,
|
| 349 |
+
"I": 396,
|
| 350 |
+
"N": 67274,
|
| 351 |
+
"degenerate": 0
|
| 352 |
+
},
|
| 353 |
+
"audar_fix": {
|
| 354 |
+
"wer": 17.2,
|
| 355 |
+
"S": 9789,
|
| 356 |
+
"D": 1384,
|
| 357 |
+
"I": 396,
|
| 358 |
+
"N": 67274,
|
| 359 |
+
"degenerate": 0
|
| 360 |
+
},
|
| 361 |
+
"clips": 8612
|
| 362 |
+
},
|
| 363 |
+
"masc_test_noisy": {
|
| 364 |
+
"greedy": {
|
| 365 |
+
"wer": 25.78,
|
| 366 |
+
"S": 13738,
|
| 367 |
+
"D": 2340,
|
| 368 |
+
"I": 1053,
|
| 369 |
+
"N": 66438,
|
| 370 |
+
"degenerate": 2
|
| 371 |
+
},
|
| 372 |
+
"beam_top": {
|
| 373 |
+
"wer": 25.62,
|
| 374 |
+
"S": 13383,
|
| 375 |
+
"D": 2754,
|
| 376 |
+
"I": 883,
|
| 377 |
+
"N": 66438,
|
| 378 |
+
"degenerate": 0
|
| 379 |
+
},
|
| 380 |
+
"beam_filter": {
|
| 381 |
+
"wer": 25.62,
|
| 382 |
+
"S": 13383,
|
| 383 |
+
"D": 2754,
|
| 384 |
+
"I": 883,
|
| 385 |
+
"N": 66438,
|
| 386 |
+
"degenerate": 0
|
| 387 |
+
},
|
| 388 |
+
"beam_bonus": {
|
| 389 |
+
"wer": 25.13,
|
| 390 |
+
"S": 13662,
|
| 391 |
+
"D": 1663,
|
| 392 |
+
"I": 1369,
|
| 393 |
+
"N": 66438,
|
| 394 |
+
"degenerate": 0
|
| 395 |
+
},
|
| 396 |
+
"sygma": {
|
| 397 |
+
"wer": 25.13,
|
| 398 |
+
"S": 13662,
|
| 399 |
+
"D": 1663,
|
| 400 |
+
"I": 1369,
|
| 401 |
+
"N": 66438,
|
| 402 |
+
"degenerate": 0
|
| 403 |
+
},
|
| 404 |
+
"sygma_release": {
|
| 405 |
+
"wer": 25.2,
|
| 406 |
+
"S": 13687,
|
| 407 |
+
"D": 1697,
|
| 408 |
+
"I": 1358,
|
| 409 |
+
"N": 66438,
|
| 410 |
+
"degenerate": 0
|
| 411 |
+
},
|
| 412 |
+
"lennorm": {
|
| 413 |
+
"wer": 25.42,
|
| 414 |
+
"S": 13840,
|
| 415 |
+
"D": 1878,
|
| 416 |
+
"I": 1173,
|
| 417 |
+
"N": 66438,
|
| 418 |
+
"degenerate": 3
|
| 419 |
+
},
|
| 420 |
+
"lennorm_filter": {
|
| 421 |
+
"wer": 25.41,
|
| 422 |
+
"S": 13841,
|
| 423 |
+
"D": 1867,
|
| 424 |
+
"I": 1173,
|
| 425 |
+
"N": 66438,
|
| 426 |
+
"degenerate": 0
|
| 427 |
+
},
|
| 428 |
+
"qwen": {
|
| 429 |
+
"wer": 25.25,
|
| 430 |
+
"S": 13744,
|
| 431 |
+
"D": 1527,
|
| 432 |
+
"I": 1506,
|
| 433 |
+
"N": 66438,
|
| 434 |
+
"degenerate": 0
|
| 435 |
+
},
|
| 436 |
+
"nolm_b15": {
|
| 437 |
+
"wer": 25.23,
|
| 438 |
+
"S": 13731,
|
| 439 |
+
"D": 1514,
|
| 440 |
+
"I": 1516,
|
| 441 |
+
"N": 66438,
|
| 442 |
+
"degenerate": 0
|
| 443 |
+
},
|
| 444 |
+
"audar_raw": {
|
| 445 |
+
"wer": 28.85,
|
| 446 |
+
"S": 15303,
|
| 447 |
+
"D": 2424,
|
| 448 |
+
"I": 1439,
|
| 449 |
+
"N": 66438,
|
| 450 |
+
"degenerate": 7
|
| 451 |
+
},
|
| 452 |
+
"audar_fix": {
|
| 453 |
+
"wer": 28.49,
|
| 454 |
+
"S": 15304,
|
| 455 |
+
"D": 2403,
|
| 456 |
+
"I": 1222,
|
| 457 |
+
"N": 66438,
|
| 458 |
+
"degenerate": 0
|
| 459 |
+
},
|
| 460 |
+
"clips": 9393
|
| 461 |
+
},
|
| 462 |
+
"mgb2_test": {
|
| 463 |
+
"greedy": {
|
| 464 |
+
"wer": 15.19,
|
| 465 |
+
"S": 5826,
|
| 466 |
+
"D": 3198,
|
| 467 |
+
"I": 756,
|
| 468 |
+
"N": 64381,
|
| 469 |
+
"degenerate": 10
|
| 470 |
+
},
|
| 471 |
+
"beam_top": {
|
| 472 |
+
"wer": 15.86,
|
| 473 |
+
"S": 5403,
|
| 474 |
+
"D": 4367,
|
| 475 |
+
"I": 440,
|
| 476 |
+
"N": 64381,
|
| 477 |
+
"degenerate": 1
|
| 478 |
+
},
|
| 479 |
+
"beam_filter": {
|
| 480 |
+
"wer": 15.86,
|
| 481 |
+
"S": 5403,
|
| 482 |
+
"D": 4367,
|
| 483 |
+
"I": 440,
|
| 484 |
+
"N": 64381,
|
| 485 |
+
"degenerate": 1
|
| 486 |
+
},
|
| 487 |
+
"beam_bonus": {
|
| 488 |
+
"wer": 13.56,
|
| 489 |
+
"S": 5704,
|
| 490 |
+
"D": 2188,
|
| 491 |
+
"I": 835,
|
| 492 |
+
"N": 64381,
|
| 493 |
+
"degenerate": 1
|
| 494 |
+
},
|
| 495 |
+
"sygma": {
|
| 496 |
+
"wer": 13.56,
|
| 497 |
+
"S": 5704,
|
| 498 |
+
"D": 2188,
|
| 499 |
+
"I": 835,
|
| 500 |
+
"N": 64381,
|
| 501 |
+
"degenerate": 1
|
| 502 |
+
},
|
| 503 |
+
"sygma_release": {
|
| 504 |
+
"wer": 13.57,
|
| 505 |
+
"S": 5708,
|
| 506 |
+
"D": 2196,
|
| 507 |
+
"I": 834,
|
| 508 |
+
"N": 64381,
|
| 509 |
+
"degenerate": 1
|
| 510 |
+
},
|
| 511 |
+
"lennorm": {
|
| 512 |
+
"wer": 13.76,
|
| 513 |
+
"S": 5676,
|
| 514 |
+
"D": 2461,
|
| 515 |
+
"I": 724,
|
| 516 |
+
"N": 64381,
|
| 517 |
+
"degenerate": 1
|
| 518 |
+
},
|
| 519 |
+
"lennorm_filter": {
|
| 520 |
+
"wer": 13.76,
|
| 521 |
+
"S": 5676,
|
| 522 |
+
"D": 2461,
|
| 523 |
+
"I": 724,
|
| 524 |
+
"N": 64381,
|
| 525 |
+
"degenerate": 1
|
| 526 |
+
},
|
| 527 |
+
"qwen": {
|
| 528 |
+
"wer": 13.48,
|
| 529 |
+
"S": 5697,
|
| 530 |
+
"D": 2017,
|
| 531 |
+
"I": 963,
|
| 532 |
+
"N": 64381,
|
| 533 |
+
"degenerate": 1
|
| 534 |
+
},
|
| 535 |
+
"nolm_b15": {
|
| 536 |
+
"wer": 13.57,
|
| 537 |
+
"S": 5753,
|
| 538 |
+
"D": 1999,
|
| 539 |
+
"I": 986,
|
| 540 |
+
"N": 64381,
|
| 541 |
+
"degenerate": 1
|
| 542 |
+
},
|
| 543 |
+
"audar_raw": {
|
| 544 |
+
"wer": 12.49,
|
| 545 |
+
"S": 4924,
|
| 546 |
+
"D": 2068,
|
| 547 |
+
"I": 1051,
|
| 548 |
+
"N": 64381,
|
| 549 |
+
"degenerate": 2
|
| 550 |
+
},
|
| 551 |
+
"audar_fix": {
|
| 552 |
+
"wer": 12.03,
|
| 553 |
+
"S": 4914,
|
| 554 |
+
"D": 2072,
|
| 555 |
+
"I": 757,
|
| 556 |
+
"N": 64381,
|
| 557 |
+
"degenerate": 0
|
| 558 |
+
},
|
| 559 |
+
"clips": 5365
|
| 560 |
+
},
|
| 561 |
+
"casablanca_test": {
|
| 562 |
+
"greedy": {
|
| 563 |
+
"wer": 45.7,
|
| 564 |
+
"S": 24226,
|
| 565 |
+
"D": 5085,
|
| 566 |
+
"I": 3204,
|
| 567 |
+
"N": 71145,
|
| 568 |
+
"degenerate": 29
|
| 569 |
+
},
|
| 570 |
+
"beam_top": {
|
| 571 |
+
"wer": 44.63,
|
| 572 |
+
"S": 22733,
|
| 573 |
+
"D": 6416,
|
| 574 |
+
"I": 2602,
|
| 575 |
+
"N": 71145,
|
| 576 |
+
"degenerate": 4
|
| 577 |
+
},
|
| 578 |
+
"beam_filter": {
|
| 579 |
+
"wer": 44.59,
|
| 580 |
+
"S": 22739,
|
| 581 |
+
"D": 6382,
|
| 582 |
+
"I": 2604,
|
| 583 |
+
"N": 71145,
|
| 584 |
+
"degenerate": 1
|
| 585 |
+
},
|
| 586 |
+
"beam_bonus": {
|
| 587 |
+
"wer": 44.75,
|
| 588 |
+
"S": 24011,
|
| 589 |
+
"D": 4000,
|
| 590 |
+
"I": 3827,
|
| 591 |
+
"N": 71145,
|
| 592 |
+
"degenerate": 6
|
| 593 |
+
},
|
| 594 |
+
"sygma": {
|
| 595 |
+
"wer": 44.75,
|
| 596 |
+
"S": 24010,
|
| 597 |
+
"D": 4002,
|
| 598 |
+
"I": 3824,
|
| 599 |
+
"N": 71145,
|
| 600 |
+
"degenerate": 1
|
| 601 |
+
},
|
| 602 |
+
"sygma_release": {
|
| 603 |
+
"wer": 44.77,
|
| 604 |
+
"S": 24010,
|
| 605 |
+
"D": 4019,
|
| 606 |
+
"I": 3820,
|
| 607 |
+
"N": 71145,
|
| 608 |
+
"degenerate": 1
|
| 609 |
+
},
|
| 610 |
+
"lennorm": {
|
| 611 |
+
"wer": 44.8,
|
| 612 |
+
"S": 24278,
|
| 613 |
+
"D": 4208,
|
| 614 |
+
"I": 3387,
|
| 615 |
+
"N": 71145,
|
| 616 |
+
"degenerate": 16
|
| 617 |
+
},
|
| 618 |
+
"lennorm_filter": {
|
| 619 |
+
"wer": 44.74,
|
| 620 |
+
"S": 24292,
|
| 621 |
+
"D": 4151,
|
| 622 |
+
"I": 3387,
|
| 623 |
+
"N": 71145,
|
| 624 |
+
"degenerate": 1
|
| 625 |
+
},
|
| 626 |
+
"qwen": {
|
| 627 |
+
"wer": 45.04,
|
| 628 |
+
"S": 24331,
|
| 629 |
+
"D": 3604,
|
| 630 |
+
"I": 4109,
|
| 631 |
+
"N": 71145,
|
| 632 |
+
"degenerate": 1
|
| 633 |
+
},
|
| 634 |
+
"nolm_b15": {
|
| 635 |
+
"wer": 45.08,
|
| 636 |
+
"S": 24369,
|
| 637 |
+
"D": 3566,
|
| 638 |
+
"I": 4135,
|
| 639 |
+
"N": 71145,
|
| 640 |
+
"degenerate": 1
|
| 641 |
+
},
|
| 642 |
+
"audar_raw": {
|
| 643 |
+
"wer": 56.05,
|
| 644 |
+
"S": 28385,
|
| 645 |
+
"D": 3834,
|
| 646 |
+
"I": 7659,
|
| 647 |
+
"N": 71145,
|
| 648 |
+
"degenerate": 41
|
| 649 |
+
},
|
| 650 |
+
"audar_fix": {
|
| 651 |
+
"wer": 50.18,
|
| 652 |
+
"S": 28302,
|
| 653 |
+
"D": 3817,
|
| 654 |
+
"I": 3584,
|
| 655 |
+
"N": 71145,
|
| 656 |
+
"degenerate": 0
|
| 657 |
+
},
|
| 658 |
+
"clips": 6726
|
| 659 |
+
},
|
| 660 |
+
"average": {
|
| 661 |
+
"greedy": 24.16,
|
| 662 |
+
"beam_top": 24.21,
|
| 663 |
+
"beam_filter": 24.2,
|
| 664 |
+
"beam_bonus": 23.05,
|
| 665 |
+
"sygma": 23.04,
|
| 666 |
+
"sygma_release": 23.06,
|
| 667 |
+
"lennorm": 23.27,
|
| 668 |
+
"lennorm_filter": 23.22,
|
| 669 |
+
"qwen": 23.14,
|
| 670 |
+
"nolm_b15": 23.17,
|
| 671 |
+
"audar_raw": 26.37,
|
| 672 |
+
"audar_fix": 24.05
|
| 673 |
+
}
|
| 674 |
+
},
|
| 675 |
+
"n_clusters": {
|
| 676 |
+
"sada_test": 44,
|
| 677 |
+
"commonvoice_test": 10471,
|
| 678 |
+
"masc_test_clean": 108,
|
| 679 |
+
"masc_test_noisy": 101,
|
| 680 |
+
"mgb2_test": 17,
|
| 681 |
+
"casablanca_test": 6010
|
| 682 |
+
},
|
| 683 |
+
"bootstrap": {
|
| 684 |
+
"sygma-greedy": {
|
| 685 |
+
"sada_test": {
|
| 686 |
+
"diff": -2.97,
|
| 687 |
+
"ci95": [
|
| 688 |
+
-4.03,
|
| 689 |
+
-2.07
|
| 690 |
+
]
|
| 691 |
+
},
|
| 692 |
+
"commonvoice_test": {
|
| 693 |
+
"diff": -0.15,
|
| 694 |
+
"ci95": [
|
| 695 |
+
-0.23,
|
| 696 |
+
-0.07
|
| 697 |
+
]
|
| 698 |
+
},
|
| 699 |
+
"masc_test_clean": {
|
| 700 |
+
"diff": -0.37,
|
| 701 |
+
"ci95": [
|
| 702 |
+
-0.63,
|
| 703 |
+
-0.15
|
| 704 |
+
]
|
| 705 |
+
},
|
| 706 |
+
"masc_test_noisy": {
|
| 707 |
+
"diff": -0.66,
|
| 708 |
+
"ci95": [
|
| 709 |
+
-0.94,
|
| 710 |
+
-0.38
|
| 711 |
+
]
|
| 712 |
+
},
|
| 713 |
+
"mgb2_test": {
|
| 714 |
+
"diff": -1.64,
|
| 715 |
+
"ci95": [
|
| 716 |
+
-2.31,
|
| 717 |
+
-1.04
|
| 718 |
+
]
|
| 719 |
+
},
|
| 720 |
+
"casablanca_test": {
|
| 721 |
+
"diff": -0.95,
|
| 722 |
+
"ci95": [
|
| 723 |
+
-1.45,
|
| 724 |
+
-0.52
|
| 725 |
+
]
|
| 726 |
+
},
|
| 727 |
+
"average": {
|
| 728 |
+
"diff": -1.12,
|
| 729 |
+
"ci95": [
|
| 730 |
+
-1.35,
|
| 731 |
+
-0.91
|
| 732 |
+
]
|
| 733 |
+
}
|
| 734 |
+
},
|
| 735 |
+
"beam_bonus-greedy": {
|
| 736 |
+
"sada_test": {
|
| 737 |
+
"diff": -2.89,
|
| 738 |
+
"ci95": [
|
| 739 |
+
-3.96,
|
| 740 |
+
-1.98
|
| 741 |
+
]
|
| 742 |
+
},
|
| 743 |
+
"commonvoice_test": {
|
| 744 |
+
"diff": -0.15,
|
| 745 |
+
"ci95": [
|
| 746 |
+
-0.23,
|
| 747 |
+
-0.07
|
| 748 |
+
]
|
| 749 |
+
},
|
| 750 |
+
"masc_test_clean": {
|
| 751 |
+
"diff": -0.37,
|
| 752 |
+
"ci95": [
|
| 753 |
+
-0.63,
|
| 754 |
+
-0.15
|
| 755 |
+
]
|
| 756 |
+
},
|
| 757 |
+
"masc_test_noisy": {
|
| 758 |
+
"diff": -0.66,
|
| 759 |
+
"ci95": [
|
| 760 |
+
-0.94,
|
| 761 |
+
-0.38
|
| 762 |
+
]
|
| 763 |
+
},
|
| 764 |
+
"mgb2_test": {
|
| 765 |
+
"diff": -1.64,
|
| 766 |
+
"ci95": [
|
| 767 |
+
-2.31,
|
| 768 |
+
-1.04
|
| 769 |
+
]
|
| 770 |
+
},
|
| 771 |
+
"casablanca_test": {
|
| 772 |
+
"diff": -0.95,
|
| 773 |
+
"ci95": [
|
| 774 |
+
-1.45,
|
| 775 |
+
-0.52
|
| 776 |
+
]
|
| 777 |
+
},
|
| 778 |
+
"average": {
|
| 779 |
+
"diff": -1.11,
|
| 780 |
+
"ci95": [
|
| 781 |
+
-1.34,
|
| 782 |
+
-0.9
|
| 783 |
+
]
|
| 784 |
+
}
|
| 785 |
+
},
|
| 786 |
+
"beam_filter-greedy": {
|
| 787 |
+
"sada_test": {
|
| 788 |
+
"diff": 1.27,
|
| 789 |
+
"ci95": [
|
| 790 |
+
0.05,
|
| 791 |
+
2.33
|
| 792 |
+
]
|
| 793 |
+
},
|
| 794 |
+
"commonvoice_test": {
|
| 795 |
+
"diff": -0.18,
|
| 796 |
+
"ci95": [
|
| 797 |
+
-0.25,
|
| 798 |
+
-0.12
|
| 799 |
+
]
|
| 800 |
+
},
|
| 801 |
+
"masc_test_clean": {
|
| 802 |
+
"diff": -0.26,
|
| 803 |
+
"ci95": [
|
| 804 |
+
-0.53,
|
| 805 |
+
-0.04
|
| 806 |
+
]
|
| 807 |
+
},
|
| 808 |
+
"masc_test_noisy": {
|
| 809 |
+
"diff": -0.17,
|
| 810 |
+
"ci95": [
|
| 811 |
+
-0.4,
|
| 812 |
+
0.06
|
| 813 |
+
]
|
| 814 |
+
},
|
| 815 |
+
"mgb2_test": {
|
| 816 |
+
"diff": 0.67,
|
| 817 |
+
"ci95": [
|
| 818 |
+
-0.07,
|
| 819 |
+
1.32
|
| 820 |
+
]
|
| 821 |
+
},
|
| 822 |
+
"casablanca_test": {
|
| 823 |
+
"diff": -1.11,
|
| 824 |
+
"ci95": [
|
| 825 |
+
-1.61,
|
| 826 |
+
-0.68
|
| 827 |
+
]
|
| 828 |
+
},
|
| 829 |
+
"average": {
|
| 830 |
+
"diff": 0.04,
|
| 831 |
+
"ci95": [
|
| 832 |
+
-0.21,
|
| 833 |
+
0.26
|
| 834 |
+
]
|
| 835 |
+
}
|
| 836 |
+
},
|
| 837 |
+
"beam_top-greedy": {
|
| 838 |
+
"sada_test": {
|
| 839 |
+
"diff": 1.28,
|
| 840 |
+
"ci95": [
|
| 841 |
+
0.06,
|
| 842 |
+
2.34
|
| 843 |
+
]
|
| 844 |
+
},
|
| 845 |
+
"commonvoice_test": {
|
| 846 |
+
"diff": -0.18,
|
| 847 |
+
"ci95": [
|
| 848 |
+
-0.25,
|
| 849 |
+
-0.12
|
| 850 |
+
]
|
| 851 |
+
},
|
| 852 |
+
"masc_test_clean": {
|
| 853 |
+
"diff": -0.26,
|
| 854 |
+
"ci95": [
|
| 855 |
+
-0.53,
|
| 856 |
+
-0.04
|
| 857 |
+
]
|
| 858 |
+
},
|
| 859 |
+
"masc_test_noisy": {
|
| 860 |
+
"diff": -0.17,
|
| 861 |
+
"ci95": [
|
| 862 |
+
-0.4,
|
| 863 |
+
0.06
|
| 864 |
+
]
|
| 865 |
+
},
|
| 866 |
+
"mgb2_test": {
|
| 867 |
+
"diff": 0.67,
|
| 868 |
+
"ci95": [
|
| 869 |
+
-0.07,
|
| 870 |
+
1.32
|
| 871 |
+
]
|
| 872 |
+
},
|
| 873 |
+
"casablanca_test": {
|
| 874 |
+
"diff": -1.07,
|
| 875 |
+
"ci95": [
|
| 876 |
+
-1.56,
|
| 877 |
+
-0.66
|
| 878 |
+
]
|
| 879 |
+
},
|
| 880 |
+
"average": {
|
| 881 |
+
"diff": 0.04,
|
| 882 |
+
"ci95": [
|
| 883 |
+
-0.21,
|
| 884 |
+
0.27
|
| 885 |
+
]
|
| 886 |
+
}
|
| 887 |
+
},
|
| 888 |
+
"sygma-beam_bonus": {
|
| 889 |
+
"sada_test": {
|
| 890 |
+
"diff": -0.08,
|
| 891 |
+
"ci95": [
|
| 892 |
+
-0.23,
|
| 893 |
+
-0.01
|
| 894 |
+
]
|
| 895 |
+
},
|
| 896 |
+
"commonvoice_test": {
|
| 897 |
+
"diff": 0.0,
|
| 898 |
+
"ci95": [
|
| 899 |
+
0.0,
|
| 900 |
+
0.0
|
| 901 |
+
]
|
| 902 |
+
},
|
| 903 |
+
"masc_test_clean": {
|
| 904 |
+
"diff": 0.0,
|
| 905 |
+
"ci95": [
|
| 906 |
+
0.0,
|
| 907 |
+
0.0
|
| 908 |
+
]
|
| 909 |
+
},
|
| 910 |
+
"masc_test_noisy": {
|
| 911 |
+
"diff": 0.0,
|
| 912 |
+
"ci95": [
|
| 913 |
+
0.0,
|
| 914 |
+
0.0
|
| 915 |
+
]
|
| 916 |
+
},
|
| 917 |
+
"mgb2_test": {
|
| 918 |
+
"diff": 0.0,
|
| 919 |
+
"ci95": [
|
| 920 |
+
0.0,
|
| 921 |
+
0.0
|
| 922 |
+
]
|
| 923 |
+
},
|
| 924 |
+
"casablanca_test": {
|
| 925 |
+
"diff": -0.0,
|
| 926 |
+
"ci95": [
|
| 927 |
+
-0.01,
|
| 928 |
+
0.0
|
| 929 |
+
]
|
| 930 |
+
},
|
| 931 |
+
"average": {
|
| 932 |
+
"diff": -0.01,
|
| 933 |
+
"ci95": [
|
| 934 |
+
-0.04,
|
| 935 |
+
-0.0
|
| 936 |
+
]
|
| 937 |
+
}
|
| 938 |
+
},
|
| 939 |
+
"sygma-beam_filter": {
|
| 940 |
+
"sada_test": {
|
| 941 |
+
"diff": -4.24,
|
| 942 |
+
"ci95": [
|
| 943 |
+
-5.43,
|
| 944 |
+
-3.15
|
| 945 |
+
]
|
| 946 |
+
},
|
| 947 |
+
"commonvoice_test": {
|
| 948 |
+
"diff": 0.03,
|
| 949 |
+
"ci95": [
|
| 950 |
+
-0.04,
|
| 951 |
+
0.1
|
| 952 |
+
]
|
| 953 |
+
},
|
| 954 |
+
"masc_test_clean": {
|
| 955 |
+
"diff": -0.11,
|
| 956 |
+
"ci95": [
|
| 957 |
+
-0.21,
|
| 958 |
+
-0.01
|
| 959 |
+
]
|
| 960 |
+
},
|
| 961 |
+
"masc_test_noisy": {
|
| 962 |
+
"diff": -0.49,
|
| 963 |
+
"ci95": [
|
| 964 |
+
-0.82,
|
| 965 |
+
-0.12
|
| 966 |
+
]
|
| 967 |
+
},
|
| 968 |
+
"mgb2_test": {
|
| 969 |
+
"diff": -2.3,
|
| 970 |
+
"ci95": [
|
| 971 |
+
-3.26,
|
| 972 |
+
-1.33
|
| 973 |
+
]
|
| 974 |
+
},
|
| 975 |
+
"casablanca_test": {
|
| 976 |
+
"diff": 0.16,
|
| 977 |
+
"ci95": [
|
| 978 |
+
-0.1,
|
| 979 |
+
0.4
|
| 980 |
+
]
|
| 981 |
+
},
|
| 982 |
+
"average": {
|
| 983 |
+
"diff": -1.16,
|
| 984 |
+
"ci95": [
|
| 985 |
+
-1.42,
|
| 986 |
+
-0.9
|
| 987 |
+
]
|
| 988 |
+
}
|
| 989 |
+
},
|
| 990 |
+
"sygma-lennorm_filter": {
|
| 991 |
+
"sada_test": {
|
| 992 |
+
"diff": -0.35,
|
| 993 |
+
"ci95": [
|
| 994 |
+
-0.68,
|
| 995 |
+
-0.06
|
| 996 |
+
]
|
| 997 |
+
},
|
| 998 |
+
"commonvoice_test": {
|
| 999 |
+
"diff": -0.21,
|
| 1000 |
+
"ci95": [
|
| 1001 |
+
-0.31,
|
| 1002 |
+
-0.11
|
| 1003 |
+
]
|
| 1004 |
+
},
|
| 1005 |
+
"masc_test_clean": {
|
| 1006 |
+
"diff": -0.05,
|
| 1007 |
+
"ci95": [
|
| 1008 |
+
-0.15,
|
| 1009 |
+
0.06
|
| 1010 |
+
]
|
| 1011 |
+
},
|
| 1012 |
+
"masc_test_noisy": {
|
| 1013 |
+
"diff": -0.28,
|
| 1014 |
+
"ci95": [
|
| 1015 |
+
-0.44,
|
| 1016 |
+
-0.14
|
| 1017 |
+
]
|
| 1018 |
+
},
|
| 1019 |
+
"mgb2_test": {
|
| 1020 |
+
"diff": -0.21,
|
| 1021 |
+
"ci95": [
|
| 1022 |
+
-0.43,
|
| 1023 |
+
0.03
|
| 1024 |
+
]
|
| 1025 |
+
},
|
| 1026 |
+
"casablanca_test": {
|
| 1027 |
+
"diff": 0.01,
|
| 1028 |
+
"ci95": [
|
| 1029 |
+
-0.18,
|
| 1030 |
+
0.19
|
| 1031 |
+
]
|
| 1032 |
+
},
|
| 1033 |
+
"average": {
|
| 1034 |
+
"diff": -0.18,
|
| 1035 |
+
"ci95": [
|
| 1036 |
+
-0.26,
|
| 1037 |
+
-0.1
|
| 1038 |
+
]
|
| 1039 |
+
}
|
| 1040 |
+
},
|
| 1041 |
+
"lennorm_filter-greedy": {
|
| 1042 |
+
"sada_test": {
|
| 1043 |
+
"diff": -2.62,
|
| 1044 |
+
"ci95": [
|
| 1045 |
+
-3.63,
|
| 1046 |
+
-1.76
|
| 1047 |
+
]
|
| 1048 |
+
},
|
| 1049 |
+
"commonvoice_test": {
|
| 1050 |
+
"diff": 0.06,
|
| 1051 |
+
"ci95": [
|
| 1052 |
+
-0.03,
|
| 1053 |
+
0.16
|
| 1054 |
+
]
|
| 1055 |
+
},
|
| 1056 |
+
"masc_test_clean": {
|
| 1057 |
+
"diff": -0.32,
|
| 1058 |
+
"ci95": [
|
| 1059 |
+
-0.62,
|
| 1060 |
+
-0.09
|
| 1061 |
+
]
|
| 1062 |
+
},
|
| 1063 |
+
"masc_test_noisy": {
|
| 1064 |
+
"diff": -0.38,
|
| 1065 |
+
"ci95": [
|
| 1066 |
+
-0.61,
|
| 1067 |
+
-0.12
|
| 1068 |
+
]
|
| 1069 |
+
},
|
| 1070 |
+
"mgb2_test": {
|
| 1071 |
+
"diff": -1.43,
|
| 1072 |
+
"ci95": [
|
| 1073 |
+
-1.95,
|
| 1074 |
+
-0.98
|
| 1075 |
+
]
|
| 1076 |
+
},
|
| 1077 |
+
"casablanca_test": {
|
| 1078 |
+
"diff": -0.96,
|
| 1079 |
+
"ci95": [
|
| 1080 |
+
-1.46,
|
| 1081 |
+
-0.55
|
| 1082 |
+
]
|
| 1083 |
+
},
|
| 1084 |
+
"average": {
|
| 1085 |
+
"diff": -0.94,
|
| 1086 |
+
"ci95": [
|
| 1087 |
+
-1.16,
|
| 1088 |
+
-0.75
|
| 1089 |
+
]
|
| 1090 |
+
}
|
| 1091 |
+
},
|
| 1092 |
+
"qwen-sygma": {
|
| 1093 |
+
"sada_test": {
|
| 1094 |
+
"diff": 0.05,
|
| 1095 |
+
"ci95": [
|
| 1096 |
+
-0.06,
|
| 1097 |
+
0.18
|
| 1098 |
+
]
|
| 1099 |
+
},
|
| 1100 |
+
"commonvoice_test": {
|
| 1101 |
+
"diff": 0.05,
|
| 1102 |
+
"ci95": [
|
| 1103 |
+
0.01,
|
| 1104 |
+
0.1
|
| 1105 |
+
]
|
| 1106 |
+
},
|
| 1107 |
+
"masc_test_clean": {
|
| 1108 |
+
"diff": 0.14,
|
| 1109 |
+
"ci95": [
|
| 1110 |
+
0.06,
|
| 1111 |
+
0.23
|
| 1112 |
+
]
|
| 1113 |
+
},
|
| 1114 |
+
"masc_test_noisy": {
|
| 1115 |
+
"diff": 0.12,
|
| 1116 |
+
"ci95": [
|
| 1117 |
+
0.05,
|
| 1118 |
+
0.21
|
| 1119 |
+
]
|
| 1120 |
+
},
|
| 1121 |
+
"mgb2_test": {
|
| 1122 |
+
"diff": -0.08,
|
| 1123 |
+
"ci95": [
|
| 1124 |
+
-0.16,
|
| 1125 |
+
0.02
|
| 1126 |
+
]
|
| 1127 |
+
},
|
| 1128 |
+
"casablanca_test": {
|
| 1129 |
+
"diff": 0.29,
|
| 1130 |
+
"ci95": [
|
| 1131 |
+
0.19,
|
| 1132 |
+
0.39
|
| 1133 |
+
]
|
| 1134 |
+
},
|
| 1135 |
+
"average": {
|
| 1136 |
+
"diff": 0.1,
|
| 1137 |
+
"ci95": [
|
| 1138 |
+
0.06,
|
| 1139 |
+
0.14
|
| 1140 |
+
]
|
| 1141 |
+
}
|
| 1142 |
+
},
|
| 1143 |
+
"qwen-nolm_b15": {
|
| 1144 |
+
"sada_test": {
|
| 1145 |
+
"diff": -0.07,
|
| 1146 |
+
"ci95": [
|
| 1147 |
+
-0.11,
|
| 1148 |
+
-0.02
|
| 1149 |
+
]
|
| 1150 |
+
},
|
| 1151 |
+
"commonvoice_test": {
|
| 1152 |
+
"diff": -0.01,
|
| 1153 |
+
"ci95": [
|
| 1154 |
+
-0.03,
|
| 1155 |
+
0.01
|
| 1156 |
+
]
|
| 1157 |
+
},
|
| 1158 |
+
"masc_test_clean": {
|
| 1159 |
+
"diff": 0.01,
|
| 1160 |
+
"ci95": [
|
| 1161 |
+
-0.02,
|
| 1162 |
+
0.03
|
| 1163 |
+
]
|
| 1164 |
+
},
|
| 1165 |
+
"masc_test_noisy": {
|
| 1166 |
+
"diff": 0.02,
|
| 1167 |
+
"ci95": [
|
| 1168 |
+
-0.02,
|
| 1169 |
+
0.06
|
| 1170 |
+
]
|
| 1171 |
+
},
|
| 1172 |
+
"mgb2_test": {
|
| 1173 |
+
"diff": -0.09,
|
| 1174 |
+
"ci95": [
|
| 1175 |
+
-0.12,
|
| 1176 |
+
-0.07
|
| 1177 |
+
]
|
| 1178 |
+
},
|
| 1179 |
+
"casablanca_test": {
|
| 1180 |
+
"diff": -0.04,
|
| 1181 |
+
"ci95": [
|
| 1182 |
+
-0.09,
|
| 1183 |
+
0.01
|
| 1184 |
+
]
|
| 1185 |
+
},
|
| 1186 |
+
"average": {
|
| 1187 |
+
"diff": -0.03,
|
| 1188 |
+
"ci95": [
|
| 1189 |
+
-0.04,
|
| 1190 |
+
-0.01
|
| 1191 |
+
]
|
| 1192 |
+
}
|
| 1193 |
+
},
|
| 1194 |
+
"sygma-audar_fix": {
|
| 1195 |
+
"sada_test": {
|
| 1196 |
+
"diff": 5.36,
|
| 1197 |
+
"ci95": [
|
| 1198 |
+
4.26,
|
| 1199 |
+
6.45
|
| 1200 |
+
]
|
| 1201 |
+
},
|
| 1202 |
+
"commonvoice_test": {
|
| 1203 |
+
"diff": -2.87,
|
| 1204 |
+
"ci95": [
|
| 1205 |
+
-3.13,
|
| 1206 |
+
-2.62
|
| 1207 |
+
]
|
| 1208 |
+
},
|
| 1209 |
+
"masc_test_clean": {
|
| 1210 |
+
"diff": -1.24,
|
| 1211 |
+
"ci95": [
|
| 1212 |
+
-1.57,
|
| 1213 |
+
-0.91
|
| 1214 |
+
]
|
| 1215 |
+
},
|
| 1216 |
+
"masc_test_noisy": {
|
| 1217 |
+
"diff": -3.36,
|
| 1218 |
+
"ci95": [
|
| 1219 |
+
-4.17,
|
| 1220 |
+
-2.56
|
| 1221 |
+
]
|
| 1222 |
+
},
|
| 1223 |
+
"mgb2_test": {
|
| 1224 |
+
"diff": 1.53,
|
| 1225 |
+
"ci95": [
|
| 1226 |
+
0.36,
|
| 1227 |
+
2.46
|
| 1228 |
+
]
|
| 1229 |
+
},
|
| 1230 |
+
"casablanca_test": {
|
| 1231 |
+
"diff": -5.44,
|
| 1232 |
+
"ci95": [
|
| 1233 |
+
-5.94,
|
| 1234 |
+
-4.93
|
| 1235 |
+
]
|
| 1236 |
+
},
|
| 1237 |
+
"average": {
|
| 1238 |
+
"diff": -1.0,
|
| 1239 |
+
"ci95": [
|
| 1240 |
+
-1.32,
|
| 1241 |
+
-0.71
|
| 1242 |
+
]
|
| 1243 |
+
}
|
| 1244 |
+
},
|
| 1245 |
+
"beam_bonus-audar_fix": {
|
| 1246 |
+
"sada_test": {
|
| 1247 |
+
"diff": 5.44,
|
| 1248 |
+
"ci95": [
|
| 1249 |
+
4.35,
|
| 1250 |
+
6.51
|
| 1251 |
+
]
|
| 1252 |
+
},
|
| 1253 |
+
"commonvoice_test": {
|
| 1254 |
+
"diff": -2.87,
|
| 1255 |
+
"ci95": [
|
| 1256 |
+
-3.13,
|
| 1257 |
+
-2.62
|
| 1258 |
+
]
|
| 1259 |
+
},
|
| 1260 |
+
"masc_test_clean": {
|
| 1261 |
+
"diff": -1.24,
|
| 1262 |
+
"ci95": [
|
| 1263 |
+
-1.57,
|
| 1264 |
+
-0.91
|
| 1265 |
+
]
|
| 1266 |
+
},
|
| 1267 |
+
"masc_test_noisy": {
|
| 1268 |
+
"diff": -3.36,
|
| 1269 |
+
"ci95": [
|
| 1270 |
+
-4.17,
|
| 1271 |
+
-2.56
|
| 1272 |
+
]
|
| 1273 |
+
},
|
| 1274 |
+
"mgb2_test": {
|
| 1275 |
+
"diff": 1.53,
|
| 1276 |
+
"ci95": [
|
| 1277 |
+
0.36,
|
| 1278 |
+
2.46
|
| 1279 |
+
]
|
| 1280 |
+
},
|
| 1281 |
+
"casablanca_test": {
|
| 1282 |
+
"diff": -5.43,
|
| 1283 |
+
"ci95": [
|
| 1284 |
+
-5.94,
|
| 1285 |
+
-4.92
|
| 1286 |
+
]
|
| 1287 |
+
},
|
| 1288 |
+
"average": {
|
| 1289 |
+
"diff": -0.99,
|
| 1290 |
+
"ci95": [
|
| 1291 |
+
-1.31,
|
| 1292 |
+
-0.7
|
| 1293 |
+
]
|
| 1294 |
+
}
|
| 1295 |
+
},
|
| 1296 |
+
"beam_bonus-lennorm": {
|
| 1297 |
+
"sada_test": {
|
| 1298 |
+
"diff": -0.43,
|
| 1299 |
+
"ci95": [
|
| 1300 |
+
-0.77,
|
| 1301 |
+
-0.13
|
| 1302 |
+
]
|
| 1303 |
+
},
|
| 1304 |
+
"commonvoice_test": {
|
| 1305 |
+
"diff": -0.23,
|
| 1306 |
+
"ci95": [
|
| 1307 |
+
-0.33,
|
| 1308 |
+
-0.13
|
| 1309 |
+
]
|
| 1310 |
+
},
|
| 1311 |
+
"masc_test_clean": {
|
| 1312 |
+
"diff": -0.05,
|
| 1313 |
+
"ci95": [
|
| 1314 |
+
-0.16,
|
| 1315 |
+
0.05
|
| 1316 |
+
]
|
| 1317 |
+
},
|
| 1318 |
+
"masc_test_noisy": {
|
| 1319 |
+
"diff": -0.3,
|
| 1320 |
+
"ci95": [
|
| 1321 |
+
-0.45,
|
| 1322 |
+
-0.15
|
| 1323 |
+
]
|
| 1324 |
+
},
|
| 1325 |
+
"mgb2_test": {
|
| 1326 |
+
"diff": -0.21,
|
| 1327 |
+
"ci95": [
|
| 1328 |
+
-0.43,
|
| 1329 |
+
0.03
|
| 1330 |
+
]
|
| 1331 |
+
},
|
| 1332 |
+
"casablanca_test": {
|
| 1333 |
+
"diff": -0.05,
|
| 1334 |
+
"ci95": [
|
| 1335 |
+
-0.25,
|
| 1336 |
+
0.15
|
| 1337 |
+
]
|
| 1338 |
+
},
|
| 1339 |
+
"average": {
|
| 1340 |
+
"diff": -0.21,
|
| 1341 |
+
"ci95": [
|
| 1342 |
+
-0.29,
|
| 1343 |
+
-0.13
|
| 1344 |
+
]
|
| 1345 |
+
}
|
| 1346 |
+
}
|
| 1347 |
+
},
|
| 1348 |
+
"nondegenerate_intersection": {
|
| 1349 |
+
"sada_test": {
|
| 1350 |
+
"clips": 5948,
|
| 1351 |
+
"greedy": 33.92,
|
| 1352 |
+
"sygma": 32.45,
|
| 1353 |
+
"audar_raw": 27.52,
|
| 1354 |
+
"audar_fix": 27.52
|
| 1355 |
+
},
|
| 1356 |
+
"commonvoice_test": {
|
| 1357 |
+
"clips": 10471,
|
| 1358 |
+
"greedy": 5.41,
|
| 1359 |
+
"sygma": 5.26,
|
| 1360 |
+
"audar_raw": 8.13,
|
| 1361 |
+
"audar_fix": 8.13
|
| 1362 |
+
},
|
| 1363 |
+
"masc_test_clean": {
|
| 1364 |
+
"clips": 8608,
|
| 1365 |
+
"greedy": 16.24,
|
| 1366 |
+
"sygma": 15.95,
|
| 1367 |
+
"audar_raw": 17.19,
|
| 1368 |
+
"audar_fix": 17.19
|
| 1369 |
+
},
|
| 1370 |
+
"masc_test_noisy": {
|
| 1371 |
+
"clips": 9384,
|
| 1372 |
+
"greedy": 25.75,
|
| 1373 |
+
"sygma": 25.11,
|
| 1374 |
+
"audar_raw": 28.48,
|
| 1375 |
+
"audar_fix": 28.48
|
| 1376 |
+
},
|
| 1377 |
+
"mgb2_test": {
|
| 1378 |
+
"clips": 5353,
|
| 1379 |
+
"greedy": 14.99,
|
| 1380 |
+
"sygma": 13.54,
|
| 1381 |
+
"audar_raw": 11.99,
|
| 1382 |
+
"audar_fix": 11.99
|
| 1383 |
+
},
|
| 1384 |
+
"casablanca_test": {
|
| 1385 |
+
"clips": 6660,
|
| 1386 |
+
"greedy": 44.86,
|
| 1387 |
+
"sygma": 44.37,
|
| 1388 |
+
"audar_raw": 49.83,
|
| 1389 |
+
"audar_fix": 49.83
|
| 1390 |
+
}
|
| 1391 |
+
},
|
| 1392 |
+
"sada_by_duration": {
|
| 1393 |
+
"0-5s": {
|
| 1394 |
+
"clips": 3960,
|
| 1395 |
+
"greedy": 42.07,
|
| 1396 |
+
"beam_top": 40.62,
|
| 1397 |
+
"beam_bonus": 39.99,
|
| 1398 |
+
"sygma": 39.71,
|
| 1399 |
+
"audar_fix": 33.65
|
| 1400 |
+
},
|
| 1401 |
+
"5-10s": {
|
| 1402 |
+
"clips": 1036,
|
| 1403 |
+
"greedy": 35.86,
|
| 1404 |
+
"beam_top": 37.62,
|
| 1405 |
+
"beam_bonus": 31.47,
|
| 1406 |
+
"sygma": 31.43,
|
| 1407 |
+
"audar_fix": 27.48
|
| 1408 |
+
},
|
| 1409 |
+
"10-20s": {
|
| 1410 |
+
"clips": 641,
|
| 1411 |
+
"greedy": 40.65,
|
| 1412 |
+
"beam_top": 45.76,
|
| 1413 |
+
"beam_bonus": 33.87,
|
| 1414 |
+
"sygma": 33.86,
|
| 1415 |
+
"audar_fix": 26.04
|
| 1416 |
+
},
|
| 1417 |
+
"20-31s": {
|
| 1418 |
+
"clips": 409,
|
| 1419 |
+
"greedy": 30.07,
|
| 1420 |
+
"beam_top": 30.36,
|
| 1421 |
+
"beam_bonus": 30.31,
|
| 1422 |
+
"sygma": 30.31,
|
| 1423 |
+
"audar_fix": 26.33
|
| 1424 |
+
}
|
| 1425 |
+
},
|
| 1426 |
+
"detector_audit": {
|
| 1427 |
+
"sada_test": {
|
| 1428 |
+
"references_flagged": 8,
|
| 1429 |
+
"references": 6087,
|
| 1430 |
+
"greedy_flagged": 110,
|
| 1431 |
+
"greedy_flagged_with_wer_le_50": 17,
|
| 1432 |
+
"examples_flagged_refs": [
|
| 1433 |
+
"لا لا لا لا لا لا مو معقول يا شباب",
|
| 1434 |
+
"هلا هلا هلا ضحية ضحية جديد يا هلا هلا هلا هه",
|
| 1435 |
+
"دوم دوم دوم تتاكدون دوم دوم تك اها دوم دوم تك",
|
| 1436 |
+
"حياكم الله تموا بسم الله الله يحييك الله يحييكم الله يحييك الله بسم الله",
|
| 1437 |
+
"بشويش بشويش بشويش بشويش بشويش بشويش بشويش بشويش بشويش بسم الله عليك يا فهد سمي يوبا يا سعد يا ولدي روح نام"
|
| 1438 |
+
],
|
| 1439 |
+
"filter_changed_choice": 16,
|
| 1440 |
+
"filter_changed_wer_bonus_only": 100.0,
|
| 1441 |
+
"filter_changed_wer_sygma": 61.99
|
| 1442 |
+
},
|
| 1443 |
+
"commonvoice_test": {
|
| 1444 |
+
"references_flagged": 1,
|
| 1445 |
+
"references": 10471,
|
| 1446 |
+
"greedy_flagged": 0,
|
| 1447 |
+
"greedy_flagged_with_wer_le_50": 0,
|
| 1448 |
+
"examples_flagged_refs": [
|
| 1449 |
+
"بالعــــــــــــــــزّ والأمــــــــــــــــان"
|
| 1450 |
+
],
|
| 1451 |
+
"filter_changed_choice": 0,
|
| 1452 |
+
"filter_changed_wer_bonus_only": null,
|
| 1453 |
+
"filter_changed_wer_sygma": null
|
| 1454 |
+
},
|
| 1455 |
+
"masc_test_clean": {
|
| 1456 |
+
"references_flagged": 1,
|
| 1457 |
+
"references": 8612,
|
| 1458 |
+
"greedy_flagged": 4,
|
| 1459 |
+
"greedy_flagged_with_wer_le_50": 2,
|
| 1460 |
+
"examples_flagged_refs": [
|
| 1461 |
+
"و راحه و طمانينه و سعاده و قرب و امل و تفاؤل"
|
| 1462 |
+
],
|
| 1463 |
+
"filter_changed_choice": 0,
|
| 1464 |
+
"filter_changed_wer_bonus_only": null,
|
| 1465 |
+
"filter_changed_wer_sygma": null
|
| 1466 |
+
},
|
| 1467 |
+
"masc_test_noisy": {
|
| 1468 |
+
"references_flagged": 1,
|
| 1469 |
+
"references": 9393,
|
| 1470 |
+
"greedy_flagged": 2,
|
| 1471 |
+
"greedy_flagged_with_wer_le_50": 0,
|
| 1472 |
+
"examples_flagged_refs": [
|
| 1473 |
+
"هيا هيا السندوتشات جاهزه هيا بنا هيا هيا هيا"
|
| 1474 |
+
],
|
| 1475 |
+
"filter_changed_choice": 0,
|
| 1476 |
+
"filter_changed_wer_bonus_only": null,
|
| 1477 |
+
"filter_changed_wer_sygma": null
|
| 1478 |
+
},
|
| 1479 |
+
"mgb2_test": {
|
| 1480 |
+
"references_flagged": 0,
|
| 1481 |
+
"references": 5365,
|
| 1482 |
+
"greedy_flagged": 10,
|
| 1483 |
+
"greedy_flagged_with_wer_le_50": 3,
|
| 1484 |
+
"examples_flagged_refs": [],
|
| 1485 |
+
"filter_changed_choice": 0,
|
| 1486 |
+
"filter_changed_wer_bonus_only": null,
|
| 1487 |
+
"filter_changed_wer_sygma": null
|
| 1488 |
+
},
|
| 1489 |
+
"casablanca_test": {
|
| 1490 |
+
"references_flagged": 4,
|
| 1491 |
+
"references": 6726,
|
| 1492 |
+
"greedy_flagged": 29,
|
| 1493 |
+
"greedy_flagged_with_wer_le_50": 3,
|
| 1494 |
+
"examples_flagged_refs": [
|
| 1495 |
+
"ههههههههههههههه",
|
| 1496 |
+
" لا لا لا لا لا لا قلت لك ماينفعش ",
|
| 1497 |
+
"يلا أبوي، يلا يلا يلا يلا يلا، جان ما تطير عنا الطيارة يلا أبوي",
|
| 1498 |
+
"تتصرف بنفس التصرف بالكف بالكف بالكف بالكف بالكف بالكف"
|
| 1499 |
+
],
|
| 1500 |
+
"filter_changed_choice": 5,
|
| 1501 |
+
"filter_changed_wer_bonus_only": 80.0,
|
| 1502 |
+
"filter_changed_wer_sygma": 75.0
|
| 1503 |
+
}
|
| 1504 |
+
},
|
| 1505 |
+
"reconstruction": {
|
| 1506 |
+
"sada_test": {
|
| 1507 |
+
"manifest_rows": 6189,
|
| 1508 |
+
"matched": 6087,
|
| 1509 |
+
"missing": 102,
|
| 1510 |
+
"rows_with_shared_text": 305,
|
| 1511 |
+
"rows_with_shared_text_and_duration_within_0.1s": 177,
|
| 1512 |
+
"missing_mean_duration": 17.55,
|
| 1513 |
+
"all_mean_duration": 6.25,
|
| 1514 |
+
"missing_mean_words": 35.63,
|
| 1515 |
+
"all_mean_words": 13.92
|
| 1516 |
+
},
|
| 1517 |
+
"casablanca_test": {
|
| 1518 |
+
"manifest_rows": 6726,
|
| 1519 |
+
"matched": 6726,
|
| 1520 |
+
"missing": 0,
|
| 1521 |
+
"rows_with_shared_text": 52,
|
| 1522 |
+
"rows_with_shared_text_and_duration_within_0.1s": 12,
|
| 1523 |
+
"missing_mean_duration": null,
|
| 1524 |
+
"all_mean_duration": 4.12,
|
| 1525 |
+
"missing_mean_words": null,
|
| 1526 |
+
"all_mean_words": 11.16
|
| 1527 |
+
}
|
| 1528 |
+
},
|
| 1529 |
+
"sensitivity_no_ambiguous": {
|
| 1530 |
+
"sada_test": {
|
| 1531 |
+
"clips": 5911,
|
| 1532 |
+
"greedy": 36.52,
|
| 1533 |
+
"beam_bonus": 33.63,
|
| 1534 |
+
"sygma": 33.55,
|
| 1535 |
+
"lennorm_filter": 33.87,
|
| 1536 |
+
"audar_fix": 28.25
|
| 1537 |
+
},
|
| 1538 |
+
"commonvoice_test": {
|
| 1539 |
+
"clips": 10471,
|
| 1540 |
+
"greedy": 5.41,
|
| 1541 |
+
"beam_bonus": 5.26,
|
| 1542 |
+
"sygma": 5.26,
|
| 1543 |
+
"lennorm_filter": 5.47,
|
| 1544 |
+
"audar_fix": 8.13
|
| 1545 |
+
},
|
| 1546 |
+
"masc_test_clean": {
|
| 1547 |
+
"clips": 8612,
|
| 1548 |
+
"greedy": 16.33,
|
| 1549 |
+
"beam_bonus": 15.95,
|
| 1550 |
+
"sygma": 15.95,
|
| 1551 |
+
"lennorm_filter": 16.0,
|
| 1552 |
+
"audar_fix": 17.2
|
| 1553 |
+
},
|
| 1554 |
+
"masc_test_noisy": {
|
| 1555 |
+
"clips": 9393,
|
| 1556 |
+
"greedy": 25.78,
|
| 1557 |
+
"beam_bonus": 25.13,
|
| 1558 |
+
"sygma": 25.13,
|
| 1559 |
+
"lennorm_filter": 25.41,
|
| 1560 |
+
"audar_fix": 28.49
|
| 1561 |
+
},
|
| 1562 |
+
"mgb2_test": {
|
| 1563 |
+
"clips": 5365,
|
| 1564 |
+
"greedy": 15.19,
|
| 1565 |
+
"beam_bonus": 13.56,
|
| 1566 |
+
"sygma": 13.56,
|
| 1567 |
+
"lennorm_filter": 13.76,
|
| 1568 |
+
"audar_fix": 12.03
|
| 1569 |
+
},
|
| 1570 |
+
"casablanca_test": {
|
| 1571 |
+
"clips": 6714,
|
| 1572 |
+
"greedy": 45.61,
|
| 1573 |
+
"beam_bonus": 44.67,
|
| 1574 |
+
"sygma": 44.66,
|
| 1575 |
+
"lennorm_filter": 44.65,
|
| 1576 |
+
"audar_fix": 50.12
|
| 1577 |
+
},
|
| 1578 |
+
"average": {
|
| 1579 |
+
"greedy": 24.14,
|
| 1580 |
+
"beam_bonus": 23.03,
|
| 1581 |
+
"sygma": 23.02,
|
| 1582 |
+
"lennorm_filter": 23.19,
|
| 1583 |
+
"audar_fix": 24.04
|
| 1584 |
+
},
|
| 1585 |
+
"removed": {
|
| 1586 |
+
"sada_test": 177,
|
| 1587 |
+
"casablanca_test": 12
|
| 1588 |
+
},
|
| 1589 |
+
"bootstrap": {
|
| 1590 |
+
"beam_bonus-greedy": {
|
| 1591 |
+
"sada_test": {
|
| 1592 |
+
"diff": -2.89,
|
| 1593 |
+
"ci95": [
|
| 1594 |
+
-3.97,
|
| 1595 |
+
-1.97
|
| 1596 |
+
]
|
| 1597 |
+
},
|
| 1598 |
+
"commonvoice_test": {
|
| 1599 |
+
"diff": -0.15,
|
| 1600 |
+
"ci95": [
|
| 1601 |
+
-0.23,
|
| 1602 |
+
-0.07
|
| 1603 |
+
]
|
| 1604 |
+
},
|
| 1605 |
+
"masc_test_clean": {
|
| 1606 |
+
"diff": -0.37,
|
| 1607 |
+
"ci95": [
|
| 1608 |
+
-0.63,
|
| 1609 |
+
-0.15
|
| 1610 |
+
]
|
| 1611 |
+
},
|
| 1612 |
+
"masc_test_noisy": {
|
| 1613 |
+
"diff": -0.66,
|
| 1614 |
+
"ci95": [
|
| 1615 |
+
-0.94,
|
| 1616 |
+
-0.38
|
| 1617 |
+
]
|
| 1618 |
+
},
|
| 1619 |
+
"mgb2_test": {
|
| 1620 |
+
"diff": -1.64,
|
| 1621 |
+
"ci95": [
|
| 1622 |
+
-2.32,
|
| 1623 |
+
-1.04
|
| 1624 |
+
]
|
| 1625 |
+
},
|
| 1626 |
+
"casablanca_test": {
|
| 1627 |
+
"diff": -0.94,
|
| 1628 |
+
"ci95": [
|
| 1629 |
+
-1.45,
|
| 1630 |
+
-0.52
|
| 1631 |
+
]
|
| 1632 |
+
},
|
| 1633 |
+
"average": {
|
| 1634 |
+
"diff": -1.11,
|
| 1635 |
+
"ci95": [
|
| 1636 |
+
-1.34,
|
| 1637 |
+
-0.9
|
| 1638 |
+
]
|
| 1639 |
+
}
|
| 1640 |
+
},
|
| 1641 |
+
"sygma-audar_fix": {
|
| 1642 |
+
"sada_test": {
|
| 1643 |
+
"diff": 5.3,
|
| 1644 |
+
"ci95": [
|
| 1645 |
+
4.21,
|
| 1646 |
+
6.37
|
| 1647 |
+
]
|
| 1648 |
+
},
|
| 1649 |
+
"commonvoice_test": {
|
| 1650 |
+
"diff": -2.87,
|
| 1651 |
+
"ci95": [
|
| 1652 |
+
-3.13,
|
| 1653 |
+
-2.62
|
| 1654 |
+
]
|
| 1655 |
+
},
|
| 1656 |
+
"masc_test_clean": {
|
| 1657 |
+
"diff": -1.24,
|
| 1658 |
+
"ci95": [
|
| 1659 |
+
-1.58,
|
| 1660 |
+
-0.91
|
| 1661 |
+
]
|
| 1662 |
+
},
|
| 1663 |
+
"masc_test_noisy": {
|
| 1664 |
+
"diff": -3.36,
|
| 1665 |
+
"ci95": [
|
| 1666 |
+
-4.19,
|
| 1667 |
+
-2.55
|
| 1668 |
+
]
|
| 1669 |
+
},
|
| 1670 |
+
"mgb2_test": {
|
| 1671 |
+
"diff": 1.53,
|
| 1672 |
+
"ci95": [
|
| 1673 |
+
0.38,
|
| 1674 |
+
2.48
|
| 1675 |
+
]
|
| 1676 |
+
},
|
| 1677 |
+
"casablanca_test": {
|
| 1678 |
+
"diff": -5.45,
|
| 1679 |
+
"ci95": [
|
| 1680 |
+
-5.95,
|
| 1681 |
+
-4.96
|
| 1682 |
+
]
|
| 1683 |
+
},
|
| 1684 |
+
"average": {
|
| 1685 |
+
"diff": -1.02,
|
| 1686 |
+
"ci95": [
|
| 1687 |
+
-1.33,
|
| 1688 |
+
-0.72
|
| 1689 |
+
]
|
| 1690 |
+
}
|
| 1691 |
+
},
|
| 1692 |
+
"beam_bonus-audar_fix": {
|
| 1693 |
+
"sada_test": {
|
| 1694 |
+
"diff": 5.38,
|
| 1695 |
+
"ci95": [
|
| 1696 |
+
4.31,
|
| 1697 |
+
6.44
|
| 1698 |
+
]
|
| 1699 |
+
},
|
| 1700 |
+
"commonvoice_test": {
|
| 1701 |
+
"diff": -2.87,
|
| 1702 |
+
"ci95": [
|
| 1703 |
+
-3.13,
|
| 1704 |
+
-2.62
|
| 1705 |
+
]
|
| 1706 |
+
},
|
| 1707 |
+
"masc_test_clean": {
|
| 1708 |
+
"diff": -1.24,
|
| 1709 |
+
"ci95": [
|
| 1710 |
+
-1.58,
|
| 1711 |
+
-0.91
|
| 1712 |
+
]
|
| 1713 |
+
},
|
| 1714 |
+
"masc_test_noisy": {
|
| 1715 |
+
"diff": -3.36,
|
| 1716 |
+
"ci95": [
|
| 1717 |
+
-4.19,
|
| 1718 |
+
-2.55
|
| 1719 |
+
]
|
| 1720 |
+
},
|
| 1721 |
+
"mgb2_test": {
|
| 1722 |
+
"diff": 1.53,
|
| 1723 |
+
"ci95": [
|
| 1724 |
+
0.38,
|
| 1725 |
+
2.48
|
| 1726 |
+
]
|
| 1727 |
+
},
|
| 1728 |
+
"casablanca_test": {
|
| 1729 |
+
"diff": -5.45,
|
| 1730 |
+
"ci95": [
|
| 1731 |
+
-5.95,
|
| 1732 |
+
-4.96
|
| 1733 |
+
]
|
| 1734 |
+
},
|
| 1735 |
+
"average": {
|
| 1736 |
+
"diff": -1.0,
|
| 1737 |
+
"ci95": [
|
| 1738 |
+
-1.32,
|
| 1739 |
+
-0.7
|
| 1740 |
+
]
|
| 1741 |
+
}
|
| 1742 |
+
}
|
| 1743 |
+
}
|
| 1744 |
+
},
|
| 1745 |
+
"examples_wer": {
|
| 1746 |
+
"6k_v_SBA_187_1-seg_287_573-290_051": {
|
| 1747 |
+
"greedy": 12.5,
|
| 1748 |
+
"beam_bonus": 12.5,
|
| 1749 |
+
"sygma": 12.5,
|
| 1750 |
+
"audar_raw": 12.5,
|
| 1751 |
+
"audar_fix": 12.5
|
| 1752 |
+
},
|
| 1753 |
+
"6k_SBA_116_0-seg_400_170-403_210": {
|
| 1754 |
+
"greedy": 57.1,
|
| 1755 |
+
"beam_bonus": 28.6,
|
| 1756 |
+
"sygma": 28.6,
|
| 1757 |
+
"audar_raw": 14.3,
|
| 1758 |
+
"audar_fix": 14.3
|
| 1759 |
+
},
|
| 1760 |
+
"6k_v_SBA_32_3-seg_284_515-290_800": {
|
| 1761 |
+
"greedy": 850.0,
|
| 1762 |
+
"beam_bonus": 83.3,
|
| 1763 |
+
"sygma": 83.3,
|
| 1764 |
+
"audar_raw": 7333.3,
|
| 1765 |
+
"audar_fix": 116.7
|
| 1766 |
+
},
|
| 1767 |
+
"6k_v_SBA_41_1-seg_133_300-152_850": {
|
| 1768 |
+
"greedy": 607.1,
|
| 1769 |
+
"beam_bonus": 100.0,
|
| 1770 |
+
"sygma": 100.0,
|
| 1771 |
+
"audar_raw": 1035.7,
|
| 1772 |
+
"audar_fix": 92.9
|
| 1773 |
+
}
|
| 1774 |
+
},
|
| 1775 |
+
"examples_reward_only_same_as_sygma": {
|
| 1776 |
+
"6k_v_SBA_187_1-seg_287_573-290_051": true,
|
| 1777 |
+
"6k_SBA_116_0-seg_400_170-403_210": true,
|
| 1778 |
+
"6k_v_SBA_32_3-seg_284_515-290_800": true,
|
| 1779 |
+
"6k_v_SBA_41_1-seg_133_300-152_850": false
|
| 1780 |
+
},
|
| 1781 |
+
"qwen_truncation": {
|
| 1782 |
+
"unique_hypotheses": 368358,
|
| 1783 |
+
"over_400_tokens": 0,
|
| 1784 |
+
"over_400_degenerate": 0
|
| 1785 |
+
}
|
| 1786 |
+
}
|
analysis/reviewer_analyses.py
ADDED
|
@@ -0,0 +1,388 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Offline analyses requested in review, computed from saved artifacts (no new decoding).
|
| 2 |
+
|
| 3 |
+
Inputs (downloaded from gdrive:ASR/...):
|
| 4 |
+
nbest/<set>.jsonl 8-best lists per clip: text, am (summed log-prob, length penalty 0),
|
| 5 |
+
degenerate flag, qwen (Qwen3-1.7B-Base log-prob, nats)
|
| 6 |
+
[gdrive:ASR/paper_artifacts/qwen_rescoring]
|
| 7 |
+
base/base_<set>.jsonl greedy outputs of the base model [gdrive:ASR/benchmarks/leaderboard_base]
|
| 8 |
+
audar/audar[fix]_<set> Audar raw / with repair [gdrive:ASR/paper_artifacts/pod_final_snapshot/bench_outputs]
|
| 9 |
+
lb/<set>.json leaderboard manifests (GitHub)
|
| 10 |
+
|
| 11 |
+
.venv/bin/python paper/analysis/reviewer_analyses.py --art <dir> --out paper/analysis/results.json
|
| 12 |
+
"""
|
| 13 |
+
|
| 14 |
+
import argparse
|
| 15 |
+
import json
|
| 16 |
+
import math
|
| 17 |
+
import random
|
| 18 |
+
import re
|
| 19 |
+
import sys
|
| 20 |
+
from collections import Counter, defaultdict
|
| 21 |
+
from pathlib import Path
|
| 22 |
+
|
| 23 |
+
# The decoder (sygma_asr.py + cohere_asr/) sits at the repository root in the Hugging Face release
|
| 24 |
+
# (analysis/ is one level down) and in hf_release/Sygma-ASR-Arabic/ in the development tree.
|
| 25 |
+
_here = Path(__file__).resolve().parent
|
| 26 |
+
DECODER = next(c for c in (_here.parent, _here.parents[1] / "hf_release" / "Sygma-ASR-Arabic")
|
| 27 |
+
if (c / "sygma_asr.py").exists())
|
| 28 |
+
sys.path.insert(0, str(DECODER))
|
| 29 |
+
from sygma_asr import is_degenerate # noqa: E402 (the released detector)
|
| 30 |
+
|
| 31 |
+
SETS = ["sada_test", "commonvoice_test", "masc_test_clean", "masc_test_noisy", "mgb2_test", "casablanca_test"]
|
| 32 |
+
BASE_FILES = {"sada_test": "base_sada_test", "commonvoice_test": "base_cv_commonvoice_test",
|
| 33 |
+
"masc_test_clean": "base_masc_test_clean", "masc_test_noisy": "base_masc_test_noisy",
|
| 34 |
+
"mgb2_test": "base_mgb2_test", "casablanca_test": "base_casablanca_test"}
|
| 35 |
+
BETA, Q_ALPHA, Q_BETA = 1.0, 0.01, 1.5
|
| 36 |
+
|
| 37 |
+
|
| 38 |
+
def normalize_arabic_text(text):
|
| 39 |
+
"""Verbatim copy of the leaderboard's eval.py normalization (= finetune/bench.py)."""
|
| 40 |
+
text = re.sub(r'[!"#$%&\'()*+,\-./:;<=>?@\[\\\]^_`{|}~،؛؟]', '', text)
|
| 41 |
+
text = re.sub(r'[ً-ْ]', '', text)
|
| 42 |
+
text = re.sub('پ', 'ب', text)
|
| 43 |
+
text = re.sub('ڤ', 'ف', text)
|
| 44 |
+
text = re.sub(r'[آ]', 'ا', text)
|
| 45 |
+
text = re.sub(r'[أإ]', 'ا', text)
|
| 46 |
+
text = re.sub(r'[ؤ]', 'و', text)
|
| 47 |
+
text = re.sub(r'[ئ]', 'ي', text)
|
| 48 |
+
text = re.sub(r'[ء]', '', text)
|
| 49 |
+
for e, w in zip('٠١٢٣٤٥٦٧٨٩', '0123456789'):
|
| 50 |
+
text = text.replace(e, w)
|
| 51 |
+
text = re.sub(r'(^|\s)و\s+', r'\1و', text)
|
| 52 |
+
return re.sub(r'\s+', ' ', text).strip()
|
| 53 |
+
|
| 54 |
+
|
| 55 |
+
def sdi(ref, hyp):
|
| 56 |
+
"""Word-level (substitutions, deletions, insertions, reference words), scored with jiwer
|
| 57 |
+
exactly as in finetune/bench.py."""
|
| 58 |
+
import jiwer
|
| 59 |
+
n = len(ref.split())
|
| 60 |
+
if not ref.strip():
|
| 61 |
+
return 0, 0, len(hyp.split()), 0
|
| 62 |
+
if not hyp.strip():
|
| 63 |
+
return 0, n, 0, n
|
| 64 |
+
o = jiwer.process_words(ref, hyp)
|
| 65 |
+
return o.substitutions, o.deletions, o.insertions, n
|
| 66 |
+
|
| 67 |
+
|
| 68 |
+
def _words(text):
|
| 69 |
+
"""Word count used for the benchmarked results: words after the leaderboard normalization
|
| 70 |
+
(finetune/rescore.py: len(N(t).split()))."""
|
| 71 |
+
return len(normalize_arabic_text(text).split())
|
| 72 |
+
|
| 73 |
+
|
| 74 |
+
def cluster_of(set_name, cid):
|
| 75 |
+
"""Recording-level cluster for the bootstrap (clips of one recording are resampled together)."""
|
| 76 |
+
if set_name == "sada_test": # 6k_v_SBA2_2011_1-seg_... -> episode 6k_v_SBA2_2011
|
| 77 |
+
return re.sub(r"_\d+$", "", cid.split("-seg")[0])
|
| 78 |
+
if set_name.startswith("masc"): # <video_id>_<start>
|
| 79 |
+
return cid.rsplit("_", 1)[0]
|
| 80 |
+
if set_name == "mgb2_test": # <program-guid>_spk-..._seg-...
|
| 81 |
+
return cid.split("_spk")[0]
|
| 82 |
+
if set_name == "casablanca_test": # <recording>_<segment>
|
| 83 |
+
return cid.split("_")[0]
|
| 84 |
+
return cid # Common Voice: no speaker id survives in the manifest (its `id` is unique per clip) -> clip level
|
| 85 |
+
|
| 86 |
+
|
| 87 |
+
def load_jsonl(p):
|
| 88 |
+
return [json.loads(l) for l in open(p, encoding="utf-8")]
|
| 89 |
+
|
| 90 |
+
|
| 91 |
+
def stem(name):
|
| 92 |
+
return Path(name).name.rsplit(".wav", 1)[0]
|
| 93 |
+
|
| 94 |
+
|
| 95 |
+
def pick(hyps, key, filt):
|
| 96 |
+
"""Benchmarked selection (finetune/rescore.py): if every hypothesis is degenerate, all are re-scored."""
|
| 97 |
+
pool = [h for h in hyps if not (filt and h["degenerate"])] or hyps
|
| 98 |
+
return max(pool, key=key)["text"]
|
| 99 |
+
|
| 100 |
+
|
| 101 |
+
def pick_release(hyps):
|
| 102 |
+
"""Released sygma_asr.py: word count on punctuation-stripped raw text; top beam if all are degenerate."""
|
| 103 |
+
from sygma_asr import _words as raw_words
|
| 104 |
+
good = [h for h in hyps if not h["degenerate"]]
|
| 105 |
+
return max(good, key=lambda h: h["am"] + BETA * raw_words(h["text"]))["text"] if good else hyps[0]["text"]
|
| 106 |
+
|
| 107 |
+
|
| 108 |
+
def main():
|
| 109 |
+
ap = argparse.ArgumentParser()
|
| 110 |
+
ap.add_argument("--art", required=True)
|
| 111 |
+
ap.add_argument("--out", required=True)
|
| 112 |
+
ap.add_argument("--boot", type=int, default=10000)
|
| 113 |
+
args = ap.parse_args()
|
| 114 |
+
art = Path(args.art)
|
| 115 |
+
res = {}
|
| 116 |
+
|
| 117 |
+
# token lengths for the length-normalization baseline (the model's own tokenizer)
|
| 118 |
+
from huggingface_hub import snapshot_download
|
| 119 |
+
from cohere_asr.tokenization_cohere_asr import CohereAsrTokenizer
|
| 120 |
+
tok = CohereAsrTokenizer.from_pretrained(snapshot_download("CohereLabs/cohere-transcribe-arabic-07-2026"))
|
| 121 |
+
tl_cache = {}
|
| 122 |
+
|
| 123 |
+
def ntok(t):
|
| 124 |
+
if t not in tl_cache:
|
| 125 |
+
tl_cache[t] = len(tok(t, add_special_tokens=False)["input_ids"]) + 1 # + EOS
|
| 126 |
+
return tl_cache[t]
|
| 127 |
+
|
| 128 |
+
# ---------- dev set: tune the length-normalization exponent (pooled 608 clips) ----------
|
| 129 |
+
dev = load_jsonl(art / "nbest/dev_youtube_najdi.jsonl") + load_jsonl(art / "nbest/dev_saudi_podcasts.jsonl")
|
| 130 |
+
|
| 131 |
+
def corpus_wer(pairs):
|
| 132 |
+
e = w = 0
|
| 133 |
+
for ref, hyp in pairs:
|
| 134 |
+
s, d, i, n = sdi(normalize_arabic_text(ref), normalize_arabic_text(hyp))
|
| 135 |
+
e += s + d + i
|
| 136 |
+
w += n
|
| 137 |
+
return 100 * e / w
|
| 138 |
+
|
| 139 |
+
lam_grid = [0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 2.0, 2.5, 3.0, 4.0, 6.0]
|
| 140 |
+
dev_ln = {}
|
| 141 |
+
for filt in (False, True):
|
| 142 |
+
for lam in lam_grid:
|
| 143 |
+
dev_ln[(filt, lam)] = corpus_wer([(r["ref"], pick(r["hyps"], lambda h: h["am"] / ntok(h["text"]) ** lam, filt)) for r in dev])
|
| 144 |
+
best_ln = {filt: min(lam_grid, key=lambda l: dev_ln[(filt, l)]) for filt in (False, True)}
|
| 145 |
+
res["dev_lennorm"] = {f"{'filter' if f else 'nofilter'}_lambda{l}": round(v, 2) for (f, l), v in dev_ln.items()}
|
| 146 |
+
res["dev_lennorm_best"] = {("filter" if f else "nofilter"): l for f, l in best_ln.items()}
|
| 147 |
+
dev_sys = {
|
| 148 |
+
"beam_top": lambda r: r["hyps"][0]["text"],
|
| 149 |
+
"beam_filter": lambda r: pick(r["hyps"], lambda h: h["am"], True),
|
| 150 |
+
"beam_bonus": lambda r: pick(r["hyps"], lambda h: h["am"] + BETA * _words(h["text"]), False),
|
| 151 |
+
"sygma": lambda r: pick(r["hyps"], lambda h: h["am"] + BETA * _words(h["text"]), True),
|
| 152 |
+
}
|
| 153 |
+
res["dev"] = {k: round(corpus_wer([(r["ref"], f(r)) for r in dev]), 2) for k, f in dev_sys.items()}
|
| 154 |
+
res["dev_beta_curve"] = {("filter" if filt else "nofilter"): {str(b): round(corpus_wer(
|
| 155 |
+
[(r["ref"], pick(r["hyps"], lambda h, b=b: h["am"] + b * _words(h["text"]), filt)) for r in dev]), 2)
|
| 156 |
+
for b in (0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 2.0, 2.5, 3.0)} for filt in (False, True)}
|
| 157 |
+
res["dev_youtube_only_beam_top"] = round(corpus_wer([(r["ref"], r["hyps"][0]["text"]) for r in dev[:600]]), 2)
|
| 158 |
+
|
| 159 |
+
# ---------- test sets ----------
|
| 160 |
+
systems = ["greedy", "beam_top", "beam_filter", "beam_bonus", "sygma", "sygma_release", "lennorm", "lennorm_filter",
|
| 161 |
+
"qwen", "nolm_b15", "audar_raw", "audar_fix"]
|
| 162 |
+
per = {} # set -> system -> list of (S, D, I, N) aligned by clip
|
| 163 |
+
meta = {}
|
| 164 |
+
for s in SETS:
|
| 165 |
+
nb = {stem(r["file"]): r for r in load_jsonl(art / f"nbest/{s}.jsonl")}
|
| 166 |
+
greedy = {stem(r["audio_filepath"]): r for r in load_jsonl(art / f"base/{BASE_FILES[s]}.jsonl")}
|
| 167 |
+
araw = {stem(r["audio_filepath"]): r for r in load_jsonl(art / f"audar/audar_{s}.jsonl")}
|
| 168 |
+
afix = {stem(r["audio_filepath"]): r for r in load_jsonl(art / f"audar/audarfix_{s}.jsonl")}
|
| 169 |
+
ids = [i for i in greedy if i in nb and i in araw and i in afix]
|
| 170 |
+
outs = defaultdict(list)
|
| 171 |
+
for cid in ids:
|
| 172 |
+
hy = nb[cid]["hyps"]
|
| 173 |
+
outs["greedy"].append(greedy[cid]["pred_text"])
|
| 174 |
+
outs["beam_top"].append(hy[0]["text"])
|
| 175 |
+
outs["beam_filter"].append(pick(hy, lambda h: h["am"], True))
|
| 176 |
+
outs["beam_bonus"].append(pick(hy, lambda h: h["am"] + BETA * _words(h["text"]), False))
|
| 177 |
+
outs["sygma"].append(pick(hy, lambda h: h["am"] + BETA * _words(h["text"]), True))
|
| 178 |
+
outs["sygma_release"].append(pick_release(hy))
|
| 179 |
+
outs["lennorm"].append(pick(hy, lambda h: h["am"] / ntok(h["text"]) ** best_ln[False], False))
|
| 180 |
+
outs["lennorm_filter"].append(pick(hy, lambda h: h["am"] / ntok(h["text"]) ** best_ln[True], True))
|
| 181 |
+
outs["qwen"].append(pick(hy, lambda h: h["am"] + Q_ALPHA * h["qwen"] + Q_BETA * _words(h["text"]), True))
|
| 182 |
+
outs["nolm_b15"].append(pick(hy, lambda h: h["am"] + Q_BETA * _words(h["text"]), True))
|
| 183 |
+
outs["audar_raw"].append(araw[cid]["pred_text"])
|
| 184 |
+
outs["audar_fix"].append(afix[cid]["pred_text"])
|
| 185 |
+
refs = [greedy[c]["text"] for c in ids]
|
| 186 |
+
per[s] = {k: [sdi(normalize_arabic_text(r), normalize_arabic_text(h)) for r, h in zip(refs, outs[k])] for k in systems}
|
| 187 |
+
meta[s] = {"ids": ids, "dur": [greedy[c]["duration"] for c in ids], "refs": refs,
|
| 188 |
+
"outs": outs,
|
| 189 |
+
"clusters": [greedy[c]["id"] if s == "commonvoice_test" else cluster_of(s, c) for c in ids]}
|
| 190 |
+
print(f"[{s}] {len(ids)} clips", flush=True)
|
| 191 |
+
|
| 192 |
+
def wer_of(rows, idx=None):
|
| 193 |
+
it = rows if idx is None else (rows[i] for i in idx)
|
| 194 |
+
e = w = 0
|
| 195 |
+
for a, b, c, n in it:
|
| 196 |
+
e += a + b + c
|
| 197 |
+
w += n
|
| 198 |
+
return 100 * e / w if w else float("nan")
|
| 199 |
+
|
| 200 |
+
table = {}
|
| 201 |
+
for s in SETS:
|
| 202 |
+
table[s] = {}
|
| 203 |
+
for k in systems:
|
| 204 |
+
S_ = sum(x[0] for x in per[s][k]); D = sum(x[1] for x in per[s][k]); I = sum(x[2] for x in per[s][k]); N = sum(x[3] for x in per[s][k])
|
| 205 |
+
table[s][k] = {"wer": round(wer_of(per[s][k]), 2), "S": S_, "D": D, "I": I, "N": N,
|
| 206 |
+
"degenerate": sum(is_degenerate(o) for o in meta[s]["outs"][k])}
|
| 207 |
+
table[s]["clips"] = len(meta[s]["ids"])
|
| 208 |
+
table["average"] = {k: round(sum(wer_of(per[s][k]) for s in SETS) / len(SETS), 2) for k in systems}
|
| 209 |
+
res["test"] = table
|
| 210 |
+
|
| 211 |
+
# ---------- paired cluster bootstrap (resample recordings; macro-average recomputed per replicate) ----------
|
| 212 |
+
import numpy as np
|
| 213 |
+
nrng = np.random.default_rng(0)
|
| 214 |
+
cl_idx, cl_err, cl_n = {}, {}, {}
|
| 215 |
+
for s in SETS:
|
| 216 |
+
names = sorted(set(meta[s]["clusters"]))
|
| 217 |
+
pos = {c: j for j, c in enumerate(names)}
|
| 218 |
+
cl_idx[s] = np.array([pos[c] for c in meta[s]["clusters"]])
|
| 219 |
+
cl_err[s], cl_n[s] = {}, {}
|
| 220 |
+
for k in systems:
|
| 221 |
+
e = np.array([a + b_ + c for a, b_, c, _ in per[s][k]], dtype=float)
|
| 222 |
+
n = np.array([x[3] for x in per[s][k]], dtype=float)
|
| 223 |
+
cl_err[s][k] = np.bincount(cl_idx[s], weights=e, minlength=len(names))
|
| 224 |
+
cl_n[s][k] = np.bincount(cl_idx[s], weights=n, minlength=len(names))
|
| 225 |
+
res["n_clusters"] = {s: int(cl_idx[s].max() + 1) for s in SETS}
|
| 226 |
+
# per-set, per-system WER for every replicate; replicates drawn in chunks to bound memory.
|
| 227 |
+
# Each replicate draws n_clusters recordings with replacement (multinomial counts), so a
|
| 228 |
+
# recording drawn twice contributes its errors and words twice.
|
| 229 |
+
boot = {s: {k: [] for k in systems} for s in SETS}
|
| 230 |
+
chunk = 1000
|
| 231 |
+
for start in range(0, args.boot, chunk):
|
| 232 |
+
m = min(chunk, args.boot - start)
|
| 233 |
+
for s in SETS:
|
| 234 |
+
n_c = res["n_clusters"][s]
|
| 235 |
+
cnt = nrng.multinomial(n_c, np.full(n_c, 1 / n_c), size=m).astype(np.float32)
|
| 236 |
+
for k in systems:
|
| 237 |
+
boot[s][k].append(100 * (cnt @ cl_err[s][k]) / (cnt @ cl_n[s][k]))
|
| 238 |
+
boot = {s: {k: np.concatenate(v) for k, v in d.items()} for s, d in boot.items()}
|
| 239 |
+
|
| 240 |
+
def boot_wer(s, k):
|
| 241 |
+
return boot[s][k]
|
| 242 |
+
|
| 243 |
+
def ci(v):
|
| 244 |
+
lo, hi = np.percentile(np.asarray(v), [2.5, 97.5]) # numpy default (linear interpolation)
|
| 245 |
+
return [round(float(lo), 2), round(float(hi), 2)]
|
| 246 |
+
|
| 247 |
+
pairs = [("sygma", "greedy"), ("beam_bonus", "greedy"), ("beam_filter", "greedy"), ("beam_top", "greedy"),
|
| 248 |
+
("sygma", "beam_bonus"), ("sygma", "beam_filter"), ("sygma", "lennorm_filter"), ("lennorm_filter", "greedy"),
|
| 249 |
+
("qwen", "sygma"), ("qwen", "nolm_b15"), ("sygma", "audar_fix"), ("beam_bonus", "audar_fix"),
|
| 250 |
+
("beam_bonus", "lennorm")]
|
| 251 |
+
res["bootstrap"] = {}
|
| 252 |
+
for a, bb in pairs:
|
| 253 |
+
d = {s: boot_wer(s, a) - boot_wer(s, bb) for s in SETS}
|
| 254 |
+
avg = sum(d[s] for s in SETS) / len(SETS)
|
| 255 |
+
point = {s: round(wer_of(per[s][a]) - wer_of(per[s][bb]), 2) for s in SETS}
|
| 256 |
+
point["average"] = round(sum(wer_of(per[s][a]) - wer_of(per[s][bb]) for s in SETS) / len(SETS), 2)
|
| 257 |
+
res["bootstrap"][f"{a}-{bb}"] = {**{s: {"diff": point[s], "ci95": ci(d[s])} for s in SETS},
|
| 258 |
+
"average": {"diff": point["average"], "ci95": ci(avg)}}
|
| 259 |
+
|
| 260 |
+
# ---------- same non-degenerate intersection ----------
|
| 261 |
+
inter = {}
|
| 262 |
+
for s in SETS:
|
| 263 |
+
o = meta[s]["outs"]
|
| 264 |
+
keep = [i for i in range(len(meta[s]["ids"]))
|
| 265 |
+
if not any(is_degenerate(o[k][i]) for k in ("greedy", "sygma", "audar_raw"))]
|
| 266 |
+
inter[s] = {"clips": len(keep), **{k: round(wer_of(per[s][k], keep), 2) for k in ("greedy", "sygma", "audar_raw", "audar_fix")}}
|
| 267 |
+
res["nondegenerate_intersection"] = inter
|
| 268 |
+
|
| 269 |
+
# ---------- SADA by duration (all clips) ----------
|
| 270 |
+
buckets = [(0, 5), (5, 10), (10, 20), (20, 31)]
|
| 271 |
+
dd = {}
|
| 272 |
+
for lo, hi in buckets:
|
| 273 |
+
idx = [i for i, d in enumerate(meta["sada_test"]["dur"]) if lo <= d < hi]
|
| 274 |
+
dd[f"{lo}-{hi}s"] = {"clips": len(idx), **{k: round(wer_of(per["sada_test"][k], idx), 2)
|
| 275 |
+
for k in ("greedy", "beam_top", "beam_bonus", "sygma", "audar_fix")}}
|
| 276 |
+
res["sada_by_duration"] = dd
|
| 277 |
+
|
| 278 |
+
# ---------- detector audit ----------
|
| 279 |
+
aud = {}
|
| 280 |
+
for s in SETS:
|
| 281 |
+
refs = meta[s]["refs"]
|
| 282 |
+
o = meta[s]["outs"]
|
| 283 |
+
flagged_refs = [r for r in refs if is_degenerate(r)]
|
| 284 |
+
fl = [i for i, h in enumerate(o["greedy"]) if is_degenerate(h)]
|
| 285 |
+
low = [i for i in fl if wer_of([per[s]["greedy"][i]]) <= 50]
|
| 286 |
+
aud[s] = {"references_flagged": len(flagged_refs), "references": len(refs),
|
| 287 |
+
"greedy_flagged": len(fl), "greedy_flagged_with_wer_le_50": len(low),
|
| 288 |
+
"examples_flagged_refs": flagged_refs[:5]}
|
| 289 |
+
# clips where the filter changed Sygma's choice vs. bonus-only, and the effect
|
| 290 |
+
ch = [i for i in range(len(refs)) if o["sygma"][i] != o["beam_bonus"][i]]
|
| 291 |
+
aud[s]["filter_changed_choice"] = len(ch)
|
| 292 |
+
aud[s]["filter_changed_wer_bonus_only"] = round(wer_of(per[s]["beam_bonus"], ch), 2) if ch else None
|
| 293 |
+
aud[s]["filter_changed_wer_sygma"] = round(wer_of(per[s]["sygma"], ch), 2) if ch else None
|
| 294 |
+
res["detector_audit"] = aud
|
| 295 |
+
|
| 296 |
+
# ---------- benchmark reconstruction audit ----------
|
| 297 |
+
rec = {}
|
| 298 |
+
for s in ("sada_test", "casablanca_test"):
|
| 299 |
+
lb = [json.loads(l) for l in open(art / f"lb/{s}.json", encoding="utf-8")]
|
| 300 |
+
texts = Counter(normalize_arabic_text(r["text"]) for r in lb)
|
| 301 |
+
lid = lambda r: r.get("id") or stem(r["audio_filepath"])
|
| 302 |
+
have = set(meta[s]["ids"])
|
| 303 |
+
missing = [r for r in lb if lid(r) not in have]
|
| 304 |
+
amb = [r for r in lb if texts[normalize_arabic_text(r["text"])] > 1]
|
| 305 |
+
amb_dur = [r for r in amb if sum(1 for q in amb if normalize_arabic_text(q["text"]) == normalize_arabic_text(r["text"])
|
| 306 |
+
and abs(q["duration"] - r["duration"]) <= 0.1) > 1]
|
| 307 |
+
rec[s] = {"manifest_rows": len(lb), "matched": len(lb) - len(missing), "missing": len(missing),
|
| 308 |
+
"rows_with_shared_text": len(amb), "rows_with_shared_text_and_duration_within_0.1s": len(amb_dur),
|
| 309 |
+
"missing_mean_duration": round(sum(r["duration"] for r in missing) / len(missing), 2) if missing else None,
|
| 310 |
+
"all_mean_duration": round(sum(r["duration"] for r in lb) / len(lb), 2),
|
| 311 |
+
"missing_mean_words": round(sum(len(r["text"].split()) for r in missing) / len(missing), 2) if missing else None,
|
| 312 |
+
"all_mean_words": round(sum(len(r["text"].split()) for r in lb) / len(lb), 2)}
|
| 313 |
+
res["reconstruction"] = rec
|
| 314 |
+
|
| 315 |
+
# ---------- sensitivity: drop leaderboard rows whose text+duration match is ambiguous ----------
|
| 316 |
+
sens = {}
|
| 317 |
+
amb_ids = {}
|
| 318 |
+
for s in ("sada_test", "casablanca_test"):
|
| 319 |
+
lb = [json.loads(l) for l in open(art / f"lb/{s}.json", encoding="utf-8")]
|
| 320 |
+
lid = lambda r: r.get("id") or stem(r["audio_filepath"])
|
| 321 |
+
by_text = defaultdict(list)
|
| 322 |
+
for r in lb:
|
| 323 |
+
by_text[normalize_arabic_text(r["text"])].append(r)
|
| 324 |
+
amb_ids[s] = {lid(r) for grp in by_text.values() if len(grp) > 1 for r in grp
|
| 325 |
+
if sum(1 for q in grp if abs(q["duration"] - r["duration"]) <= 0.1) > 1}
|
| 326 |
+
for s in SETS:
|
| 327 |
+
keep = [i for i, c in enumerate(meta[s]["ids"]) if c not in amb_ids.get(s, set())]
|
| 328 |
+
sens[s] = {"clips": len(keep), **{k: round(wer_of(per[s][k], keep), 2)
|
| 329 |
+
for k in ("greedy", "beam_bonus", "sygma", "lennorm_filter", "audar_fix")}}
|
| 330 |
+
sens["average"] = {k: round(sum(sens[s][k] for s in SETS) / len(SETS), 2)
|
| 331 |
+
for k in ("greedy", "beam_bonus", "sygma", "lennorm_filter", "audar_fix")}
|
| 332 |
+
sens["removed"] = {s: len(amb_ids[s]) for s in amb_ids}
|
| 333 |
+
keepmask = {s: [c not in amb_ids.get(s, set()) for c in meta[s]["ids"]] for s in SETS}
|
| 334 |
+
sb = {s: {} for s in SETS}
|
| 335 |
+
for s in SETS:
|
| 336 |
+
idx = [i for i, k in enumerate(keepmask[s]) if k]
|
| 337 |
+
names = sorted({meta[s]["clusters"][i] for i in idx}); pos = {c: j for j, c in enumerate(names)}
|
| 338 |
+
ci_ = np.array([pos[meta[s]["clusters"][i]] for i in idx])
|
| 339 |
+
for k in ("greedy", "beam_bonus", "sygma", "audar_fix"):
|
| 340 |
+
e = np.array([sum(per[s][k][i][:3]) for i in idx], float); n = np.array([per[s][k][i][3] for i in idx], float)
|
| 341 |
+
sb[s][k] = (np.bincount(ci_, weights=e, minlength=len(names)), np.bincount(ci_, weights=n, minlength=len(names)))
|
| 342 |
+
sb[s]["_n"] = len(names)
|
| 343 |
+
srng = np.random.default_rng(1)
|
| 344 |
+
acc = {pr: {s: [] for s in SETS} for pr in [("beam_bonus", "greedy"), ("sygma", "audar_fix"), ("beam_bonus", "audar_fix")]}
|
| 345 |
+
for start in range(0, args.boot, 1000):
|
| 346 |
+
m = min(1000, args.boot - start)
|
| 347 |
+
for s in SETS:
|
| 348 |
+
n_c = sb[s]["_n"]; cnt = srng.multinomial(n_c, np.full(n_c, 1 / n_c), size=m).astype(np.float32)
|
| 349 |
+
w = {k: 100 * (cnt @ sb[s][k][0]) / (cnt @ sb[s][k][1]) for k in ("greedy", "beam_bonus", "sygma", "audar_fix")}
|
| 350 |
+
for a_, b_ in acc:
|
| 351 |
+
acc[(a_, b_)][s].append(w[a_] - w[b_])
|
| 352 |
+
sens["bootstrap"] = {}
|
| 353 |
+
for (a_, b_), d in acc.items():
|
| 354 |
+
d = {s: np.concatenate(v) for s, v in d.items()}
|
| 355 |
+
avg = sum(d[s] for s in SETS) / len(SETS)
|
| 356 |
+
kept = {s: [i for i, k in enumerate(keepmask[s]) if k] for s in SETS}
|
| 357 |
+
pt = {s: wer_of(per[s][a_], kept[s]) - wer_of(per[s][b_], kept[s]) for s in SETS}
|
| 358 |
+
sens["bootstrap"][f"{a_}-{b_}"] = {**{s: {"diff": round(pt[s], 2), "ci95": ci(d[s])} for s in SETS},
|
| 359 |
+
"average": {"diff": round(sum(pt.values()) / len(SETS), 2), "ci95": ci(avg)}}
|
| 360 |
+
res["sensitivity_no_ambiguous"] = sens
|
| 361 |
+
|
| 362 |
+
# ---------- WER of the example outputs (Table: real outputs) ----------
|
| 363 |
+
ex_ids = ["6k_v_SBA_187_1-seg_287_573-290_051", "6k_SBA_116_0-seg_400_170-403_210",
|
| 364 |
+
"6k_v_SBA_32_3-seg_284_515-290_800", "6k_v_SBA_41_1-seg_133_300-152_850"]
|
| 365 |
+
pos = {c: i for i, c in enumerate(meta["sada_test"]["ids"])}
|
| 366 |
+
res["examples_wer"] = {c: {k: round(wer_of([per["sada_test"][k][pos[c]]]), 1)
|
| 367 |
+
for k in ("greedy", "beam_bonus", "sygma", "audar_raw", "audar_fix")} for c in ex_ids}
|
| 368 |
+
res["examples_reward_only_same_as_sygma"] = {c: meta["sada_test"]["outs"]["beam_bonus"][pos[c]] == meta["sada_test"]["outs"]["sygma"][pos[c]] for c in ex_ids}
|
| 369 |
+
|
| 370 |
+
# ---------- Qwen truncation: hypotheses longer than 400 Qwen tokens ----------
|
| 371 |
+
try:
|
| 372 |
+
from transformers import AutoTokenizer
|
| 373 |
+
qtok = AutoTokenizer.from_pretrained("Qwen/Qwen3-1.7B-Base")
|
| 374 |
+
texts = {h["text"] for s in SETS + ["dev_youtube_najdi", "dev_saudi_podcasts"]
|
| 375 |
+
for r in load_jsonl(art / f"nbest/{s}.jsonl") for h in r["hyps"]}
|
| 376 |
+
long_ = [t for t in texts if len(qtok(t, add_special_tokens=False)["input_ids"]) > 400]
|
| 377 |
+
res["qwen_truncation"] = {"unique_hypotheses": len(texts), "over_400_tokens": len(long_),
|
| 378 |
+
"over_400_degenerate": sum(is_degenerate(t) for t in long_)}
|
| 379 |
+
except Exception as e: # tokenizer download unavailable
|
| 380 |
+
res["qwen_truncation"] = {"error": str(e)}
|
| 381 |
+
|
| 382 |
+
Path(args.out).write_text(json.dumps(res, ensure_ascii=False, indent=1))
|
| 383 |
+
print(json.dumps({k: res[k] for k in ("dev", "dev_lennorm_best")}, indent=1))
|
| 384 |
+
print(json.dumps(res["test"]["average"], indent=1))
|
| 385 |
+
|
| 386 |
+
|
| 387 |
+
if __name__ == "__main__":
|
| 388 |
+
main()
|
paper_artifacts/README.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Paper artifacts: predictions and 8-best lists
|
| 2 |
+
|
| 3 |
+
These are the per-clip system outputs behind every table of the paper *Sygma ASR Arabic: Improving Dialectal Speech Recognition through Length-Corrected N-Best Decoding*.
|
| 4 |
+
|
| 5 |
+
**No reference transcripts are included.** `analysis/attach_references.py` re-attaches them from their public sources:
|
| 6 |
+
|
| 7 |
+
- **Test sets:** the [Open Universal Arabic ASR Leaderboard](https://github.com/Natural-Language-Processing-Elm/open_universal_arabic_asr_leaderboard) manifests, at commit `8fce8595b49057c98bafc2ba41b69c331cb5176e`.
|
| 8 |
+
- **Development sets:** `ahmedsamirtarjama/youtube_najdi` and `HuggingPanda/Saudi_Podcasts_ASR`, at pinned revisions, matched by row index.
|
| 9 |
+
|
| 10 |
+
| Path | Contents |
|
| 11 |
+
|---|---|
|
| 12 |
+
| `nbest/<set>.jsonl` | One row per clip: `file`, and `hyps` holding 8 hypotheses, each with `text`, `am` (summed log-prob, length penalty 0), `degenerate` and `qwen` (Qwen3-1.7B-Base log-prob, nats). Test sets plus the two development sets. |
|
| 13 |
+
| `base/base_<set>.jsonl` | Greedy output of the pretrained base model (`pred_text`), with `audio_filepath`, `duration` and the manifest `id`. |
|
| 14 |
+
| `audar/audar_<set>.jsonl` | Audar-ASR-V1-Turbo output in our pipeline, with its model-card settings. |
|
| 15 |
+
| `audar/audarfix_<set>.jsonl` | The same, after re-decoding degenerate outputs (system-specific repair). |
|
| 16 |
+
|
| 17 |
+
Audar-ASR-V1-Turbo outputs were produced under the AudarAI Community License v1.0 for research benchmarking. They are published as evaluation results and imply no endorsement by AudarAI. Test-set audio is not redistributed; rebuild it from the public mirrors (see the paper, Section 3).
|
paper_artifacts/audar/audar_casablanca_test.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
paper_artifacts/audar/audar_commonvoice_test.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
paper_artifacts/audar/audar_masc_test_clean.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
paper_artifacts/audar/audar_masc_test_noisy.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
paper_artifacts/audar/audar_mgb2_test.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
paper_artifacts/audar/audar_sada_test.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
paper_artifacts/audar/audarfix_casablanca_test.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
paper_artifacts/audar/audarfix_commonvoice_test.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
paper_artifacts/audar/audarfix_masc_test_clean.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
paper_artifacts/audar/audarfix_masc_test_noisy.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
paper_artifacts/audar/audarfix_mgb2_test.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
paper_artifacts/audar/audarfix_sada_test.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
paper_artifacts/base/base_casablanca_test.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
paper_artifacts/base/base_cv_commonvoice_test.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
paper_artifacts/base/base_masc_test_clean.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
paper_artifacts/base/base_masc_test_noisy.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
paper_artifacts/base/base_mgb2_test.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
paper_artifacts/base/base_sada_test.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
paper_artifacts/nbest/casablanca_test.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
paper_artifacts/nbest/commonvoice_test.jsonl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:142ce85260b95affa70c0e2b4876a9450d91184b0883a2c24b426b318e052ff6
|
| 3 |
+
size 12811945
|
paper_artifacts/nbest/dev_saudi_podcasts.jsonl
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{"file": "saudi_podcasts_000084.wav", "hyps": [{"text": "ما ادري لكن في تلك اللحظه يعني حسن طويري الله يعطيك العافيه ولا الله يسامحك؟ لا الله يعطيه العافيه الله يعطيه العافيه هذه ترى لحظات عجيبه لانه يعني فعلا وكل واحد عنده قصه في هذه المرحله اللي يقول كنت قاعد وجاء ابوي قال يلا مشينا نسجل ولا جاء اخوي قال يلا ولا جاء فلان قال وهذه البعض يشوفها مشكله اصلا في النظام التعليمي انه يعني انت في ذاك المرحله ما تدري وش تبغى وما تدري وش نعم", "am": -7.562635898590088, "degenerate": false, "qwen": -545.8482666015625}, {"text": "ما ادري لكن في تلك اللحظه يعني حسن طويرقي الله يعطيك العافيه ولا الله يسامحك؟ لا الله يعطيه العافيه الله يعطيه العافيه هذه ترى لحظات عجيبه لانه يعني فعلا وكل واحد عنده قصه في هذه المرحله اللي يقول كنت قاعد وجاء ابوي قال يلا مشينا نسجل ولا جاء اخوي قال يلا ولا جاء فلان قال وهذه البعض يشوفها مشكله اصلا في النظام التعليمي انه يعني انت في ذاك المرحله ما تدري وش تبغى وما تدري وش نعم", "am": -7.793780326843262, "degenerate": false, "qwen": -554.79638671875}, {"text": "ما ادري لكن في تلك اللحظه يعني حسن طويري الله يعطيك العافيه ولا الله يسامحك؟ لا الله يعطيه العافيه الله يعطيه العافيه هذه ترى لحظات عجيبه لانه يعني فعلا وكل واحد عنده قصه في هذه المرحله اللي يقول كنت قاعد وجاء ابوي قال يلا مشينا نسجل ولا جاء اخوي قال يلا ولا جاء فلان قال وهذه البعض يشوفها مشكله اصلا في النظام التعليمي انه يعني انت في ذاك المرحله ما تدري وش تبغى وما تدري وش نعم صحيح", "am": -8.130192756652832, "degenerate": false, "qwen": -551.9638671875}, {"text": "ما ادري لكن في تلك اللحظه يعني حسن طويرقي الله يعطيك العافيه ولا الله يسامحك؟ لا الله يعطيه العافيه الله يعطيه العافيه هذه ترى لحظات عجيبه لانه يعني فعلا وكل واحد عنده قصه في هذه المرحله اللي يقول كنت قاعد وجاء ابوي قال يلا مشينا نسجل ولا جاء اخوي قال يلا ولا جاء فلان قال وهذه البعض يشوفها مشكله اصلا في النظام التعليمي انه يعني انت في ذاك المرحله ما تدري وش تبغى وما تدري وش نعم صحيح", "am": -8.360993385314941, "degenerate": false, "qwen": -561.0250854492188}, {"text": "ما ادري لكن في تلك اللحظه يعني حسن طويري الله يعطيك العافيه ولا الله يسامحك؟ لا الله يعطيه العافيه الله يعطيه العافيه هذه ترى لحظات عجيبه لان يعني فعلا وكل واحد عنده قصه في هذه المرحله اللي يقول كنت قاعد وجاء ابوي قال يلا مشينا نسجل ولا جاء اخوي قال يلا ولا جاء فلان قال وهذه البعض يشوفها مشكله اصلا في النظام التعليمي انه يعني انت في ذاك المرحله ما تدري وش تبغى وما تدري وش نعم", "am": -8.563798904418945, "degenerate": false, "qwen": -548.62109375}, {"text": "ما ادري لكن في تلك اللحظه يعني حسن طويرقي الله يعطيك العافيه ولا الله يسامحك؟ لا الله يعطيه العافيه الله يعطيه العافيه هذه ترى لحظات عجيبه لان يعني فعلا وكل واحد عنده قصه في هذه المرحله اللي يقول كنت قاعد وجاء ابوي قال يلا مشينا نسجل ولا جاء اخوي قال يلا ولا جاء فلان قال وهذه البعض يشوفها مشكله اصلا في النظام التعليمي انه يعني انت في ذاك المرحله ما تدري وش تبغى وما تدري وش نعم", "am": -8.737364768981934, "degenerate": false, "qwen": -557.5285034179688}, {"text": "ما ادري لكن في تلك اللحظه يعني حسن طويري الله يعطيك العافيه ولا الله يسامحك؟ لا الله يعطيه العافيه الله يعطيه العافيه هذه ترى لحظات عجيبه لان يعني فعلا وكل واحد عنده قصه في هذه المرحله اللي يقول كنت قاعد وجاء ابوي قال يلا مشينا نسجل ولا جاء اخوي قال يلا ولا جاء فلان قال وهذه البعض يشوفها مشكله اصلا في النظام التعليمي انه يعني انت في ذاك المرحله ما تدري وش تبغى وما تدري وش نعم صحيح", "am": -8.98222827911377, "degenerate": false, "qwen": -554.4840087890625}, {"text": "ما ادري لكن في تلك اللحظه يعني حسن طويرقي الله يعطيك العافيه ولا الله يسامحك؟ لا الله يعطيه العافيه الله يعطيه العافيه هذه ترى لحظات عجيبه لان يعني فعلا وكل واحد عنده قصه في هذه المرحله اللي يقول كنت قاعد وجاء ابوي قال يلا مشينا نسجل ولا جاء اخوي قال يلا ولا جاء فلان قال وهذه البعض يشوفها مشكله اصلا في النظام التعليمي انه يعني انت في ذاك المرحله ما تدري وش تبغى وما تدري وش نعم صحيح", "am": -9.161344528198242, "degenerate": false, "qwen": -563.6232299804688}]}
|
| 2 |
+
{"file": "saudi_podcasts_000083.wav", "hyps": [{"text": "قلت له هذا رايك؟ قال انت والله يا ولدي ما تعرف مصلحتك، انا اعرف مصلحتك. هذا الحوار دقيقه تخيل حوار ما يتجاوز الدقيقه. سحبت بطاقه ثانيه وسجلت رياضيات اولا واحياء ثانيه ودرست اربع سنوات بامر حسن الطيرقي. يا ساتر وهذا 20 سنه بعدها رياضيات. طبعا انا احب الرياضيات لكني احب الاحياء اكثر منها. الى الان؟ والله شوف الان لا.", "am": -6.1986308097839355, "degenerate": false, "qwen": -484.0925598144531}, {"text": "قلت له هذا رايك؟ قال انت والله يا ولدي ما تعرف مصلحتك، انا اعرف مصلحتك. هذا الحوار دقيقه تخيل حوار ما يتجاوز الدقيقه. سحبت بطاقه ثانيه وسجلت رياضيات اولا واحياء ثانيه ودرست اربع سنوات بامر حسن الطيرقي. يا ساتر وهذا 20 سنه بعدها رياضيات طبعا انا احب الرياضيات لكني احب الاحياء اكثر منها. الى الان؟ والله شوف الان لا.", "am": -6.53135871887207, "degenerate": false, "qwen": -488.34759521484375}, {"text": "قلت له هذا رايك؟ قال انت والله يا ولدي ما تعرف مصلحتك، انا اعرف مصلحتك. هذا الحوار دقيقه تخيل حوار ما يتجاوز الدقيقه. سحبت بطاقه ثانيه وسجلت رياضيات اولا واحياء ثانيه ودرست اربع سنوات بامر حسن الطيرقي. يا ساتر وهذا 20 سنه بعدها رياضيات طبعا انا احب الرياضيات لكني احب الاحياء اكثر منها. الى الان؟ والله شوف الان لا", "am": -6.6481122970581055, "degenerate": false, "qwen": -489.72808837890625}, {"text": "قلت له هذا رايك؟ قال انت والله يا ولدي ما تعرف مصلحتك، انا اعرف مصلحتك. هذا الحوار دقيقه تخيل حوار ما يتجاوز الدقيقه. سحبت بطاقه ثانيه وسجلت رياضيات اولى واحياء ثانيه ودرست اربع سنوات بامر حسن الطيرقي. يا ساتر وهذا 20 سنه بعدها رياضيات. طبعا انا احب الرياضيات لكني احب الاحياء اكثر منها. الى الان؟ والله شوف الان لا.", "am": -6.746990203857422, "degenerate": false, "qwen": -487.637939453125}, {"text": "قلت له هذا رايك؟ قال انت والله يا ولدي ما تعرف مصلحتك، انا اعرف مصلحتك. هذا الحوار دقيقه تخيل حوار ما يتجاوز الدقيقه. سحبت بطاقه ثانيه وسجلت رياضيات اولى واحياء ثانيه ودرست اربع سنوات بامر حسن الطيرقي. يا ساتر وهذا 20 سنه بعدها رياضيات طبعا انا احب الرياضيات لكني احب الاحياء اكثر منها. الى الان؟ والله شوف الان لا.", "am": -7.061420440673828, "degenerate": false, "qwen": -492.4940185546875}, {"text": "قلت له هذا رايك؟ قال انت والله يا ولدي ما تعرف مصلحتك، انا اعرف مصلحتك. هذا الحوار دقيقه تخيل حوار ما يتجاوز الدقيقه. سحبت بطاقه ثانيه وسجلت رياضيات اولا واحياء ثانيه ودرست اربع سنوات بامر حسن الطيرقي. يا ساتر وهذا 20 سنه بعدها رياضيات. طبعا انا احب الرياضيات لكني احب الاحياء اكثر منها. الى الان؟ والله شوف الان لا", "am": -7.065371513366699, "degenerate": false, "qwen": -485.50408935546875}, {"text": "قلت له هذا رايك؟ قال انت والله يا ولدي ما تعرف مصلحتك، انا اعرف مصلحتك. هذا الحوار دقيقه تخيل حوار ما يتجاوز الدقيقه. سحبت بطاقه ثانيه وسجلت رياضيات اولا واحياء ثانيه ودرست اربع سنوات بامر حسن الطيرقي. يا ساتر، وهذا 20 سنه بعدها رياضيات. طبعا انا احب الرياضيات لكني احب الاحياء اكثر منها. الى الان؟ والله شوف الان لا.", "am": -7.205840587615967, "degenerate": false, "qwen": -488.0591735839844}, {"text": "قلت له هذا رايك؟ قال انت والله يا ولدي ما تعرف مصلحتك، انا اعرف مصلحتك. هذا الحوار دقيقه تخيل حوار ما يتجاوز الدقيقه. سحبت بطاقه ثانيه وسجلت رياضيات اولى واحياء ثانيه ودرست اربع سنوات بامر حسن الطيرقي. يا ساتر وهذا 20 سنه بعدها رياضيات طبعا انا احب الرياضيات لكني احب الاحياء اكثر منها. الى الان؟ والله شوف الان لا", "am": -7.302462577819824, "degenerate": false, "qwen": -493.82843017578125}]}
|
| 3 |
+
{"file": "saudi_podcasts_000115.wav", "hyps": [{"text": "ف كل شيء مسجل علشان علشان تمشي المساله بطريقه بطريقه مخططه حلو هل تحس ان طريقه الكتابه والتدوين لها دور يعني انا بالنسبه لي اتخيل اني بطلع ابلكيشن ولا شيء وبحطها بجوالي انت لا طابعها في ورقه وش الفرق بين والله لا انا ما اقول لك ما في فرق بس انا رجل تقليدي لا زلت الى الان رجل تقليدي واحتفظ بهذه الاشياء هذا الان الملزمه هي خطه", "am": -8.428437232971191, "degenerate": false, "qwen": -532.2603759765625}, {"text": "ف كل شيء مسجل علشان علشان تمشي المساله بطريقه بطريقه مخططه حلو هل تحس ان طريقه الكتابه والتدوين لها دور؟ يعني انا بالنسبه لي اتخيل اني بطلع ابلكيشن ولا شيء وبحطها بجوالي انت لا طابعها في ورقه وش الفرق بين والله لا انا ما اقول لك ما في فرق بس انا رجل تقليدي لا زلت الى الان رجل تقليدي واحتفظ بهذه الاشياء هذا الان الملزمه هي خطه", "am": -9.145489692687988, "degenerate": false, "qwen": -537.3446044921875}, {"text": "ف كل شيء مسجل علشان علشان تمشي المساله بطريقه بطريقه مخططه حلو هل تحس ان طريقه الكتابه والتدوين لها دور يعني انا بالنسبه لي اتخيل اني بطلع ابلكيشن ولا شيء وبحطها بجوالي انت لا طابعها في ورقه وش الفرق بين والله لا انا ما اقول لك ما في فرق بس انا رجل تقليدي لا زلت الى الان رجل تقليدي واحتفظ بهذه الاشياء هذه الان الملزمه هي خطه", "am": -9.287461280822754, "degenerate": false, "qwen": -532.5009765625}, {"text": "ف كل شيء مسجل علشان علشان تمشي المساله بطريقه بطريقه مخططه حلو هل تحس ان طريقه الكتابه والتدوين لها دور؟ يعني انا بالنسبه لي اتخيل اني بطلع ابلكيشن ولا شيء وبحطها بجوالي انت لا طابعها في ورقه وش الفرق بين والله لا انا ما اقول لك ما في فرق بس انا رجل تقليدي لا زلت الى الان رجل تقليدي واحتفظ بهذه الاشياء هذه الان الملزمه هي خطه", "am": -9.873492240905762, "degenerate": false, "qwen": -537.3364868164062}, {"text": "ف كل شيء مسجل علشان علشان تمشي المساله بطريقه بطريقه مخططه حلو هل تحس ان طريقه الكتابه والتدوين لها دور يعني انا بالنسبه لي اتخيل اني بطلع ابلكيشن ولا شيء وبحطها بجوالي انت لا طابعها في ورقه وش الفرق بين والله لا انا ما اقول لك ما في فرق بس انا رجل تقليدي لا زلت الى الان رجل تقليدي واحتفظ بهذه الاشياء هذا الان ملزمه هي خطه", "am": -9.965812683105469, "degenerate": false, "qwen": -530.7452392578125}, {"text": "ف كل شيء مسجل علشان علشان تمشي المساله بطريقه بطريقه مخططه حلو هل تحس ان طريقه الكتابه والتدوين لها دور؟ يعني انا بالنسبه لي اتخيل اني بطلع ابلكيشن ولا شيء وبحطها بجوالي انت لا طابعها في ورقه، وش الفرق بين والله ��ا انا ما اقول لك ما في فرق بس انا رجل تقليدي لا زلت الى الان رجل تقليدي واحتفظ بهذه الاشياء هذا الان الملزمه هي خطه", "am": -10.107102394104004, "degenerate": false, "qwen": -544.2124633789062}, {"text": "ف كل شيء مسجل علشان علشان تمشي المساله بطريقه بطريقه مخططه حلو، هل تحس ان طريقه الكتابه والتدوين لها دور؟ يعني انا بالنسبه لي اتخيل اني بطلع ابلكيشن ولا شيء وبحطها بجوالي، انت لا طابعها في ورقه، وش الفرق بين والله لا انا ما اقول لك ما في فرق بس انا رجل تقليدي لا زلت الى الان رجل تقليدي واحتفظ بهذه الاشياء هذا الان الملزمه هي خطه", "am": -10.529064178466797, "degenerate": false, "qwen": -548.9486694335938}, {"text": "ف كل شيء مسجل علشان علشان تمشي المساله بطريقه بطريقه مخططه حلو هل تحس ان طريقه الكتابه والتدوين لها دور يعني انا بالنسبه لي اتخيل اني بطلع ابلكيشن ولا شيء وبحطها بجوالي انت لا طابعها في ورقه وش الفرق بين والله لا انا ما اقول لك ما في فرق بس انا رجل تقليدي لا زلت الى الان رجل تقليدي واحتفظ بهذه الاشياء هذا الان الملزمه هي خطة", "am": -10.82451057434082, "degenerate": false, "qwen": -533.245849609375}]}
|
| 4 |
+
{"file": "saudi_podcasts_000122.wav", "hyps": [{"text": "ويقودك في هذه العمليه عن طريق اسئله. وهي هدفها انك تسوي خطه لحياتك بطريقه ما وانك تفهم وضعك الحالي. ففي البدايه يسالك يقول لك يلا بسم الله تخيل جنه جنه الحياه وجحيم الحياه حياتك في افضل حاله اللي اكثر شيء تتمناه. صف هذه الحياه. يا سلام الجنه بالنسبه لك في الحياه ما هي؟ فتقعد انت تحلم وتكتب وتكتب وتكتب ابغى كذا وكل واحد عنده تصور داخلي عن هذا ال", "am": -6.3338942527771, "degenerate": false, "qwen": -522.1796875}, {"text": "يقودك في هذه العمليه عن طريق اسئله. وهي هدفها انك تسوي خطه لحياتك بطريقه ما وانك تفهم وضعك الحالي. ففي البدايه يسالك يقول لك يلا بسم الله تخيل جنه جنه الحياه وجحيم الحياه حياتك في افضل حاله اللي اكثر شيء تتمناه. صف هذه الحياه. يا سلام الجنه بالنسبه لك في الحياه ما هي؟ فتقعد انت تحلم وتكتب وتكتب وتكتب ابغى كذا وكل واحد عنده تصور داخلي عن هذا ال", "am": -6.359781265258789, "degenerate": false, "qwen": -520.6834106445312}, {"text": "ويقودك في هذه العمليه عن طريق اسئله. وهي هدفها انك تسوي خطه لحياتك بطريقه ما وانك تفهم وضعك الحالي. ففي البدايه يسالك يقول لك يلا بسم الله تخيل جنه جنه الحياه وجحيم الحياه حياتك في افضل حاله اللي اكثر شيء تتمناه. صف هذه الحياه. يا سلام الجنه بالنسبه لك في الحياه ما هي؟ فتقعد انت تحلم وتكتب وتكتب وتكتب وابغى كذا وكل واحد عنده تصور داخلي عن هذا ال", "am": -6.706113338470459, "degenerate": false, "qwen": -525.6243286132812}, {"text": "يقودك في هذه العمليه عن طريق اسئله. وهي هدفها انك تسوي خطه لحياتك بطريقه ما وانك تفهم وضعك الحالي. ففي البدايه يسالك يقول لك يلا بسم الله تخيل جنه جنه الحياه وجحيم الحياه حياتك في افضل حاله اللي اكثر شيء تتمناه. صف هذه الحياه. يا سلام الجنه بالنسبه لك في الحياه ما هي؟ فتقعد انت تحلم وتكتب وتكتب وتكتب وابغى كذا وكل واحد عنده تصور داخلي عن هذا ال", "am": -6.720580101013184, "degenerate": false, "qwen": -525.048583984375}, {"text": "يقودك في هذه العمليه عن طريق اسئله. وهي هدفها انك تسوي خطه لحياتك بطريقه ما وانك تفهم وضعك الحالي. ففي البدايه يسالك يقول لك يلا بسم الله تخيل جنه جنه الحياه وجحيم الحياه حياتك في افضل حاله اللي اكثر شيء تتمناه. صف هذه الحياه. يا سلام. الجنه بالنسبه لك في الحياه ما هي؟ فتقعد انت تحلم وتكتب وتكتب وتكتب ابغى كذا وكل واحد عنده تصو�� داخلي عن هذا ال", "am": -7.029944896697998, "degenerate": false, "qwen": -522.376953125}, {"text": "ويقودك في هذه العمليه عن طريق اسئله. وهي هدفها انك تسوي خطه لحياتك بطريقه ما وانك تفهم وضعك الحالي. ففي البدايه يسالك يقول لك يلا بسم الله تخيل جنه جنه الحياه وجحيم الحياه حياتك في افضل حاله اللي اكثر شيء تتمناه. صف هذه الحياه. يا سلام. الجنه بالنسبه لك في الحياه ما هي؟ فتقعد انت تحلم وتكتب وتكتب وتكتب ابغى كذا وكل واحد عنده تصور داخلي عن هذا ال", "am": -7.135889053344727, "degenerate": false, "qwen": -523.1636962890625}, {"text": "يقودك في هذه العمليه عن طريق اسئله وهي هدفها انك تسوي خطه لحياتك بطريقه ما وانك تفهم وضعك الحالي. ففي البدايه يسالك يقول لك يلا بسم الله تخيل جنه جنه الحياه وجحيم الحياه حياتك في افضل حاله اللي اكثر شيء تتمناه. صف هذه الحياه. يا سلام الجنه بالنسبه لك في الحياه ما هي؟ فتقعد انت تحلم وتكتب وتكتب وتكتب ابغى كذا وكل واحد عنده تصور داخلي عن هذا ال", "am": -7.2520952224731445, "degenerate": false, "qwen": -517.1553344726562}, {"text": "يقودك في هذه العمليه عن طريق اسئله. وهي هدفها انك تسوي خطه لحياتك بطريقه ما وانك تفهم وضعك الحالي. ففي البدايه يسالك يقول لك يلا بسم الله تخيل جنه جنه الحياه وجحيم الحياه حياتك في افضل حاله اللي اكثر شيء تتمناه. صف هذه الحياه. يا سلام. الجنه بالنسبه لك في الحياه ما هي؟ فتقعد انت تحلم وتكتب وتكتب وتكتب وابغى كذا وكل واحد عنده تصور داخلي عن هذا ال", "am": -7.392237663269043, "degenerate": false, "qwen": -526.220703125}]}
|
| 5 |
+
{"file": "saudi_podcasts_000190.wav", "hyps": [{"text": "في قضايا ثانيه امم يعني انا اودعته السجن العام او بفروعه او اي منطقه امم لا يعني اني ادري اتابع والله صار عليك كذا كذا الا اذا جت اوراق معينه لاجرائه امم لكن وش صار؟ نسمع مثل الناس في بيان ولا انه انسجن لا لا بس خوينا فلت يعني منك ربما جابوه اه وان شاء الله انه جابوه اوكي لكن كان اجتهاد وانا مجتهد والله فكنت تبغاه يجي لدوله خليجيه او", "am": -10.77086067199707, "degenerate": false, "qwen": -607.7161865234375}, {"text": "قضايا ثانيه امم يعني انا اودعته السجن العام او بفروعه او اي منطقه امم لا يعني اني ادري اتابع والله صار عليك كذا كذا الا اذا جت اوراق معينه لاجرائه امم لكن وش صار؟ نسمع مثل الناس في بيان ولا ان انسجن لا لا بس خوينا فلت يعني منك ربما جابوه اه وان شاء الله انه جابوه اوكي لكن كان اجتهاد وانا مجتهد والله فكنت تبغاه يجي لدوله خليجيه او", "am": -10.815436363220215, "degenerate": false, "qwen": -608.4835205078125}, {"text": "في قضايا ثانيه امم يعني انا اودعته السجن العام او بفروعه او اي منطقه امم لا يعني اني ادري اتابع والله صار عليك كذا كذا الا اذا جت اوراق معينه لاجرائه امم لكن وش صار؟ نسمع مثل الناس في بيان ولا ان انسجن لا لا بس خوينا فلت يعني منك ربما جابوه اه وان شاء الله انه جابوه اوكي لكن كان اجتهاد وانا مجتهد والله فكنت تبغاه يجي لدوله خليجيه او", "am": -10.862565040588379, "degenerate": false, "qwen": -608.4080810546875}, {"text": "في قضايا ثانيه. امم. يعني انا اودعته السجن العام. او بفروعه او اي منطقه. امم. لا يعني اني ادري اتابع والله صار عليك كذا كذا الا اذا جت اوراق معينه لاجرائه. امم. لكن وش صار؟ نسمع مثل الناس في بيان ولا انه انسجن. لا لا بس خوينا فلت يعني منك. ربما جابوه. اه. وان شاء الله انه جابوه. اوكي. لكن كان اجتهاد وانا مجتهد والله. فكنت تبغاه يجي لدوله خليجيه او.", "am": -11.520906448364258, "degenerate": false, "qwen": -635.0045776367188}, {"text": "في قضايا ثانيه. امم. يعني انا اودعته السجن العام. او بفروعه او اي منطقه. امم. لا يعني اني ادري اتابع والله صار عليك كذا كذا الا اذا جت اوراق معينه لاجرائه. امم. لكن وش صار؟ نسمع مثل الناس في بيان ولا ان انسجن. لا لا بس خوينا فلت يعني منك. ربما جابوه. اه. وان شاء الله انه جابوه. اوكي. لكن كان اجتهاد وانا مجتهد والله. فكنت تبغاه يجي لدوله خليجيه او.", "am": -11.857931137084961, "degenerate": false, "qwen": -635.8552856445312}, {"text": "في قضايا ثانيه. امم. يعني انا اودعته السجن العام. او بفروعه او اي منطقه. امم. لا يعني اني ادري اتابع والله صار عليك كذا كذا الا اذا جت اوراق معينه لاجراءه. امم. لكن وش صار؟ نسمع مثل الناس في بيان ولا انه انسجن. لا لا بس خوينا فلت يعني منك. ربما جابوه. اه. وان شاء الله انه جابوه. اوكي. لكن كان اجتهاد وانا مجتهد والله. فكنت تبغاه يجي لدوله خليجيه او.", "am": -12.050345420837402, "degenerate": false, "qwen": -637.646484375}, {"text": "قضايا ثانيه. امم. يعني انا اودعته السجن العام. او بفروعه او اي منطقه. امم. لا يعني اني ادري اتابع والله صار عليك كذا كذا الا اذا جت اوراق معينه لاجرائه. امم. لكن وش صار؟ نسمع مثل الناس في بيان ولا انه انسجن. لا لا بس خوينا فلت يعني منك. ربما جابوه. اه. وان شاء الله انه جابوه. اوكي. لكن كان اجتهاد وانا مجتهد والله. فكنت تبغاه يجي لدوله خليجيه او.", "am": -12.101439476013184, "degenerate": false, "qwen": -632.0194091796875}, {"text": "في قضايا ثانيه. امم. يعني انا اودعته السجن العام. او بفروعه او اي منطقه. امم. لا يعني اني ادري اتابع والله صار عليك كذا كذا الا اذا جت اوراق معينه لاجرائه. امم. لكن وش صار؟ نسمع مثل الناس في بيان ولا انه انسجن. لا لا بس خوينا فلت يعني منك. ربما جابوه. اه. وان شاء الله انه جابوه. اوكي. لكن كان اجتهاد وانا مجتهد والله. فكنت تبغاه يجي لدوله خليجيه او", "am": -12.129947662353516, "degenerate": false, "qwen": -634.7819213867188}]}
|
| 6 |
+
{"file": "saudi_podcasts_000158.wav", "hyps": [{"text": "قلت انا بعده يعني سيراوي هذه مقصوده لا لا بس والله الناس يعني يعني ودها تسمع هالقصص يعني في بعضها ممكن يستفيدون من اشياء وفي قصص حلوه يعني الناس تستمتع فيها ودنا واني اكرمتنا والله بجيتك يعني لا والله صح انك خليتني لاحق اشهر لاحقني اشهر وانا كل ما اتصلت بغصني اتهرب ولكن ما في اليد حيله انت من الحلوين الله يسلمك اسلم اسلم طال عمرك سلمت الحين ليش ينقولون نقلوكم من الدوري", "am": -22.572017669677734, "degenerate": false, "qwen": -637.033203125}, {"text": "قلت انا بعده يعني سيراوي هذه مقصوده لا لا بس والله الناس يعني يعني ودها تسمع هالقصص يعني في بعضها ممكن يستفيدون من اشياء وفي قصص حلوه يعني الناس تستمتع فيها ودنا اني اكرمتنا والله بجيتك يعني لا والله صح انك خليتني لاحق اشهر لاحقني اشهر وانا كل ما اتصلت بغصني اتهرب ولكن ما في اليد حيله انت من الحلوين الله يسلمك اسلم اسلم طال عمرك سلمت الحين ليش ينقولون نقلوكم من الدوري", "am": -22.601778030395508, "degenerate": false, "qwen": -631.906982421875}, {"text": "قلت انا بعده يعني سيراوي هذه مقصوده لا لا بس والله الناس يعني يعني ودها تسمع هالقصص يعني في بعضها ممكن يستفيدون من اشياء وفي قصص حلوه يعني الناس تستمتع فيها ودنا واني اكرمتنا والله بجيتك يعني لا والله صح انك خليتني لاحق اشهر لاحقني اشهر وانا كل ما اتصلت بغصني اتهرب ولكن ما في اليد حيله انت من الحلوين الله يسعدك اسلم اسلم طال عمرك سلمت الحين ليش ينقولون نقلوكم من الدوري", "am": -22.602930068969727, "degenerate": false, "qwen": -636.2677612304688}, {"text": "قلت انا بعده يعني سيراوي هذه مقص��ده لا لا بس والله الناس يعني يعني ودها تسمع هالقصص يعني في بعضها ممكن يستفيدون من اشياء وفي قصص حلوه يعني الناس تستمتع فيها ودنا واني اكرمتنا والله بجيتك يعني لا والله صح انك خليتني لاحق اشهر لاحقني اشهر وانا كل ما اتصلت بغصني اتهرب ولكن ما في اليد حيله انت من الحلوين الله يسلمك اسلم اسلم طال عمرك سلمت الحين ليش ينقولون نقلوكم من الدوله", "am": -22.6613826751709, "degenerate": false, "qwen": -638.3243408203125}, {"text": "قلت انا بعده يعني سيراوي هذه مقصوده لا لا بس والله الناس يعني يعني ودها تسمع هالقصص يعني في بعضها ممكن يستفيدون من اشياء وفي قصص حلوه يعني الناس تستمتع فيها ودنا اني اكرمتنا والله بجيتك يعني لا والله صح انك خليتني لاحق اشهر لاحقني اشهر وانا كل ما اتصلت بغصني اتهرب ولكن ما في اليد حيله انت من الحلوين الله يسلمك اسلم اسلم طال عمرك سلمت الحين ليش ينقولون نقلوكم من الدوله", "am": -22.684770584106445, "degenerate": false, "qwen": -633.053955078125}, {"text": "قلت انا بعده يعني سيراوي هذه مقصوده لا لا بس والله الناس يعني يعني ودها تسمع هالقصص يعني في بعضها ممكن يستفيدون من اشياء وفي قصص حلوه يعني الناس تستمتع فيها ودنا اني اكرمتنا والله بجيتك يعني لا والله صح انك خليتني لاحق اشهر لاحقني اشهر وانا كل ما اتصلت بغصني اتهرب ولكن ما في اليد حيله انت من الحلوين الله يسعدك اسلم اسلم طال عمرك سلمت الحين ليش ينقولون نقلوكم من الدوري", "am": -22.73431968688965, "degenerate": false, "qwen": -631.1064453125}, {"text": "قلت انا بعده يعني سيراوي هذه مقصوده لا لا بس والله الناس يعني يعني ودها تسمع هالقصص يعني في بعضها ممكن يستفيدون من اشياء وفي قصص حلوه يعني الناس تستمتع فيها ودنا واني اكرمتنا والله بجيتك يعني لا والله صح انك خليتني لاحق اشهر لاحقني اشهر وانا كل ما اتصلت بغصني اتهرب ولكن ما في اليد حيله انت من الحلوين الله يسعدك اسلم اسلم طال عمرك سلمت الحين ليش ينقولون نقلوكم من الدوله", "am": -22.775423049926758, "degenerate": false, "qwen": -637.6968383789062}, {"text": "قلت انا بعده يعني سيراوي هذه مقصوده لا لا بس والله الناس يعني يعني ودها تسمع هالقصص يعني في بعضها ممكن يستفيدون من اشياء وفي قصص حلوه يعني الناس تستمتع فيها ودنا اني اكرمتنا والله بجيتك يعني لا والله صح انك خليتني لاحق اشهر لاحقني اشهر وانا كل ما اتصلت بغصني بطل اتهرب ولكن ما في اليد حيله انت من الحلوين الله يسعدك اسلم اسلم طال عمرك سلمت الحين ليش ينقولون نقلوكم من الدوري", "am": -23.353515625, "degenerate": false, "qwen": -642.111083984375}]}
|
| 7 |
+
{"file": "saudi_podcasts_000145.wav", "hyps": [{"text": "نهاب العم الله يرحمه الوالد متوفي وانا عمري سنتين فهو اللي متوليها حقيقه ما يقصر علينا في في التربيه وكنا نهابه الله يجعله جنات النعيم فبالتالي دريت انا جاي عارف انا من عيونه انه زعلان ومعاه الورقه انا انحشت الصحيح دريت ان الدعوه قال خلاص ما عليك بما معناه المهم رجعت للوالده الله يرحمها يوم درتني", "am": -6.515056610107422, "degenerate": false, "qwen": -526.3125}, {"text": "نهاب العم الله يرحمه الوالد متوفي وانا عمري سنتين فهو اللي متوليها حقيقه ما يقصر علينا في في التربيه و وكنا نهابه الله يجعله جنات النعيم فبالتالي دريت انا جاي عارف انا من عيونه انه زعلان ومعاه الورقه انا انحشت الصحيح دريت ان الدعوه قال خلاص ما عليك بما معناه المهم رجعت للوالده الله يرحمها يوم درتني", "am": -7.458856582641602, "degenerate": false, "qwen": -534.8795166015625}, {"text": "نهاب العمه الله يرحمه الوالد متوفي وانا عمري سنتين فهو اللي متوليها حقيقه ما يقصر علينا في في التربيه وكنا نهابه الله يجعله جنات النعيم فبالتالي دريت انا جاي عارف انا من عيونه انه زعلان ومعاه الورقه انا انحشت الصحيح دريت ان الدعوه قال خلاص ما عليك بما معناه المهم رجعت للوالده الله يرحمها يوم درتني", "am": -7.579031467437744, "degenerate": false, "qwen": -524.6716918945312}, {"text": "نهاب العم الله يرحمه الوالد متوفي وانا عمري سنتين فهو اللي متوليها حقيقه ما يقصر علينا في في التربيه وكنا نهابه الله يجعله جنات النعيم فبالتالي دريت انا جاي عارف انا من عيونه انه زعلان ومعاه هالورقه انا انحشت الصحيح دريت ان الدعوه قال خلاص ما عليك بما معناه المهم رجعت للوالده الله يرحمها يوم درتني", "am": -7.615162372589111, "degenerate": false, "qwen": -534.692138671875}, {"text": "نهاب العم الله يرحمه الوالد متوفي وانا عمري سنتين فهو اللي متوليها حقيقه ما يقصر علينا في في التربيه ووكنا نهابه الله يجعله جنات النعيم فبالتالي دريت انا جاي عارف انا من عيونه انه زعلان ومعاه الورقه انا انحشت الصحيح دريت ان الدعوه قال خلاص ما عليك بما معناه المهم رجعت للوالده الله يرحمها يوم درتني", "am": -7.864632606506348, "degenerate": false, "qwen": -533.9091796875}, {"text": "نهاب العم الله يرحمه الوالد متوفي وانا عمري سنتين فهو اللي متوليها حقيقه ما يقصر علينا في في التربيه وكنا نهابه الله يجعله جنات النعيم فبالتالي دريت انا جاي اعرف انا من عيونه انه زعلان ومعاه الورقه انا انحشت الصحيح دريت ان الدعوه قال خلاص ما عليك بما معناه المهم رجعت للوالده الله يرحمها يوم درتني", "am": -7.8901448249816895, "degenerate": false, "qwen": -525.3516845703125}, {"text": "نهاب العم الله يرحمه الوالد متوفي وانا عمري سنتين فهو اللي متوليها حقيقه ما يقصر علينا في في التربيه وكنا نهابه. الله يجعله جنات النعيم فبالتالي دريت انا جاي عارف انا من عيونه انه زعلان ومعاه الورقه انا انحشت الصحيح دريت ان الدعوه قال خلاص ما عليك بما معناه المهم رجعت للوالده الله يرحمها يوم درتني", "am": -8.358694076538086, "degenerate": false, "qwen": -534.9298095703125}, {"text": "نهاب العم الله يرحمه الوالد متوفي وانا عمري سنتين فهو اللي متوليها حقيقه ما يقصر علينا في في التربيه وكنا نهابه الله يجعله جنات النعيم فبالتالي دريت انا جاي عارف انا من عيونه انه زعلان ومعاه الورقه انا انحشت الصحيح دريت ان الدعوه قال خلاص ما عليك بما معناه المهم رجعت للوالده الله يرحمها يوم درت اني", "am": -8.605613708496094, "degenerate": false, "qwen": -526.683837890625}]}
|
| 8 |
+
{"file": "saudi_podcasts_000147.wav", "hyps": [{"text": "الساعة 6:00 وخط جميل قضيت معهم 4 شهور يوم لمحت لهم اني بمشي خلاص تعاقد انتهى قالوا لا احنا نبيك تستمر موظف رسمي انت بتاخذ الرابعة وبعدها ننقصك الخامسة السادسة الامور سهلات لاني اجي مع الحارس انا اللي افتح الباب احيانا ما يجون الساعة 8:00 الا البيانات مسجلة وبخط جميل ما كان فيه طوابع ولا كان فيه ايميلات ولا كنت اهتم بال", "am": -9.742133140563965, "degenerate": false, "qwen": -531.2444458007812}, {"text": "الساعة 6 وخط جميل قضيت معهم 4 شهور يوم لمحت لهم اني بمشي خلاص تعاقد انتهى قالوا لا احنا نبيك تستمر موظف رسمي انت بتاخذ الرابعة وبعدها ننقصك الخامسة السادسة الامور سهلات لاني اجي مع الحارس انا اللي افتح الباب احيانا ما يجون الساعة 8 الا البيانات مسجلة وبخط جميل ما كان فيه طوابع ولا كان فيه ايميلات ولا كنت اهتم بال", "am": -9.904139518737793, "degenerate": false, "qwen": -528.6151123046875}, {"text": "الساعة 6:00 وخط جميل قضيت معهم اربع شهور يوم ��محت لهم اني بمشي خلاص تعاقد انتهى قالوا لا احنا نبيك تستمر موظف رسمي انت بتاخذ الرابعة وبعدها ننقصك الخامسة السادسة الامور سهلات لاني اجي مع الحارس انا اللي افتح الباب احيانا ما يجون الساعة 8:00 الا البيانات مسجلة وبخط جميل ما كان فيه طوابع ولا كان فيه ايميلات ولا كنت اهتم بال", "am": -9.9251127243042, "degenerate": false, "qwen": -532.3846435546875}, {"text": "الساعة 6:00 وخط جميل قضيت معهم 4 شهور يوم لمحت لهم اني بمشي خلاص تعاقد انتهى قالوا لا احنا نبيك تستمر موظف رسمي انت تبي تاخذ الرابعة وبعدها ننقصك الخامسة السادسة الامور سهلات لاني اجي مع الحارس انا اللي افتح الباب احيانا ما يجون الساعة 8:00 الا البيانات مسجلة وبخط جميل ما كان فيه طوابع ولا كان فيه ايميلات ولا كنت اهتم بال", "am": -9.986197471618652, "degenerate": false, "qwen": -538.1484375}, {"text": "الساعة 6 وخط جميل قضيت معهم 4 شهور يوم لمحت لهم اني بمشي خلاص تعاقد انتهى قالوا لا احنا نبيك تستمر موظف رسمي انت تبي تاخذ الرابعة وبعدها ننقصك الخامسة السادسة الامور سهلات لاني اجي مع الحارس انا اللي افتح الباب احيانا ما يجون الساعة 8 الا البيانات مسجلة وبخط جميل ما كان فيه طوابع ولا كان فيه ايميلات ولا كنت اهتم بال", "am": -10.031846046447754, "degenerate": false, "qwen": -534.640625}, {"text": "الساعة 6:00 وخط جميل قضيت معهم اربع شهور يوم لمحت لهم اني بمشي خلاص تعاقد انتهى قالوا لا احنا نبيك تستمر موظف رسمي انت بتاخذ الرابعه وبعدها ننقصك الخامسه السادسه الامور سهلات لاني اجي مع الحارس انا اللي افتح الباب احيانا ما يجون الساعه 8:00 الا البيانات مسجله وبخط جميل ما كان فيه طوابع ولا كان فيه ايميلات ولا كنت اهتم بال", "am": -10.179725646972656, "degenerate": false, "qwen": -539.231689453125}, {"text": "الساعة 6:00 وخط جميل قضيت معهم اربع شهور يوم لمحت لهم اني بمشي خلاص تعاقد انتهى قالوا لا احنا نبيك تستمر موظف رسمي انت بتاخذ الرابعة وبعدها ننقصك الخامسة السادسة الامور سهلات لاني اجي مع مع الحارس انا اللي افتح الباب احيانا ما يجون الساعة 8:00 الا البيانات مسجلة وبخط جميل ما كان فيه طوابع ولا كان فيه ايميلات ولا كنت اهتم بال", "am": -10.198593139648438, "degenerate": false, "qwen": -541.1083984375}, {"text": "الساعة 6:00 وخط جميل قضيت معهم 4 شهور يوم لمحت لهم اني بمشي خلاص تعاقد انتهى قالوا لا احنا نبيك تستمر موظف رسمي انت بتاخذ الرابعة وبعدها ننقصك الخامسة السادسة الامور سهلات لاني اجي مع الحارس انا اللي افتح الباب احيانا ما يجون الساعة 8:00 الا البيانات مسجلة وبخط جميل ما كان فيه طوابع ولا كان في ايميلات ولا كنت اهتم بال", "am": -10.348669052124023, "degenerate": false, "qwen": -535.22802734375}]}
|
paper_artifacts/nbest/dev_youtube_najdi.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
paper_artifacts/nbest/masc_test_clean.jsonl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:c023e121c0ef221ae95c5b313e514d99a8da2a2cb2108154754822415f5f7768
|
| 3 |
+
size 12066464
|
paper_artifacts/nbest/masc_test_noisy.jsonl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:2f0585dd4df4d52c37a796113821611785a29214ac31a7cc24257bf8c187d26a
|
| 3 |
+
size 12302719
|
paper_artifacts/nbest/mgb2_test.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
paper_artifacts/nbest/sada_test.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
sygma_asr.py
CHANGED
|
@@ -25,6 +25,7 @@ import soundfile as sf
|
|
| 25 |
import torch
|
| 26 |
|
| 27 |
BASE_MODEL = "CohereLabs/cohere-transcribe-arabic-07-2026"
|
|
|
|
| 28 |
SR = 16000
|
| 29 |
BETA = 1.0
|
| 30 |
BEAMS = 8
|
|
@@ -59,10 +60,49 @@ def is_degenerate(text):
|
|
| 59 |
|
| 60 |
|
| 61 |
def _words(text):
|
|
|
|
| 62 |
t = re.sub(r"[!\"#$%&'()*+,\-./:;<=>?@\[\\\]^_`{|}~،؛؟]", " ", text)
|
| 63 |
return len(t.split())
|
| 64 |
|
| 65 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 66 |
def _load_cohere(device):
|
| 67 |
"""Load the Cohere processor + model the way its repo code expects (transformers 4.x)."""
|
| 68 |
import sys
|
|
@@ -70,7 +110,7 @@ def _load_cohere(device):
|
|
| 70 |
import transformers
|
| 71 |
from huggingface_hub import snapshot_download
|
| 72 |
|
| 73 |
-
local = snapshot_download(BASE_MODEL) # weights, tokenizer
|
| 74 |
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
| 75 |
# cohere_asr/ = Cohere's Apache-2.0 model code, vendored; one change: GenerationMixin added (see NOTICE)
|
| 76 |
from cohere_asr.modeling_cohere_asr import CohereAsrForConditionalGeneration
|
|
@@ -93,10 +133,17 @@ def _load_cohere(device):
|
|
| 93 |
|
| 94 |
|
| 95 |
class SygmaASR:
|
| 96 |
-
def __init__(self, device=None, beta=BETA, beams=BEAMS, punctuation=True, repair=False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 97 |
self.device = device or ("cuda" if torch.cuda.is_available() else "cpu")
|
| 98 |
self.processor, self.model = _load_cohere(self.device)
|
| 99 |
-
self.beta, self.beams, self.repair = beta, beams, repair
|
| 100 |
self.prompt = self.model.build_prompt(language="ar", punctuation=punctuation)
|
| 101 |
self.amp = self.device.startswith("cuda")
|
| 102 |
|
|
@@ -120,9 +167,9 @@ class SygmaASR:
|
|
| 120 |
results = []
|
| 121 |
for i in range(len(batch)):
|
| 122 |
hyps = list(zip(texts[i * self.beams:(i + 1) * self.beams], scores[i * self.beams:(i + 1) * self.beams]))
|
| 123 |
-
|
| 124 |
-
if
|
| 125 |
-
results.append(
|
| 126 |
continue
|
| 127 |
fixed = None
|
| 128 |
for fb in (FALLBACKS if self.repair else []):
|
|
|
|
| 25 |
import torch
|
| 26 |
|
| 27 |
BASE_MODEL = "CohereLabs/cohere-transcribe-arabic-07-2026"
|
| 28 |
+
BASE_REVISION = "c3e911b42149bf7a1e53d5cef9878aee87515a23" # the base-model revision used for all paper results
|
| 29 |
SR = 16000
|
| 30 |
BETA = 1.0
|
| 31 |
BEAMS = 8
|
|
|
|
| 60 |
|
| 61 |
|
| 62 |
def _words(text):
|
| 63 |
+
"""Deployment-mode word count: punctuation replaced by spaces on the raw text."""
|
| 64 |
t = re.sub(r"[!\"#$%&'()*+,\-./:;<=>?@\[\\\]^_`{|}~،؛؟]", " ", text)
|
| 65 |
return len(t.split())
|
| 66 |
|
| 67 |
|
| 68 |
+
def normalize_arabic_text(text):
|
| 69 |
+
"""The Open Universal Arabic ASR Leaderboard's eval.py normalization (verbatim)."""
|
| 70 |
+
text = re.sub(r'[!"#$%&\'()*+,\-./:;<=>?@\[\\\]^_`{|}~،؛؟]', '', text)
|
| 71 |
+
text = re.sub(r'[ً-ْ]', '', text)
|
| 72 |
+
text = re.sub('پ', 'ب', text)
|
| 73 |
+
text = re.sub('ڤ', 'ف', text)
|
| 74 |
+
text = re.sub(r'[آ]', 'ا', text)
|
| 75 |
+
text = re.sub(r'[أإ]', 'ا', text)
|
| 76 |
+
text = re.sub(r'[ؤ]', 'و', text)
|
| 77 |
+
text = re.sub(r'[ئ]', 'ي', text)
|
| 78 |
+
text = re.sub(r'[ء]', '', text)
|
| 79 |
+
for e, w in zip('٠١٢٣٤٥٦٧٨٩', '0123456789'):
|
| 80 |
+
text = text.replace(e, w)
|
| 81 |
+
text = re.sub(r'(^|\s)و\s+', r'\1و', text)
|
| 82 |
+
return re.sub(r'\s+', ' ', text).strip()
|
| 83 |
+
|
| 84 |
+
|
| 85 |
+
def select_hypothesis(hyps, beta=BETA, mode="benchmark", use_filter=True):
|
| 86 |
+
"""Pick one hypothesis from an N-best list of (text, summed log-prob) pairs.
|
| 87 |
+
|
| 88 |
+
mode="benchmark" reproduces the paper exactly: words are counted after the leaderboard
|
| 89 |
+
normalization, and if every hypothesis is degenerate all of them are re-ranked.
|
| 90 |
+
mode="deployment" counts words on punctuation-stripped raw text and returns None when every
|
| 91 |
+
hypothesis is degenerate (the caller then repairs or keeps the top beam hypothesis).
|
| 92 |
+
use_filter=False disables the breakdown filter (the paper's reward-only configuration).
|
| 93 |
+
|
| 94 |
+
select_hypothesis(hyps, 1.0, "benchmark", use_filter=False) # reward only (primary result)
|
| 95 |
+
select_hypothesis(hyps, 1.0, "benchmark", use_filter=True) # Sygma (reward + filter)
|
| 96 |
+
select_hypothesis(hyps, 0.0, "benchmark", use_filter=False) # Beam-8 top
|
| 97 |
+
"""
|
| 98 |
+
good = [h for h in hyps if not (use_filter and is_degenerate(h[0]))]
|
| 99 |
+
if mode == "benchmark":
|
| 100 |
+
return max(good or hyps, key=lambda h: h[1] + beta * len(normalize_arabic_text(h[0]).split()))[0]
|
| 101 |
+
if mode == "deployment":
|
| 102 |
+
return max(good, key=lambda h: h[1] + beta * _words(h[0]))[0] if good else None
|
| 103 |
+
raise ValueError(f"unknown mode {mode!r}")
|
| 104 |
+
|
| 105 |
+
|
| 106 |
def _load_cohere(device):
|
| 107 |
"""Load the Cohere processor + model the way its repo code expects (transformers 4.x)."""
|
| 108 |
import sys
|
|
|
|
| 110 |
import transformers
|
| 111 |
from huggingface_hub import snapshot_download
|
| 112 |
|
| 113 |
+
local = snapshot_download(BASE_MODEL, revision=BASE_REVISION) # weights, tokenizer, mel buffers (Cohere, unchanged)
|
| 114 |
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
| 115 |
# cohere_asr/ = Cohere's Apache-2.0 model code, vendored; one change: GenerationMixin added (see NOTICE)
|
| 116 |
from cohere_asr.modeling_cohere_asr import CohereAsrForConditionalGeneration
|
|
|
|
| 133 |
|
| 134 |
|
| 135 |
class SygmaASR:
|
| 136 |
+
def __init__(self, device=None, beta=BETA, beams=BEAMS, punctuation=True, repair=False, mode="benchmark",
|
| 137 |
+
use_filter=True):
|
| 138 |
+
"""mode="benchmark" (default) is the configuration evaluated in the paper; mode="deployment"
|
| 139 |
+
is the earlier released behaviour and is required for repair=True."""
|
| 140 |
+
if mode not in ("benchmark", "deployment"):
|
| 141 |
+
raise ValueError(f"unknown mode {mode!r}")
|
| 142 |
+
if repair and mode != "deployment":
|
| 143 |
+
raise ValueError("repair=True is only available with mode='deployment'")
|
| 144 |
self.device = device or ("cuda" if torch.cuda.is_available() else "cpu")
|
| 145 |
self.processor, self.model = _load_cohere(self.device)
|
| 146 |
+
self.beta, self.beams, self.repair, self.mode, self.use_filter = beta, beams, repair, mode, use_filter
|
| 147 |
self.prompt = self.model.build_prompt(language="ar", punctuation=punctuation)
|
| 148 |
self.amp = self.device.startswith("cuda")
|
| 149 |
|
|
|
|
| 167 |
results = []
|
| 168 |
for i in range(len(batch)):
|
| 169 |
hyps = list(zip(texts[i * self.beams:(i + 1) * self.beams], scores[i * self.beams:(i + 1) * self.beams]))
|
| 170 |
+
pick = select_hypothesis(hyps, self.beta, self.mode, self.use_filter)
|
| 171 |
+
if pick is not None:
|
| 172 |
+
results.append(pick)
|
| 173 |
continue
|
| 174 |
fixed = None
|
| 175 |
for fb in (FALLBACKS if self.repair else []):
|