Output:
Exit code: 0
Wall time: 0 seconds
Total output lines: 24012
Output:
Agents.md
pyproject.toml
maya_transcribe.egg-info/entry_points.txt
maya_transcribe.egg-info/PKG-INFO
maya_transcribe.egg-info/requires.txt
maya_transcribe.egg-info/SOURCES.txt
maya_transcribe.egg-info/dependency_links.txt
maya_transcribe.egg-info/top_level.txt
results.md
outputs/test_run5/results.jsonl
outputs/test_run5/summary.json
maya_transcribe/r2.py
maya_transcribe/rover.py
maya_transcribe/asr.py
maya_transcribe/bench.py
maya_transcribe/verify.py
outputs/test_run5/audio/SPEAKER_00_0000_0.03-12.15-01b2a08391afc89b.wav
maya_transcribe/__pycache__/align.cpython-310.pyc
maya_transcribe/__pycache__/pipeline.cpython-310.pyc
maya_transcribe/__pycache__/bench.cpython-310.pyc
maya_transcribe/__pycache__/audio.cpython-310.pyc
maya_transcribe/__pycache__/cli.cpython-310.pyc
maya_transcribe/__pycache__/ctc_fit.cpython-310.pyc
maya_transcribe/__pycache__/lid.cpython-310.pyc
maya_transcribe/__pycache__/tar.cpython-310.pyc
maya_transcribe/__pycache__/dataset.cpython-310.pyc
maya_transcribe/__pycache__/gemini_asr.cpython-310.pyc
maya_transcribe/__pycache__/db.cpython-310.pyc
maya_transcribe/__pycache__/ids.cpython-310.pyc
maya_transcribe/__pycache__/textnorm.cpython-310.pyc
maya_transcribe/__pycache__/__init__.cpython-310.pyc
maya_transcribe/__pycache__/config.cpython-310.pyc
maya_transcribe/__pycache__/r2.cpython-310.pyc
maya_transcribe/__pycache__/eval.cpython-310.pyc
maya_transcribe/__pycache__/asr.cpython-310.pyc
maya_transcribe/__pycache__/io.cpython-310.pyc
maya_transcribe/__pycache__/language.cpython-310.pyc
maya_transcribe/__pycache__/rover.cpython-310.pyc
maya_transcribe/__pycache__/verify.cpython-310.pyc
maya_transcribe/db.py
maya_transcribe/dataset.py
maya_transcribe/config.py
maya_transcribe/gemini_asr.py
maya_transcribe/ids.py
maya_transcribe/pipeline.py
maya_transcribe/tar.py
maya_transcribe/eval.py
maya_transcribe/__init__.py
maya_transcribe/lid.py
maya_transcribe/language.py
maya_transcribe/align.py
maya_transcribe/audio.py
maya_transcribe/ctc_fit.py
maya_transcribe/textnorm.py
maya_transcribe/cli.py
maya_transcribe/io.py
outputs/test_run/results.jsonl
outputs/test_run/summary.json
docs/Reference1.md
docs/Reference3.md
docs/Reference5.md
docs/Reference4.md
docs/Reference6.md
docs/Reference2.md
task.md
README.md
master.md
outputs/test_run3/results.jsonl
outputs/test_run3/summary.json
configs/bench_v2_100_thresholds.json
Prompt.md
outputs/test_run2/results.jsonl
outputs/test_run/audio/SPEAKER_00_0000_0.03-12.15.wav
outputs/test_run2/refs.jsonl
outputs/test_run2/summary.json
outputs/test_run_ctc/results.jsonl
outputs/test_run3/audio/SPEAKER_00_0000_0.03-12.15.wav
outputs/test_run_ctc/refs.jsonl
outputs/test_run_ctc/summary.json
outputs/test_run_ctc2/results.jsonl
outputs/test_run_ctc2/summary.json
outputs/test_run4/summary.json
outputs/test_run6/results.jsonl
outputs/test_run4/results.jsonl
outputs/test_run6/summary.json
outputs/test_run4/refs.jsonl
outputs/test_run2/audio/SPEAKER_00_0000_0.03-12.15.wav
outputs/test_run_ctc/audio/SPEAKER_00_0000_0.03-12.15.wav
outputs/test_run6/audio/SPEAKER_00_0000_0.03-12.15-01b2a08391afc89b.wav
outputs/test_run4/audio/SPEAKER_00_0000_0.03-12.15.wav
data/bench/maya_hf_v0/refs.jsonl
data/bench/maya_hf_v0/manifest.json
data/--0C5YVdu5s/--0C5YVdu5s.tar
data/bench/maya_hf_v2/manifest.json
outputs/test_run_ctc3/results.jsonl
data/bench/maya_hf_v2/refs.jsonl
outputs/test_run_ctc3/refs.jsonl
outputs/test_run_ctc3/summary.json
data/bench/maya_hf_hin_v2/manifest.json
data/bench/maya_hf_hin_v2/refs.jsonl
outputs/bench/maya_hf_v0/baseline/eval_refs.json
outputs/bench/maya_hf_v0/baseline/eval.json
outputs/bench/maya_hf_v0/baseline/results.jsonl
outputs/bench/maya_hf_v0/baseline/summary.json
data/bench/maya_hf_v2_100/manifest.json
data/bench/maya_hf_v2_100/refs.jsonl
outputs/test_run_ctc2/audio/SPEAKER_00_0000_0.03-12.15-01b2a08391afc89b.wav
data/bench/model_maps/whisper_vaani_map.json
outputs/test_run_ctc3/audio/SPEAKER_00_0000_0.03-12.15-01b2a08391afc89b.wav
data/bench/model_maps/thresholds_script_filter_ctc_relaxed.json
data/bench/model_maps/thresholds_script_filter_ctc_relaxed_route.json
data/bench/model_maps/thresholds_ctc_advisory.json
data/bench/model_maps/thresholds_script_filter_ctc_advisory.json
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2569__844424933260384-550-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2273__844424933477266-934-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1731__844424932913788-888-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2285__844424933259870-550-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1918__844424931210472-186-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2909__844424933549595-1179-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2138__844424933532606-759-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1513__844424932930379-888-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1505__844424930755477-277-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__473__844424930588013-252-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1084__844424932900291-727-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2848__844424933545423-1179-m.m4a.wav
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_00_0007_41.48-51.04.flac
outputs/bench/maya_hf_hin_v2/gemma3n_e2b_vllm_prompt/eval.json
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__638__844424930591643-939-f.m4a.wav
outputs/bench/maya_hf_hin_v2/gemma3n_e2b_vllm_prompt/results.jsonl
outputs/bench/maya_hf_hin_v2/gemma3n_e2b_vllm_prompt/summary.json
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__971__844424930936288-326-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__259__844424930862240-252-f.m4a.wav
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_00_0008_51.84-53.24.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_01_0023_141.12-147.48.flac
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1892__844424932309963-1160-m.m4a.wav
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_00_0013_85.01-92.51.flac
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2887__844424933466130-390-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__996__844424932834336-727-f.m4a.wav
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_01_0019_124.59-129.70.flac
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1991__844424931210669-186-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2474__844424933456826-934-m.m4a.wav
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_01_0001_12.20-17.26.flac
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__3003__844424933475110-390-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2261__844424933457913-662-m.m4a.wav
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_01_0026_157.12-162.80.flac
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2145__844424933473824-349-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1653__844424930947049-277-f.m4a.wav
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_00_0016_105.45-107.78.flac
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2286__844424933470720-934-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1020__844424932917156-727-f.m4a.wav
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_01_0006_31.00-41.41.flac
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1548__844424932429596-384-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__841__844424932602798-645-f.m4a.wav
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_00_0014_93.11-96.80.flac
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2948__844424933478518-390-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2016__844424932314538-1160-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2626__844424933459577-759-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__369__844424931075429-229-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2669__844424933461630-349-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__3140__844424933489384-38-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__939__844424931236189-164-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__397__844424931061603-229-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__88__844424931220744-164-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2974__844424933533821-1179-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2986__844424933545408-1179-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1925__844424932333098-1160-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2423__844424933460730-759-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2110__844424933477575-662-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2237__844424933259876-550-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1390__844424932606980-727-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__188__844424930984259-252-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2540__844424933528796-759-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2183__844424933477241-934-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1107__844424931004043-326-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1191__844424931032400-229-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2217__844424933485793-349-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2018__844424930985896-186-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2538__844424933258343-550-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2785__844424933258276-550-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2668__844424933465383-349-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__989__844424930781692-229-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__111__844424930568740-939-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2450__844424933528806-759-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1335__844424932923999-727-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__836__844424931071426-164-f.m4a.wav
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_01_0010_62.70-65.15.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_01_0002_17.95-20.62.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_01_0009_54.62-61.78.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_00_0027_165.73-170.97.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_00_0022_138.24-139.80.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_01_0017_107.81-116.37.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_00_0003_20.79-22.31.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_01_0030_190.70-191.97.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_00_0031_192.12-196.22.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_01_0028_170.97-179.72.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_01_0020_130.85-133.60.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_00_0025_152.95-156.99.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_01_0033_202.77-204.72.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_01_0024_148.04-152.60.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_00_0029_179.73-190.31.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_00_0005_27.20-30.96.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_00_0000_0.03-12.15.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_00_0018_116.38-124.59.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_00_0034_204.72-219.60.flac
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1846__844424931209196-186-m.m4a.wav
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_01_0021_134.47-138.24.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_01_0011_65.66-69.47.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_01_0004_22.31-27.20.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_01_0012_70.86-77.60.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_01_0015_99.68-105.35.flac
data/--0C5YVdu5s/--0C5YVdu5s/segments/SPEAKER_00_0032_196.81-201.70.flac
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__863__844424930552454-229-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1875__844424931210505-186-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__332__844424930568786-939-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2001__844424932402025-1160-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__105__844424930613516-252-f.m4a.wav
data/--0C5YVdu5s/--0C5YVdu5s/metadata.json
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1100__844424932906833-727-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2757__844424933466155-390-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__251__844424931226826-164-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2878__844424933475739-390-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__489__844424930667578-229-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__307__844424930730648-326-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2097__844424931210559-186-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1359__844424932593950-888-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__553__844424932580659-645-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2311__844424933459122-759-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__3087__844424933474820-38-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__490__844424930583479-326-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1320__844424931039061-384-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1826__844424931161978-186-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2679__844424933480338-662-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__101__844424931153739-164-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2943__844424933487443-38-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2229__844424933485766-349-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2095__844424931210614-186-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1610__844424930708043-277-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1183__844424932732934-645-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2930__844424933525042-390-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__684__844424931193508-164-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__3058__844424933489408-38-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1257__844424932360854-384-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1662__844424932776070-888-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2951__844424933488548-1179-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1481__844424930618718-888-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__942__844424931219201-164-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2584__844424933461637-349-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1216__844424930917563-229-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__3132__844424933492395-38-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1066__844424930913967-326-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__328__844424931200812-164-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__494__844424932570802-645-f.m4a.wav
outputs/bench/maya_hf_v2/smoke_vaani/eval.json
outputs/bench/maya_hf_v2/smoke_vaani/results.jsonl
outputs/bench/maya_hf_v2/smoke_vaani/summary.json
outputs/bench/maya_hf_v2_100/indicconformer_600m_hf/eval.json
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2580__844424933477501-662-m.m4a.wav
outputs/bench/maya_hf_v2_100/indicconformer_600m_hf/results.jsonl
outputs/bench/maya_hf_v2_100/indicconformer_600m_hf/summary.json
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__731__844424931197787-326-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1571__844424930765171-277-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__707__844424930781768-229-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1681__844424933037946-888-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2466__844424933473599-934-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__372__844424930561673-229-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__3007__844424933456346-38-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1108__844424931197820-326-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1079__844424930913933-326-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2911__844424933475109-390-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1069__844424932336769-384-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2063__844424931064441-1160-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__198__844424930578479-252-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2798__844424933476478-1179-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2119__844424933456820-934-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__3034__844424933485998-38-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1726__844424932912747-888-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1817__844424931281874-277-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__354__844424931075468-229-f.m4a.wav
outputs/bench/maya_hf_v2/smoke_vaani/audio/fleurs__as_in__test__102__1775-779fc9c34b257c32.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__904__844424931061529-229-f.m4a.wav
outputs/bench/maya_hf_v2/smoke_vaani/audio/fleurs__as_in__test__127__1776-700ba1064c0ca661.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2348__844424933480389-662-m.m4a.wav
outputs/bench/maya_hf_v2/smoke_vaani/audio/fleurs__as_in__test__117__1748-ae04a7dfdde8c0a6.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2543__844424933258736-550-m.m4a.wav
outputs/bench/maya_hf_v2/smoke_vaani/audio/fleurs__as_in__test__128__1900-f706b548dac4d420.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__2362__844424933258353-550-m.m4a.wav
outputs/bench/maya_hf_v2/smoke_vaani/audio/fleurs__as_in__test__105__1875-fc7f2738561720cf.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1777__844424931281890-277-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__52__844424930605906-252-f.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__valid__1940__844424931209264-186-m.m4a.wav
data/bench/maya_hf_hin_v2/audio/hin/Kathbath__hindi__v…637477 tokens truncated…ic_whisper/audio/Kathbath__tamil__valid__1510__844424930761859-21-m.m4a-f0a5c38d9e47c647.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__hindi__valid__332__844424930568786-939-f.m4a-d2880b754e5d3c37.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__malayalam__valid__437__844424930960302-187-f.m4a-431a89ce21c5a565.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__gujarati__valid__703__844424930705145-382-f.m4a-2d01bbd946c45fb6.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__malayalam__valid__1733__844424930787185-42-m.m4a-ee08aae36f6bccb2.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__hindi__valid__426__844424932609623-645-f.m4a-ba1c3043e1b2c5a8.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__kannada__valid__830__844424931198907-702-f.m4a-d559b12e99003d0c.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__gujarati__valid__207__844424930646200-141-f.m4a-5a453b8c890b3187.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__kannada__valid__1300__844424930470677-441-m.m4a-03d25629b776eaec.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__tamil__valid__651__844424930970579-90-f.m4a-876c8b3d9d4323c8.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__tamil__valid__1993__844424933261968-655-m.m4a-5abc7254960958d6.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__kannada__valid__101__844424930301697-609-f.m4a-b00323f059afec25.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__as_in__test__541__1781-5c175acc4e9246f6.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__kannada__valid__1868__844424933294422-279-m.m4a-4f8ff0e34155d338.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__malayalam__valid__1510__844424931307164-985-m.m4a-622454193dc20f44.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__punjabi__valid__1697__844424933586595-1073-m.m4a-63199f06fca0d89a.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__telugu__valid__917__844424930728601-1006-f.m4a-1cbc667e24bc175c.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__tamil__valid__1613__844424930911986-797-m.m4a-c68de578cd7ade40.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__tamil__valid__873__844424930790986-507-f.m4a-61ff2bd16d682141.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__marathi__valid__1058__844424931076113-948-f.m4a-80e2dd08a2a8023d.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__kannada__valid__766__844424930725377-609-f.m4a-42a63c3ebb9f23b5.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__bengali__valid__752__844424932356966-1005-f.m4a-02690356e8c19eec.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__punjabi__valid__2824__844424933623222-700-m.m4a-bdc59688accfe993.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__marathi__valid__2216__844424933442328-365-m.m4a-f3377df81de9dd05.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__kannada__valid__191__844424930450078-1182-f.m4a-ad012552f808c4bb.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__telugu__valid__877__844424931244212-407-f.m4a-dc1744a32a1448e7.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__kannada__valid__53__844424930319544-1182-f.m4a-8b5e08f294df933b.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__marathi__valid__847__844424931280413-614-f.m4a-1808074e453c3d4e.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__en_us__test__252__1721-3060d6414d1689f2.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__punjabi__valid__659__844424931141198-608-f.m4a-81f0f9afea42b451.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__kannada__valid__1736__844424933309475-506-m.m4a-508ce2e44a239329.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__odia__valid__1173__844424931469104-824-m.m4a-993d5d42a334dcfa.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__as_in__test__751__1984-60f6432460a9b41a.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__gujarati__valid__2526__844424933313210-1001-m.m4a-909c0bb59d685bff.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__bengali__valid__1275__844424931521050-1038-m.m4a-b4576c4440ea7c66.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__punjabi__valid__6__844424931208909-812-f.m4a-d83bbd553b2e7b00.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__telugu__valid__747__844424931196611-445-f.m4a-49519b078aa6c0e2.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__malayalam__valid__1756__844424930671726-42-m.m4a-5c0216f94a88e14f.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__punjabi__valid__492__844424933143867-1194-f.m4a-66cbb318b395a5c0.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__kannada__valid__658__844424931198269-580-f.m4a-d6ed640992257b57.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__hindi__valid__2986__844424933545408-1179-m.m4a-6331c2b4b14148f8.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__kannada__valid__287__844424930325718-235-f.m4a-7aec2d368216072e.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__hindi__valid__2948__844424933478518-390-m.m4a-2236720bb2137262.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__as_in__test__274__1869-85547f433769f406.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__punjabi__valid__3146__844424933610683-1-m.m4a-28407938868f8f70.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__telugu__valid__898__844424930828087-1006-f.m4a-46ae70cf53cca7e6.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__malayalam__valid__357__844424930512857-474-f.m4a-4131c73072bb2f15.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__telugu__valid__40__844424931179558-381-f.m4a-55a937ab1a9eb70b.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__as_in__test__727__1956-9e12e78c79b69d08.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__as_in__test__701__1899-ed10af6d8e8db2e9.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__kannada__valid__977__844424930961546-62-f.m4a-73164cd89354aff4.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__hindi__valid__1390__844424932606980-727-f.m4a-8a4af7d061bd8bf7.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__tamil__valid__1040__844424930933069-837-f.m4a-560e42f88e5dfb12.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__en_us__test__630__1881-bb5304e12638e5bb.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__telugu__valid__1000__844424930578744-1006-f.m4a-b0c5c57797ac0e28.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__tamil__valid__624__844424931385916-90-f.m4a-ee6edbd68a8ea296.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__hindi__valid__2679__844424933480338-662-m.m4a-c06e7baf2032788f.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__telugu__valid__2252__844424933404450-1192-m.m4a-89f68c4fbd00dd2a.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__telugu__valid__1932__844424933351837-638-m.m4a-0dff3fd2057ed81b.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__en_us__test__428__1753-3c5c2afce217e509.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__telugu__valid__1480__844424930443457-72-m.m4a-61736f6189fcce02.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__marathi__valid__30__844424930993503-427-f.m4a-8a6f4c7a3aad29d7.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__marathi__valid__1497__844424933451283-421-m.m4a-1d2c7f54a069bcb2.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__as_in__test__202__1768-519749a959f98d86.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__odia__valid__499__844424931543774-410-f.m4a-c72456443f2662c8.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__kannada__valid__1924__844424933309197-279-m.m4a-5daa05ae240a36cf.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__as_in__test__532__1690-6da8995c14549bbb.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__hindi__valid__1828__844424931150087-186-m.m4a-c282edbdb4e5e4c2.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__bengali__valid__2190__844424931066655-99-m.m4a-b2247944a386020b.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__marathi__valid__1179__844424930524541-291-f.m4a-a5d82bf48e7944be.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__punjabi__valid__1680__844424933625557-1019-m.m4a-a2cb9b6ee1805f72.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__punjabi__valid__907__844424933098731-1194-f.m4a-8416d57289872434.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__hindi__valid__2757__844424933466155-390-m.m4a-96b7f5618a26a034.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__telugu__valid__2206__844424933557306-922-m.m4a-74f36b47bb3f2aca.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__gujarati__valid__1220__844424931034924-24-f.m4a-aa61eb8c7259da7e.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__en_us__test__227__1889-0d611d90a39cf43b.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__malayalam__valid__1341__844424930368741-985-m.m4a-2e335259efa323c0.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__telugu__valid__1669__844424933585190-902-m.m4a-27ccc41f00b28100.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__en_us__test__398__1986-71c5c6488fabef85.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__malayalam__valid__1219__844424930373747-1132-m.m4a-2fcb2c130e76cc20.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__hindi__valid__111__844424930568740-939-f.m4a-4decfd86eee2f6fd.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__en_us__test__564__1794-b1c5a2addad18633.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__en_us__test__67__1866-29a134ede5c46dff.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__telugu__valid__816__844424931082264-407-f.m4a-e1d08a1f3c80fe7f.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__telugu__valid__1628__844424933507696-958-m.m4a-ae00d43a145b2c3f.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__punjabi__valid__1201__844424931393821-736-f.m4a-9bcb70f953d253be.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__telugu__valid__651__844424932673499-1057-f.m4a-ff4b8fc7701ede9b.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__as_in__test__159__1865-e4beabf70d51f6d6.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__as_in__test__531__1832-69685c65e2a09bf2.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__marathi__valid__365__844424931047809-427-f.m4a-00ba1ef43122b2a2.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__gujarati__valid__0__844424931508725-889-f.m4a-1b08709a2a42242e.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__malayalam__valid__200__844424931158599-462-f.m4a-22e2c1d64996f296.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__tamil__valid__2588__844424933268020-739-m.m4a-f404918e6af1e391.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__marathi__valid__1481__844424933478257-527-m.m4a-a9419dbedcd57a32.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__as_in__test__540__2009-5d1e18bc37c57320.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__kannada__valid__111__844424930311483-1182-f.m4a-b7647e6412da1af4.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__gujarati__valid__945__844424930436192-889-f.m4a-db8ff8e9cc8a1b2e.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__as_in__test__469__1854-12d2ff8b7f9423de.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__odia__valid__1622__844424931544228-824-m.m4a-b9309feed226e712.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__tamil__valid__1091__844424933091985-507-f.m4a-3ed083d5734b1878.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__punjabi__valid__2586__844424933647925-601-m.m4a-f02865213b78107d.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__as_in__test__153__1916-66c083faded5c21f.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__odia__valid__433__844424930668102-1178-f.m4a-a84997b2ffba035f.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__odia__valid__412__844424930513985-1178-f.m4a-951b58256cd03816.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__punjabi__valid__2090__844424933619638-1088-m.m4a-2c5ba710e99de660.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__kannada__valid__1355__844424930436091-320-m.m4a-eda61553411cee52.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__bengali__valid__2158__844424931501000-99-m.m4a-7cb766f6ab42c3b6.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__en_us__test__402__1774-406b3c5745eddbaa.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__as_in__test__764__1692-76fe091083bebea8.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__telugu__valid__313__844424931097425-381-f.m4a-d77bf363ca2370f1.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__kannada__valid__442__844424930368329-1182-f.m4a-39e1edecbf6e35bd.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__bengali__valid__1172__844424930694572-1038-m.m4a-d58dc4b05a8ce885.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__malayalam__valid__475__844424931193724-187-f.m4a-914fa96c0eec1146.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__kannada__valid__1997__844424933303849-279-m.m4a-62153b21da5c784d.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__en_us__test__572__1747-f37adc75b64b076a.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__malayalam__valid__1680__844424930343746-42-m.m4a-00c7797f2a24ea5b.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__bengali__valid__1946__844424930685149-188-m.m4a-18752b3516ffddd7.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__hindi__valid__2016__844424932314538-1160-m.m4a-318ca6e4467bb991.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__marathi__valid__1231__844424930480631-291-f.m4a-20d25997ea38d2d5.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__odia__valid__930__844424931359967-410-f.m4a-e28b69a1dc85c4e0.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__en_us__test__206__1977-aa76ed322ed40270.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__gujarati__valid__1496__844424931220248-341-m.m4a-7ae2388d5f7bffe8.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__kannada__valid__1385__844424933296821-41-m.m4a-e6f090e2bbdb8f2a.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__odia__valid__415__844424930823434-947-f.m4a-a24cdf5737834b91.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__tamil__valid__300__844424930589075-154-f.m4a-20b1b3d35ec035a6.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__punjabi__valid__1350__844424933143707-180-f.m4a-06114a41d728bb50.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__bengali__valid__196__844424932324882-592-f.m4a-247b563d8a713cd7.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__punjabi__valid__1579__844424932635547-703-f.m4a-f6ab149bd8d342bc.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__hindi__valid__1846__844424931209196-186-m.m4a-b21eed6f923e8bbb.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__malayalam__valid__1604__844424931098969-1007-m.m4a-c7788369b4151f59.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__gujarati__valid__2027__844424930415141-1139-m.m4a-540f025c435e3794.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__marathi__valid__127__844424930993984-1106-f.m4a-9377a6986f687a0d.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__bengali__valid__364__844424930842619-219-f.m4a-2a1fe0e7e8fdf51d.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__punjabi__valid__361__844424930574549-812-f.m4a-104bf022fd2f1a92.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__hindi__valid__1066__844424930913967-326-f.m4a-3a27eccf077e9e6b.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__marathi__valid__1290__844424933318394-161-m.m4a-ab8bfc0f608368ee.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__odia__valid__2014__844424932528564-97-m.m4a-8bfd33a9e5dc46b1.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__punjabi__valid__1379__844424932569434-703-f.m4a-29a3df6cd028cc07.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__marathi__valid__1874__844424933463665-615-m.m4a-d28d21b4148b60c2.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__kannada__valid__1953__844424933291808-279-m.m4a-a7959c52e2c5fd5d.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__kannada__valid__340__844424930327711-1182-f.m4a-d2f912902a677db5.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__odia__valid__641__844424930739345-795-f.m4a-64e26dc836723cb1.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__en_us__test__523__1715-662d4c754893b4c3.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__en_us__test__68__1712-961b143cd0c682d9.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__tamil__valid__1375__844424930420739-781-f.m4a-6a7a29130af7d1aa.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__bengali__valid__1015__844424930968733-790-f.m4a-2283d6bdddd29407.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__odia__valid__528__844424930593134-460-f.m4a-b6424d3f6f78ff1e.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__en_us__test__530__1983-9d496229c9d45e87.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__bengali__valid__1211__844424930854837-1038-m.m4a-286f973aa9a5e846.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__malayalam__valid__1220__844424930803644-1132-m.m4a-e366df5af2159e26.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__kannada__valid__1026__844424930961587-62-f.m4a-24f0a9c4baee4805.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__marathi__valid__244__844424930832600-40-f.m4a-1465faad7dfc33e0.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__punjabi__valid__1838__844424933616319-1088-m.m4a-6fbd675532dba753.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__punjabi__valid__2507__844424933623604-700-m.m4a-6e479795ba9c715f.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__telugu__valid__130__844424932585343-134-f.m4a-e50fd5873fe01821.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__kannada__valid__1512__844424933310455-1097-m.m4a-af4896fe263c6abb.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__malayalam__valid__1729__844424930343802-42-m.m4a-3fbfcbd5fd3983a3.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__bengali__valid__1108__844424930968805-790-f.m4a-76ed6f2b4f6e667e.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__en_us__test__507__1900-dd3ba14ecfd2c44d.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__marathi__valid__705__844424931036372-614-f.m4a-33b1464383fdd61c.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__en_us__test__413__1981-a0ac059091369179.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__en_us__test__619__1958-7dc79ef058669dda.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__kannada__valid__1603__844424933355345-1097-m.m4a-411bf82338ff1396.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__hindi__valid__1359__844424932593950-888-f.m4a-bbad8b709c101d54.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__odia__valid__1706__844424930501755-955-m.m4a-7089c2b9e21b3147.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__odia__valid__1796__844424931148102-955-m.m4a-740bc9acd0e958a0.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__tamil__valid__1017__844424930951136-837-f.m4a-1280fe2784406f92.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/fleurs__as_in__test__250__1924-21c06ed93de6d225.wav
outputs/bench/maya_hf_v2/indic_whisper/audio/Kathbath__gujarati__valid__614__844424933097940-1135-f.m4a-abfb80fc9d1c7d45.wav


Summary: auto

## Skills
A skill is a set of local instructions to follow that is stored in a `SKILL.md` file. Below is the list of skills that can be used. Each entry includes a name, description, and file path so you can open the source for full instructions when using a specific skill.
### Available skills
- skill-creator: Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Codex's capabilities with specialized knowledge, workflows, or tool integrations. (file: /home/ubuntu/.codex/skills/.system/skill-creator/SKILL.md)
- skill-installer: Install Codex skills into $CODEX_HOME/skills from a curated list or a GitHub repo path. Use when a user asks to list installable skills, install a curated skill, or install a skill from another repo (including private repos). (file: /home/ubuntu/.codex/skills/.system/skill-installer/SKILL.md)
### How to use skills
- Discovery: The list above is the skills available in this session (name + description + file path). Skill bodies live on disk at the listed paths.
- Trigger rules: If the user names a skill (with `$SkillName` or plain text) OR the task clearly matches a skill's description shown above, you must use that skill for that turn. Multiple mentions mean use them all. Do not carry skills across turns unless re-mentioned.
- Missing/blocked: If a named skill isn't in the list or the path can't be read, say so briefly and continue with the best fallback.
- How to use a skill (progressive disclosure):
  1) After deciding to use a skill, open its `SKILL.md`. Read only enough to follow the workflow.
  2) If `SKILL.md` points to extra folders such as `references/`, load only the specific files needed for the request; don't bulk-load everything.
  3) If `scripts/` exist, prefer running or patching them instead of retyping large code blocks.
  4) If `assets/` or templates exist, reuse them instead of recreating from scratch.
- Coordination and sequencing:
  - If multiple skills apply, choose the minimal set that covers the request and state the order you'll use them.
  - Announce which skill(s) you're using and why (one short line). If you skip an obvious skill, say why.
- Context hygiene:
  - Keep context small: summarize long sections instead of pasting them; only load extra files when needed.
  - Avoid deep reference-chasing: prefer opening only files directly linked from `SKILL.md` unless you're blocked.
  - When variants exist (frameworks, providers, domains), pick only the relevant reference file(s) and note that choice.
- Safety and fallback: If a skill can't be applied cleanly (missing files, unclear instructions), state the issue, pick the next-best approach, and continue.


**Confirming cleanup scope and files**

The user wants to clean up but requires confirmation before deleting anything, especially since .env contains secrets not to be echoed. I'll propose a minimal set of files needed for reproducing recent runs with the specified models, focusing on essential code modules and setup files while confirming allowance to remove non-code directories and unused modules.


**Verifying usage of modules for cleanup**

Noticed that the align module is used by rover, so it must be retained. Planning to check if verify is used in recent runs before considering its removal.


sed -n '1,220p' maya_transcribe/verify.py


Output:
Exit code: 0
Wall time: 0 seconds
Output:
from __future__ import annotations

from dataclasses import dataclass
from typing import Any

from maya_transcribe.lid import LIDResult

@dataclass(frozen=True)
class Verification:
    decision: str  # "accept" | "human" | "reject"
    reasons: list[str]
    scores: dict[str, Any]

def lid_confidence(lid: LIDResult | None) -> dict[str, Any]:
    if not lid or not lid.predictions:
        return {"available": False, "top1": None, "top1_prob": None, "margin": None, "confident": False}
    top1 = lid.predictions[0]
    top2_prob = lid.predictions[1].prob if len(lid.predictions) > 1 else 0.0
    margin = float(top1.prob) - float(top2_prob)
    return {
        "available": True,
        "top1": top1.code,
        "top1_prob": float(top1.prob),
        "margin": margin,
        "confident": False,
    }

def verify_segment(
    *,
    qc: dict[str, Any],
    lid: LIDResult | None,
    final_text: str,
    rover: dict[str, Any],
    asr_summaries: dict[str, Any],
    primary_asr_key: str | None = None,
    ctc: dict[str, Any] | None = None,
    thresholds: dict[str, Any] | None = None,
) -> Verification:
    """
    Conservative verification gate (precision-first).
    """
    thresholds = thresholds or {}
    min_duration = float(thresholds.get("min_duration_sec", 0.8))
    max_clipping = float(thresholds.get("max_clipping_fraction", 0.01))
    max_disagreement = float(thresholds.get("max_rover_disagreement_rate", 0.03))
    lid_min_prob = float(thresholds.get("lid_min_prob", 0.90))
    lid_min_margin = float(thresholds.get("lid_min_margin", 0.20))
    require_lid = bool(thresholds.get("require_lid", True))

    # Whisper-style failure heuristics (see OpenAI whisper fallback logic).
    min_avg_logprob = float(thresholds.get("min_avg_logprob_mean", -1.0))
    max_compression_ratio = float(thresholds.get("max_compression_ratio_mean", 2.4))

    # CTC fit (audio-grounded) gating.
    require_ctc = bool(thresholds.get("require_ctc", False))
    min_ctc_margin = float(thresholds.get("min_ctc_margin", 0.0))
    min_ctc_token_coverage = float(thresholds.get("min_ctc_token_coverage", 0.85))
    min_ctc_token_score_mean = float(thresholds.get("min_ctc_token_score_mean", -3.0))
    fail_on_ctc_span_mismatch = bool(thresholds.get("fail_on_ctc_span_mismatch", True))

    reasons: list[str] = []
    decision = "accept"

    duration = float(qc.get("duration_sec") or 0.0)
    clipping = float(qc.get("clipping_fraction") or 0.0)
    if duration < min_duration:
        decision = "reject"
        reasons.append("too_short")
    if clipping > max_clipping:
        decision = "human" if decision != "reject" else decision
        reasons.append("clipping")

    lidc = lid_confidence(lid)
    if lidc["available"]:
        lidc["confident"] = bool(lidc["top1_prob"] >= lid_min_prob and lidc["margin"] >= lid_min_margin)
        if not lidc["confident"]:
            decision = "human" if decision != "reject" else decision
            reasons.append("lid_uncertain")
    else:
        reasons.append("lid_missing")
        if require_lid:
            decision = "human" if decision != "reject" else decision

    disagreement_rate = float(rover.get("disagreement_rate") or 0.0)
    if disagreement_rate > max_disagreement:
        decision = "human" if decision != "reject" else decision
        reasons.append("asr_disagreement")

    final_text = (final_text or "").strip()
    if "<unk>" in final_text or "<inaudible>" in final_text:
        decision = "human" if decision != "reject" else decision
        reasons.append("contains_unk")

    # Whisper-style safety: flag if any decoder claims "no speech" with high probability.
    no_speech_probs = []
    for summary in asr_summaries.values():
        p = summary.get("no_speech_prob_mean")
        if p is None:
            continue
        no_speech_probs.append(float(p))
    if no_speech_probs and max(no_speech_probs) > 0.8:
        decision = "reject"
        reasons.append("no_speech")

    # Whisper-style hallucination heuristics: apply to the primary ASR (or rover skeleton fallback).
    asr_key_for_heuristics = primary_asr_key or str(rover.get("skeleton_key") or "")
    heur = asr_summaries.get(asr_key_for_heuristics, {}) if asr_key_for_heuristics else {}
    avg_lp = heur.get("avg_logprob_mean")
    comp = heur.get("compression_ratio_mean")
    if avg_lp is not None and float(avg_lp) < min_avg_logprob:
        decision = "human" if decision != "reject" else decision
        reasons.append("low_logprob")
    if comp is not None and float(comp) > max_compression_ratio:
        decision = "human" if decision != "reject" else decision
        reasons.append("high_compression_ratio")

    # Audio-grounded fit check (when available).
    if require_ctc and (ctc is None or ctc.get("best_loss") is None):
        decision = "human" if decision != "reject" else decision
        reasons.append("ctc_missing")
    if ctc is not None:
        margin = ctc.get("margin")
        if margin is not None and float(margin) < min_ctc_margin:
            decision = "human" if decision != "reject" else decision
            reasons.append("ctc_ambiguous")

        best_key = ctc.get("best_key")
        scores = ctc.get("scores")
        if isinstance(best_key, str) and isinstance(scores, dict):
            best = scores.get(best_key) or {}
            if isinstance(best, dict):
                cov = best.get("token_coverage")
                if cov is not None and float(cov) < min_ctc_token_coverage:
                    decision = "human" if decision != "reject" else decision
                    reasons.append("ctc_low_coverage")
                mean_tok = best.get("token_score_mean")
                if mean_tok is not None and float(mean_tok) < min_ctc_token_score_mean:
                    decision = "human" if decision != "reject" else decision
                    reasons.append("ctc_low_token_score")
                if fail_on_ctc_span_mismatch and bool(best.get("span_mismatch")):
                    decision = "human" if decision != "reject" else decision
                    reasons.append("ctc_span_mismatch")

    scores = {
        "duration_sec": duration,
        "clipping_fraction": clipping,
        "rover_disagreement_rate": disagreement_rate,
        "lid": lidc,
        "no_speech_prob_max": max(no_speech_probs) if no_speech_probs else None,
        "heuristics_asr_key": asr_key_for_heuristics or None,
        "avg_logprob_mean": avg_lp,
        "compression_ratio_mean": comp,
        "ctc": ctc,
    }

    return Verification(decision=decision, reasons=reasons, scores=scores)


Summary: auto


**Scoping cleanup to recent ASR runs**

Planning to remove unused ASR modules like Gemini, R2, DB, dataset, tar, and potentially ctc_fit since they're not needed for the recent transcriptions; deciding to keep align due to rover dependency and to cautiously retain some classes in asr.py to avoid breaking other code.


**Proposing targeted cleanup plan**

I’ll suggest removing clearly unused code modules and docs while keeping all data, results, and key setup files needed for the recent runs, plus preserving core ASR classes and pipeline features for those runs. I’ll ask the user to confirm the exact files to delete and whether to prune related CLI/pipeline options to avoid broken references before proceeding.


I can do the cleanup, but it’s a big change and I want to make sure the scope is exactly what you want.

Proposed keep set (needed to reproduce the latest runs with Voxtral, Gemma‑3n, HF IndicConformer, Whisper‑large‑v3):
- Core code: `maya_transcribe/asr.py`, `maya_transcribe/pipeline.py`, `maya_transcribe/cli.py`, `maya_transcribe/audio.py`, `maya_transcribe/ids.py`, `maya_transcribe/language.py`, `maya_transcribe/lid.py`, `maya_transcribe/textnorm.py`, `maya_transcribe/rover.py`, `maya_transcribe/verify.py`, `maya_transcribe/eval.py`, `maya_transcribe/io.py`, `maya_transcribe/align.py`, `maya_transcribe/bench.py`, `maya_transcribe/__init__.py`
- Setup/docs: `pyproject.toml`, `README.md`, `Prompt.md`, `results.md`, `configs/bench_v2_100_thresholds.json`, `.env`
- Data/results: keep everything under `data/` and `outputs/`

Proposed removals (code not used in those runs):
- Files: `maya_transcribe/gemini_asr.py`, `maya_transcribe/r2.py`, `maya_transcribe/db.py`, `maya_transcribe/dataset.py`, `maya_transcribe/tar.py`, `maya_transcribe/ctc_fit.py`, `maya_transcribe/config.py`
- Optional: `docs/Reference*.md`, `task.md`, `master.md`, `Agents.md`, `maya_transcribe.egg-info/*`

Also, do you want me to **strip the unused options/branches** from `cli.py` and `pipeline.py` (Gemini, MMS ASR, transformers whisper, NeMo IndicConformer router, CTC scoring), or just delete the unused files and leave the optional flags in place?

Confirm what to remove, and I’ll proceed.


# Context from my IDE setup:

## Active file: results.md

## Open tabs:
- results.md: results.md
- asr.py: maya_transcribe/asr.py
- .env: .env
- Prompt.md: Prompt.md
- eval.json: outputs/bench/maya_hf_hin_v2/gemma3n_e2b_vllm/eval.json

## My request for Codex:
keep the gemini_asr.py, r2.py, dataset.py and also keep the egg-info , keep the optional flags we'll decide on what to do about them.


**Planning cautious cleanup**

Preparing to remove specific code files and __pycache__ folders while carefully preserving data outputs and setup files; will avoid deleting docs without explicit confirmation to prevent losing user changes.


**Reassessing file removals to preserve optional flags**

Realizing ctc_fit.py must be kept to avoid breaking optional CTC scoring flags, so the cleanup will exclude it and other files still referenced by optional features to maintain functional flags.


rg -n "import .*db|from .*db" maya_transcribe


Output:
Exit code: 0
Wall time: 0 seconds
Output:
maya_transcribe/cli.py:52:        from maya_transcribe.db import fetch_video_meta


**Assessing CLI db dependency**

The CLI imports the db module locally inside a command function, so removing db.py won't break unrelated commands unless that command is run. Since the user wants to remove unused code but keep optional flags (not necessarily all commands), removing db.py is safe if the db-related CLI command is truly unused.


**Refining file keep/remove decisions**

The user wants to keep only files needed to reproduce the recent run plus data, results, setup, optional flags, dataset, gemini_asr, r2, and egg-info. Given this, ctc_fit must be kept to preserve optional flags. Dataset stays despite no direct run usage. db.py isn’t mentioned and can be removed unless tied to optional flags. Next, I'll check config.py usage to confirm retention.


rg -n "from maya_transcribe.config|maya_transcribe.config" maya_transcribe


Output:
Exit code: 0
Wall time: 0 seconds
Output:
maya_transcribe/r2.py:6:from maya_transcribe.config import Settings
maya_transcribe/cli.py:10:from maya_transcribe.config import Settings


**Confirming config.py retention**

Config.py is necessary since both cli and r2 depend on it, so it can't be deleted as r2.py will be kept; next, I'll check usage of tar.py.


rg -n "maya_transcribe.tar|from .*tar" maya_transcribe


Output:
Exit code: 0
Wall time: 0 seconds
Output:
maya_transcribe/cli.py:15:from maya_transcribe.tar import safe_extract_tar
maya_transcribe/tar.py:15:                raise RuntimeError(f"Refusing to extract links from tar: {m.name}")
maya_transcribe/tar.py:17:                raise RuntimeError(f"Refusing to extract absolute path from tar: {m.name}")


**Deciding module removal risks**

db.py is imported inside CLI commands, so removing it risks breaking some commands; since dataset.py must be kept and optional flags retained, it's safer to keep db.py to avoid breaking CLI features not explicitly marked for removal.


**Confirming code file usage**

Most key modules are used or explicitly requested to keep, so only fully unreferenced or unused files qualify for removal; next, I'll verify usage of specific modules like dataset.py to ensure compliance with the cleanup scope.


rg -n "maya_transcribe.dataset|from .*dataset" maya_transcribe


Output:
Exit code: 0
Wall time: 0 seconds
Output:
maya_transcribe/bench.py:209:        from datasets import load_dataset
maya_transcribe/bench.py:353:        from datasets import Audio, Dataset, DatasetDict
maya_transcribe/cli.py:11:from maya_transcribe.dataset import find_segments_dir
maya_transcribe/cli.py:375:    Build a local benchmark corpus from Hugging Face datasets.


**Deciding minimal code removal**

The CLI relies on many modules due to optional flags, and since the user wants to keep those flags, removing related code risks breaking commands. Also, the user only requested cleaning code files, so it's safer to leave docs and most code intact for now.


**Identifying removable code cautiously**

Most code modules are referenced or tied to optional flags that must be kept, so removing them risks breaking functionality. The only clearly safe cleanup is deleting `__pycache__` directories; removing other code files like unused modules could cause import errors since many are imported at top-level in the CLI.


Output:
Exit code: 0
Wall time: 0 seconds
Output:
from __future__ import annotations

import json
from pathlib import Path

import typer
from dotenv import load_dotenv

from maya_transcribe.audio import compute_qc, ffprobe, normalize_audio
from maya_transcribe.config import Settings
from maya_transcribe.dataset import find_segments_dir
from maya_transcribe.ids import segment_identity
from maya_transcribe.io import write_jsonl
from maya_transcribe.r2 import R2Client
from maya_transcribe.tar import safe_extract_tar

load_dotenv(dotenv_path=Path(".env"), override=False)

app = typer.Typer(add_completion=False, no_args_is_help=True)
bench_app = typer.Typer(add_completion=False, no_args_is_help=True, help="Benchmarking utilities.")
app.add_typer(bench_app, name="bench")

@app.command()
def download(
    video_id: str = typer.Option(..., help="YouTube video id (used to locate the tar in R2)."),
    out: Path = typer.Option(Path("data"), help="Output directory."),
    r2_key: str | None = typer.Option(None, help="Exact R2 object key (skips search)."),
    bucket: str | None = typer.Option(None, help="R2 bucket override (defaults to env R2_BUCKET)."),
    prefix: str | None = typer.Option(None, help="Optional R2 prefix override."),
    use_db: bool = typer.Option(False, help="Fetch `r2_tar_key` from Supabase Postgres (DATABASE_URL)."),
    dry_run: bool = typer.Option(False, help="Only show matched key(s); do not download."),
) -> None:
    """
    Download the cleaned/segmented tar for a video from R2 and extract it.
    """
    settings = Settings.load()
    r2 = R2Client.from_settings(settings)
    if bucket:
        r2 = R2Client(
            endpoint_url=r2.endpoint_url,
            access_key_id=r2.access_key_id,
            secret_access_key=r2.secret_access_key,
            bucket=bucket,
        )

    out.mkdir(parents=True, exist_ok=True)
    r2_prefix = prefix if prefix is not None else settings.r2_prefix

    matches: list[str]
    if use_db and not r2_key:
        from maya_transcribe.db import fetch_video_meta

        meta = fetch_video_meta(video_id)
        if meta and meta.r2_tar_key:
            r2_key = meta.r2_tar_key

    if r2_key:
        matches = [r2_key]
    else:
        best = r2.find_video_tar_key(video_id=video_id, prefix=r2_prefix)
        if not best:
            typer.echo("No matching objects found in R2.")
            raise typer.Exit(code=2)
        matches = [best]

    if dry_run:
        for key in matches:
            typer.echo(key)
        return

    key = matches[0]
    tar_path = r2.download_to(key=key, out_dir=out / video_id)
    extract_dir = out / video_id
    safe_extract_tar(tar_path, extract_dir=extract_dir)
    segments_dir = find_segments_dir(extract_dir)
    typer.echo(f"Downloaded: {tar_path}")
    typer.echo(f"Extracted to: {extract_dir}")
    if segments_dir:
        typer.echo(f"Segments dir: {segments_dir}")


Summary: auto


**Considering minimal optional code cleanup**

Removing the unused db file is safe since its import is optional and only triggers if a specific flag is used, but I'll avoid deleting anything related to r2 or core optional flags to respect the user's preferences.


**Proposing minimal safe cleanup**

Given the constraints to keep key files and optional flags, no code files can be removed without breaking features; the safest cleanup is removing Python bytecode caches and nonessential generated files while preserving all code modules.


**Confirming no safe code removal without breaking features**

All code files are currently needed to preserve the specified modules and optional flags; the only safe cleanup is deleting Python bytecode caches. To remove any code (like download/db or ctc), significant refactoring is required—please confirm if you'd like to proceed with that.


I haven’t deleted anything yet. With your keep list (gemini_asr.py, r2.py, dataset.py, egg‑info) and “keep optional flags,” every remaining code file is either required by the recent run path (pipeline/ASR/LID/ROVER/verify) or imported by the CLI. If I delete any of those modules, some CLI commands or optional flags will break.

I can do one of these:

1) Minimal cleanup: remove only `maya_transcribe/__pycache__` and `.pyc` files (no code changes).
2) Full prune: refactor CLI to drop download/DB/CTC/other unused paths, then delete the corresponding modules (this will remove optional flags/commands).

Which option do you want?


# Context from my IDE setup:

## Open tabs:
- results.md: results.md
- asr.py: maya_transcribe/asr.py
- .env: .env
- Prompt.md: Prompt.md
- eval.json: outputs/bench/maya_hf_hin_v2/gemma3n_e2b_vllm/eval.json

## My request for Codex:
fine. forget about the cleanup. can you also do a run few meta's ASR model ?

1. https://huggingface.co/facebook/seamless-m4t-v2-large
2. https://github.com/facebookresearch/omnilingual-asr - try the bigger model to see full performance.

github repo says,
Checkpoints of improved accuracy (CER) for the CTC and LLM-ASR models compared to our existing LLM-ASR model (omniASR_{CTC,LLM}_{300M,1B,3B,7B}_v2).

from omnilingual_asr.models.wav2vec2_llama.lang_ids import supported_langs

# Print all supported languages
print(f"Total supported languages: {len(supported_langs)}")
print(supported_langs)

# Check if a specific language is supported
if "eng_Latn" in supported_langs:
    print("English (Latin script) is supported!")

get the repo locally to a new folder locally, and check the readme, extract required code to run these evaluations. also only try the largest model for max intelligence.

Once these models are evaluated, add these results into results.md into the last table, if possible arrange results also to make them seem together with older model's runs.


**Assessing new model setups**

I'm gathering info on the Facebook Seamless M4T and omnilingual ASR models by reviewing their repos and readmes to identify the required code for evaluation, while clarifying permissible inference methods for these new models separate from prior transformer restrictions.


**Planning multi-model evaluation**

I'll clone the omnilingual ASR repo into an external directory, review its README and dependencies, and set up evaluation on the multilingual 100-sample bench with 12 languages, integrating new results into the existing results.md table calculating WER per language and overall.


rg -n "seamless|m4t|omnilingual" -S maya_transcribe


Output:
Exit code: 1
Wall time: 0 seconds
Output:


**Planning ASR evaluation approach**

The existing system lacks these ASR backends, so new scripts or wrappers will be needed to run the targeted models separately. Integrating them into the current pipeline is possible for consistency but more complex; following the repo's instructions and using their largest model via a separate script may be simpler and align better with the user's request.


**Detailing ASR backend integration options**

I outlined concrete options to run SeamlessM4T and OmniASR using transformers and their repos, weighing integration into the existing pipeline versus standalone scripts. Maintaining pipeline consistency favors adding new CLI flags and backends, but following repo instructions via separate scripts aligns with user requests. Next, I'll clone OmniASR locally and review its README to inform implementation.


Explanation: Evaluate Meta ASR models (Seamless-M4T v2 large and Omnilingual-ASR largest) on the 12-language 100-sample bench and update results.md table.

Clone omnilingual-asr repo and review README for required inference steps/model naming

Integrate or script runs for Seamless-M4T v2 large and Omnilingual-ASR largest on data/bench/maya_hf_v2_100, producing results.jsonl + eval.json

Add per-language WER metrics for the new models into results.md table


Output: Plan updated


**Cloning repository**


mkdir -p external && git clone https://github.com/facebookresearch/omnilingual-asr external/omnilingual-asr


Output:
Exit code: 0
Wall time: 0.5 seconds
Output:
Cloning into 'external/omnilingual-asr'...


**Reading README for context**


sed -n '1,200p' external/omnilingual-asr/README.md


Output:
Exit code: 0
Wall time: 0 seconds
Output:

Photographs captured during corpus creation efforts in Pakistan and Liberia.

# Omnilingual ASR: Open-Source Multilingual Speech Recognition for 1600+ Languages

Omnilingual ASR is an open-source speech recognition system supporting over 1,600 languages — including hundreds never previously covered by any ASR technology. Designed for broad accessibility, it enables new languages to be added with just a few paired examples without requiring specialized expertise or large datasets. By combining scalable zero-shot learning with a flexible model family, Omnilingual ASR aims to make speech technology more inclusive and adaptable for communities and researchers worldwide.

* [Huggingface Demo](https://huggingface.co/spaces/facebook/omniasr-transcriptions)
* [Huggingface Dataset](https://huggingface.co/datasets/facebook/omnilingual-asr-corpus)
* [Paper](https://ai.meta.com/research/publications/omnilingual-asr-open-source-multilingual-speech-recognition-for-1600-languages/)
* [Blogpost](http://ai.meta.com/blog/omnilingual-asr-advancing-automatic-speech-recognition)

Our 7B-LLM-ASR system achieves state-of-the-art performance across 1,600+ languages, with character error rates (CER) below 10 for 78% of those languages. Per language CER results, plus training hours can be found in this csv

## December 2025 Update
We release two suites of models:
- Checkpoints of improved accuracy (CER) for the CTC and LLM-ASR models compared to our existing LLM-ASR model (`omniASR_{CTC,LLM}_{300M,1B,3B,7B}_v2`).
- A new variant of the LLM-ASR model that supports decoding on unlimited audio length (`omniASR_LLM_Unlimited_{300M,1B,3B,7B}_v2`). The unlimited audio length models are briefly described in the [architecture overview section](src/omnilingual_asr/models/README.md). It's accuracy is comparable to limited audio length models, however finetuning recipies for this model are currently not supported.

## Documentation

### Quick Start
- **[Installation & Basic Usage](#installation)** - Setup and first transcription
- **[Inference Pipeline](src/omnilingual_asr/models/inference/README.md)** - Comprehensive transcription guide with batch processing, language conditioning, and context examples
- **[Supported Languages](#supported-languages)** - View the complete list of 1600+ supported languages

### Models & Architecture
- **[Model Specifications](#model-architectures)** - Available models, parameters, and memory requirements
- **[Architecture Overview](src/omnilingual_asr/models/README.md)** - Technical details on W2V, CTC, and LLM model families
- **[Asset Management](src/omnilingual_asr/cards/README.md)** - Configuration system for models, tokenizers, and datasets

### Training & Data Pipeline
- **[Data Preparation](workflows/dataprep/README.md)** - End-to-end guide for multilingual dataset preparation, HuggingFace integration, and parquet processing
- **[Training Recipes](workflows/recipes/wav2vec2/asr/README.md)** - Pre-configured workflows for CTC and LLM model training

---

## Installation

The models were developed using [fairseq2](https://github.com/facebookresearch/fairseq2), a research-focused sequence modeling toolkit. While we provide a **reference** inference pipeline that works across platforms, audio support requires [libsndfile](https://github.com/facebookresearch/fairseq2?tab=readme-ov-file#system-dependencies) (Mac: `brew install libsndfile`; Windows may need an additional [setup](https://github.com/facebookresearch/fairseq2?tab=readme-ov-file#installing-on-windows)).

```bash
# using pip
pip install omnilingual-asr

# using uv
uv add omnilingual-asr
```

## Inference

```python
from omnilingual_asr.models.inference.pipeline import ASRInferencePipeline

pipeline = ASRInferencePipeline(model_card="omniASR_LLM_Unlimited_7B_v2")
audio_files = ["/path/to/eng_audio1.flac", "/path/to/deu_audio2.wav"]
lang = ["eng_Latn", "deu_Latn"]
transcriptions = pipeline.transcribe(audio_files, lang=lang, batch_size=2)
```

More details on running specific models can be found in the [src/omnilingual_asr/models/inference](/src/omnilingual_asr/models/inference/README.md) directory.

> **⚠ Important:** Currently only audio files shorter than 40 seconds are accepted for inference on CTC and LLM model suites.

### Supported Languages

To view the full list of 1600+ supported languages, you can access the language list [programmatically](/src/omnilingual_asr/models/wav2vec2_llama/lang_ids.py):

```python
from omnilingual_asr.models.wav2vec2_llama.lang_ids import supported_langs

# Print all supported languages
print(f"Total supported languages: {len(supported_langs)}")
print(supported_langs)

# Check if a specific language is supported
if "eng_Latn" in supported_langs:
    print("English (Latin script) is supported!")
```

Languages follow the format `{language_code}_{script}`, for example `eng_Latn` - English (Latin script), `cmn_Hans` - Mandarin Chinese (Simplified), ...

### Using the HuggingFace Dataset 🤗

We provide a large-scale multilingual speech dataset on HuggingFace under CC-BY-4.0 License: [`facebook/omnilingual-asr-corpus`](https://huggingface.co/datasets/facebook/omnilingual-asr-corpus).
This dataset can be directly used with our inference pipeline for evaluation or testing:

```bash
pip install "omnilingual-asr[data]"
```

```python
from datasets import load_dataset
from omnilingual_asr.models.inference.pipeline import ASRInferencePipeline

# Load dataset for a specific language (e.g., Ligurian)
omni_dataset = load_dataset("facebook/omnilingual-asr-corpus", "lij_Latn", split="train", streaming=True)
batch = next(omni_dataset.iter(5))

# Convert to pipeline input format
audio_data = [{"waveform": x["array"], "sample_rate": x["sampling_rate"]}
              for x in batch["audio"]]

# Run inference
pipeline = ASRInferencePipeline(model_card="omniASR_LLM_7B_v2")
transcriptions = pipeline.transcribe(audio_data, batch_size=2)

# Display results
for i, (transcription, original_text) in enumerate(zip(transcriptions, batch["raw_text"]), 1):
    print(f"\n Sample {i}:")
    print(f"   Ground Truth: {original_text}")
    print(f"   Predicted:    {transcription}")
```

## Model Architectures

| Model Name          | Features      | Parameters | Download Size (FP32) | Inference VRAM¹ | Real-Time Factor¹ (relative speed)² |
|---------------------|---------------|------------:|---------------:|---------------:|-----------:|
| [`omniASR_W2V_300M`](https://dl.fbaipublicfiles.com/mms/omniASR-W2V-300M.pt)      | SSL  | 317_390_592   | 1.2 GiB | | |
| [`omniASR_W2V_1B`](https://dl.fbaipublicfiles.com/mms/omniASR-W2V-1B.pt)          | SSL  | 965_514_752   | 3.6 GiB | | |
| [`omniASR_W2V_3B`](https://dl.fbaipublicfiles.com/mms/omniASR-W2V-3B.pt)          | SSL  | 3_064_124_672 | 12.0 GiB | | |
| [`omniASR_W2V_7B`](https://dl.fbaipublicfiles.com/mms/omniASR-W2V-7B.pt)          | SSL  | 6_488_487_168 | 25.0 GiB | | |
| [`omniASR_CTC_300M`](https://dl.fbaipublicfiles.com/mms/omniASR-CTC-300M.pt)      | ASR  | 325_494_996   | 1.3 GiB   | ~2 GiB  | 0.001 (96x) |
| [`omniASR_CTC_1B`](https://dl.fbaipublicfiles.com/mms/omniASR-CTC-1B.pt)          | ASR  | 975_065_300   | 3.7 GiB   | ~3 GiB  | 0.002 (48x) |
| [`omniASR_CTC_3B`](https://dl.fbaipublicfiles.com/mms/omniASR-CTC-3B.pt)          | ASR  | 3_080_423_636 | 12.0 GiB  | ~8 GiB  | 0.003 (32x) |
| [`omniASR_CTC_7B`](https://dl.fbaipublicfiles.com/mms/omniASR-CTC-7B.pt)          | ASR  | 6_504_786_132 | 25.0 GiB  | ~15 GiB | 0.006 (16x) |
| [`omniASR_CTC_300M_v2`](https://dl.fbaipublicfiles.com/mms/omniASR-CTC-300M-v2.pt)      | ASR  | 325_494_996   | 1.3 GiB   | ~2 GiB  | 0.001 (96x) |
| [`omniASR_CTC_1B_v2`](https://dl.fbaipublicfiles.com/mms/omniASR-CTC-1B-v2.pt)          | ASR  | 975_065_300   | 3.7 GiB   | ~3 GiB  | 0.002 (48x) |
| [`omniASR_CTC_3B_v2`](https://dl.fbaipublicfiles.com/mms/omniASR-CTC-3B-v2.pt)          | ASR  | 3_080_423_636 | 12.0 GiB  | ~8 GiB  | 0.003 (32x) |
| [`omniASR_CTC_7B_v2`](https://dl.fbaipublicfiles.com/mms/omniASR-CTC-7B-v2.pt)          | ASR  | 6_504_786_132 | 25.0 GiB  | ~15 GiB | 0.006 (16x) |
| [`omniASR_LLM_300M`](https://dl.fbaipublicfiles.com/mms/omniASR-LLM-300M.pt)      | ASR with optional language conditioning  | 1_627_603_584 | 6.1 GiB   | ~5 GiB  | 0.090 (~1x) |
| [`omniASR_LLM_1B`](https://dl.fbaipublicfiles.com/mms/omniASR-LLM-1B.pt)          | ASR with optional language conditioning  | 2_275_710_592 | 8.5 GiB   | ~6 GiB  | 0.091 (~1x) |
| [`omniASR_LLM_3B`](https://dl.fbaipublicfiles.com/mms/omniASR-LLM-3B.pt)          | ASR with optional language conditioning  | 4_376_679_040 | 17.0 GiB  | ~10 GiB | 0.093 (~1x) |
| [`omniASR_LLM_7B`](https://dl.fbaipublicfiles.com/mms/omniASR-LLM-7B.pt)          | ASR with optional language conditioning  | 7_801_041_536 | 30.0 GiB  | ~17 GiB | 0.092 (~1x) |
| [`omniASR_LLM_300M_v2`](https://dl.fbaipublicfiles.com/mms/omniASR-LLM-300M-v2.pt)      | ASR with optional language conditioning  | 1_627_603_584 | 6.1 GiB   | ~5 GiB  | 0.090 (~1x) |
| [`omniASR_LLM_1B_v2`](https://dl.fbaipublicfiles.com/mms/omniASR-LLM-1B-v2.pt)          | ASR with optional language conditioning  | 2_275_710_592 | 8.5 GiB   | ~6 GiB  | 0.091 (~1x) |
| [`omniASR_LLM_3B_v2`](https://dl.fbaipublicfiles.com/mms/omniASR-LLM-3B-v2.pt)          | ASR with optional language conditioning  | 4_376_679_040 | 17.0 GiB  | ~10 GiB | 0.093 (~1x) |
| [`omniASR_LLM_7B_v2`](https://dl.fbaipublicfiles.com/mms/omniASR-LLM-7B-v2.pt)          | ASR with optional language conditioning  | 7_801_041_536 | 30.0 GiB  | ~17 GiB | 0.092 (~1x) |
| [`omniASR_LLM_Unlimited_300M_v2`](https://dl.fbaipublicfiles.com/mms/omniASR-LLM-Unlimited-300M-v2.pt)      | omniASR_LLM_300M + unlimited audio length  | 1_627_603_584 | 6.1 GiB   | ~5 GiB | 0.092 (~1x) (0.206)³ |
| [`omniASR_LLM_Unlimited_1B_v2`](https://dl.fbaipublicfiles.com/mms/omniASR-LLM-Unlimited-1B-v2.pt)          | omniASR_LLM_1B + unlimited audio length  | 2_275_710_592 | 8.5 GiB   | ~6 GiB | 0.097 (~1x) (0.207)³ |
| [`omniASR_LLM_Unlimited_3B_v2`](https://dl.fbaipublicfiles.com/mms/omniASR-LLM-Unlimited-3B-v2.pt)          | omniASR_LLM_3B + unlimited audio length  | 4_376_679_040 | 17.0 GiB  | ~10 GiB | 0.095 (~1x) (0.208)³ |
| [`omniASR_LLM_Unlimited_7B_v2`](https://dl.fbaipublicfiles.com/mms/omniASR-LLM-Unlimited-7B-v2.pt)          | omniASR_LLM_7B + unlimited audio length  | 7_801_041_536 | 30.0 GiB  | ~17 GiB | 0.097 (~1x) (0.208)³ |
| [`omniASR_LLM_7B_ZS`](https://dl.fbaipublicfiles.com/mms/omniASR-LLM-7B-ZS.pt)    | Zero-Shot ASR | 7_810_900_608 | 30.0 GiB | ~20 GiB | 0.194 (~0.5x) |
| [`omniASR_tokenizer_v1`](https://dl.fbaipublicfiles.com/mms/omniASR_tokenizer.model) | Tokenizer for all non-v2 models except omniASR_LLM_7B | - | 100 KiB | - |
| [`omniASR_tokenizer_v1_variant7`](https://dl.fbaipublicfiles.com/mms/omniASR_tokenizer_v7.model) | Tokenizer for the omniASR_LLM_7B architecture | - | 100 KiB | - |
| [`omniASR_tokenizer_written_v2`](https://dl.fbaipublicfiles.com/mms/omniASR_tokenizer_written_v2.model) | Tokenizer for all v2 architectures | - | 100 KiB | - ||

¹ (batch=1, audio_len=30s, BF16, A100)

² Relative speed to `omniASR_LLM_7B`

³ (batch=1, audio_len=15min, BF16, A100)

### Model Download & Storage

- **Automatic Download**: Models are automatically downloaded on first use during training or inference
- **Storage Location**: Models are saved to [`~/.cache/fairseq2/assets/`](https://facebookresearch.github.io/fairseq2/stable/basics/assets.html#the-asset-store-system)

### Architecture Documentation

We provide a high-level model architecture overview in the model directory ([`src/omnilingual_asr/models`](/src/omnilingual_asr/models)), with individual configurations for each model family in the respective directories:

- **SSL Models**: [`src/omnilingual_asr/models/wav2vec2_ssl`](/src/omnilingual_asr/models/wav2vec2_ssl/)
- **CTC Models**: [`src/omnilingual_asr/models/wav2vec2_asr`](/src/omnilingual_asr/models/wav2vec2_asr/)
- **LLM Models**: [`src/omnilingual_asr/models/wav2vec2_llama`](/src/omnilingual_asr/models/wav2vec2_llama/)

## Training

To further finetune the released checkpoints on your own data, use our [data preparation guide](/workflows/dataprep/README.md) followed by the [finetuning recipe guide](/workflows/recipes/wav2vec2/asr/README.md).

## License

Omnilingual ASR code and models are released under the [Apache 2.0](./LICENSE).

## Citation

If you use the omnilingual ASR model suite in your research and wish to cite us, please use the following BibTeX entry!
```bibtex
@misc{omnilingualasrteam2025omnilingualasropensourcemultilingual,
      title={Omnilingual ASR: Open-Source Multilingual Speech Recognition for 1600+ Languages},
      author={Omnilingual ASR team and Gil Keren and Artyom Kozhevnikov and Yen Meng and Christophe Ropers and Matthew Setzler and Skyler Wang and Ife Adebara and Michael Auli and Can Balioglu and Kevin Chan and Chierh Cheng and Joe Chuang and Caley Droof and Mark Duppenthaler and Paul-Ambroise Duquenne and Alexander Erben and Cynthia Gao and Gabriel Mejia Gonzalez and Kehan Lyu and Sagar Miglani and Vineel Pratap and Kaushik Ram Sadagopan and Safiyyah Saleem and Arina Turkatenko and Albert Ventayol-Boada and Zheng-Xin Yong and Yu-An Chung and Jean Maillard and Rashel Moritz and Alexandre Mourachko and Mary Williamson and Shireen Yates},
      year={2025},
      eprint={2511.09690},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2511.09690},
}
```


**Accessing inference pipeline README**


sed -n '1,200p' external/omnilingual-asr/src/omnilingual_asr/models/inference/README.md


Output:
Exit code: 0
Wall time: 0 seconds
Output:
# Wav2Vec2 Inference Pipeline

Quick start guide for transcribing audio with our multilingual ASR models.

---

## 1. Quick Start

```python
from omnilingual_asr.models.inference.pipeline import ASRInferencePipeline
pipeline = ASRInferencePipeline(model_card="omniASR_CTC_1B_v2")
transcriptions = pipeline.transcribe(["/path/to/audio1.flac"], batch_size=1)
print(transcriptions[0])
```

---

## 2. Basic Usage

### 2.1 Audio Input Formats

Our pipeline accepts multiple input formats (`AudioInput`):

1. **File paths**: `["/path/to/audio.wav", "/path/to/audio.flac"]`
2. **Encoded audio binary data in memory**: `[open("audio.wav", "rb").read()]` or `[numpy_audio_array]` (int8)
3. **Decoded audio dicts**: `[{"waveform": tensor, "sample_rate": 16000}]`

The audio data is optionally decoded (`.wav/.flac`), resampled to 16kHz, converted to a mono-channel, and normalized before being ingested by the model.

> [!TIP]
> The models were mostly trained on audio durations of 30 seconds or less. Therefore, we do not recommend transcribing sequences longer than 30 seconds in a single sample.
> **⚠ Important:** Currently only audio files shorter than 40 seconds are accepted for inference!

> [!TIP]
> We recommend keeping this preprocessing pipeline similar when integrating the model in downstream applications.

### 2.2 Batch Processing

```python
from omnilingual_asr.models.inference.pipeline import ASRInferencePipeline

pipeline = ASRInferencePipeline(model_card="omniASR_CTC_1B_v2")

audio_files = ["/path/to/audio1.flac", "/path/to/audio2.wav"]
transcriptions = pipeline.transcribe(audio_files, batch_size=2)

for file, trans in zip(audio_files, transcriptions):
    print(f"{file}: {trans}")
```

---

## 3. Model Types

### 3.1 Parallel Generation with CTC Models

The `omniASR_CTC_{300M,1B,3B,7B}_v2` models are most useful for their parallel generation capabilities, resulting in faster throughput. Note that they don't support language conditioning or context examples.

```python
from omnilingual_asr.models.inference.pipeline import ASRInferencePipeline

pipeline = ASRInferencePipeline(model_card="omniASR_CTC_3B_v2", device=None)

audio_files = ["/path/to/audio1.flac", "/path/to/audio2.wav"]
transcriptions = pipeline.transcribe(audio_files, batch_size=2)

for file_path, text in zip(audio_files, transcriptions):
    print(f"CTC transcription - {file_path}: {text}")
```

### 3.2 Autoregressive Generation with Language-conditioned LLM Models

The `omniASR_LLM_{300M,1B,3B,7B}_v2` and `omniASR_LLM_Unlimited_{300M,1B,3B,7B}_v2` models take an optional language code as argument to guide transcription towards the target language and script.
The language codes can be found in [lang_ids.py](/src/omnilingual_asr/models/wav2vec2_llama/lang_ids.py) and the language to language-id mapping is described in [our paper (Appendix A)](https://ai.meta.com/research/publications/omnilingual-asr-open-source-multilingual-speech-recognition-for-1600-languages/).

> [!TIP]
> We recommend providing the language code when possible as it helps with transcription quality.

```python
from omnilingual_asr.models.inference.pipeline import ASRInferencePipeline

pipeline = Wav2Vec2InferencePipeline(model_card="omniASR_LLM_Unlimited_1B_v2")

audio_files = ["/path/to/russian_audio.wav", "/path/to/english_audio.flac", "/path/to/german_audio.wav"]

transcriptions = pipeline.transcribe(audio_files, lang=["rus_Cyrl", "eng_Latn", "deu_Latn"], batch_size=3)
```

### 3.3 Zero-Shot Generation

The `omniASR_LLM_7B_ZS` model is trained to accept in-context audio/transcription pairs to perform zero-shot inference on unseen languages via in-context learning. You can provide anywhere **from one to ten examples**, with more examples generally leading to better performance. Internally, the model uses exactly ten context slots: if fewer than ten examples are provided, samples are duplicated sequentially to fill all slots (and cropped to ten if more are provided).

> [!TIP]
> Similar to the other models, the zero-shot model has been trained with context samples of up to 30 seconds length and will likely perform suboptimally given longer samples (maximum audio length is 60 seconds).

```python
from omnilingual_asr.models.inference.pipeline import (
    ASRInferencePipeline,
    ContextExample
)

pipeline = ASRInferencePipeline(model_card="omniASR_LLM_7B_ZS")

context_examples = [
    ContextExample("/path/to/context_audio1.wav", "Hello world"),
    ContextExample("/path/to/context_audio2.wav", "How are you today"),
    ContextExample("/path/to/context_audio3.flac", "Nice to meet you")
]

transcriptions = pipeline.transcribe_with_context(
    ["/path/to/test_audio.wav"],
    context_examples=[context_examples],
    batch_size=1
)

print(f"Transcription: {transcriptions[0]}")
```

---

## 4. Developer Reference

### 4.1 Parquet Binary Audio Data Input
Our training parquet datasets follow a special format conversion (see [data preparation guide](/workflows/dataprep/README.md#21-schema) for schema details). We can use them in the inference pipeline as follows:

```python
import pyarrow.parquet as pq
from omnilingual_asr.models.inference.pipeline import ASRInferencePipeline

ds = pq.ParquetDataset("/path/to/dataset/")
batch_data = ds._dataset.head(10).to_pandas()  # taking only few first samples
audio_bytes = batch_data["audio_bytes"].tolist()

pipeline = ASRInferencePipeline(model_card="omniASR_LLM_1B_v2")
transcriptions = pipeline.transcribe(audio_bytes, batch_size=4)

for i, text in enumerate(transcriptions):
    print(f"Sample {i+1}: {text}")
```

### 4.2 HuggingFace Datasets

```python
from datasets import load_dataset
from omnilingual_asr.models.inference.pipeline import ASRInferencePipeline

# Load dataset
omni_dataset = load_dataset("facebook/omnilingual-asr-corpus", "lij_Latn", split="train", streaming=True)
batch = next(omni_dataset.iter(5))

# Renaming columns to match the pipeline's expected input
audio_data = [{"waveform": x["array"], "sample_rate": x["sampling_rate"]}
              for x in batch["audio"]]

pipeline = ASRInferencePipeline(model_card="omniASR_LLM_1B_v2")
transcriptions = pipeline.transcribe(audio_data, batch_size=2)

for i, text in enumerate(transcriptions):
    print(f"Sample {i+1}: {text}")
```

### 4.3 Model Input Format Specification

This section contains the description of the `Wav2Vec2LlamaModel` input batch format. It is primarily for users who aim to integrate the model in their own applications while using the fairseq2 `Seq2SeqBatch` interface.

> [!WARNING]
> The behavior of `.forward()` can vary depending on the structure of the batch. In particular, the presence of extra fields in `batch.example` may cause the model to interpret the batch differently.

1. **Basic ASR**
```
  batch = Seq2SeqBatch(
      source_seqs=audio_tensor,           # [BS, T_audio, D_audio] - target audio
      source_seq_lens=audio_lengths,      # [BS] - actual audio lengths
      target_seqs=text_tensor,            # [BS, T_text] - target text tokens
      target_seq_lens=text_lengths,       # [BS] - actual text lengths
      example={}                          # Empty dict - no special fields needed
  )
```

2. **Language-Aware ASR**
```
  batch = Seq2SeqBatch(
      source_seqs=audio_tensor,           # [BS, T_audio, D_audio] - target audio
      source_seq_lens=audio_lengths,      # [BS] - actual audio lengths
      target_seqs=text_tensor,            # [BS, T_text] - target text tokens
      target_seq_lens=text_lengths,       # [BS] - actual text lengths
      example={
          "lang": ['mxs_Latn', ...]  # [BS] - language codes per sample
      }
  )
```
Our batch has some `lang_tokens` as part of the `batch.example` parameter, but they are only used for S2TT (kept for reference), not for LID conditioning, and can be ignored. The `lang` parameter should only consist of strings from [lang_ids.py](/src/omnilingual_asr/models/wav2vec2_llama/lang_ids.py).

3. **Zero-Shot Context**
```
  batch = Seq2SeqBatch(
      source_seqs=audio_tensor,           # [BS, T_audio, D_audio] - target audio
      source_seq_lens=audio_lengths,      # [BS] - actual audio lengths
      target_seqs=text_tensor,            # [BS, T_text] - target text tokens


Summary: auto


**Selecting largest model and confirming language mapping**

I'm identifying the largest model as the 7B LLM v2 variant, choosing the standard (not unlimited) since audio lengths are short. Next, I'm preparing to map ISO3 languages to omnilingual codes with scripts (e.g., asm_Beng) and will verify these mappings against the repo's supported languages by checking `lang_ids.py`.


python3 - <<'PY'
from omnilingual_asr.models.wav2vec2_llama.lang_ids import supported_langs
# Filter for our languages
langs = ['eng_Latn','hin_Deva','ben_Beng','guj_Gujr','kan_Knda','mal_Mlym','mar_Deva','ory_Orya','pan_Guru','tam_Taml','tel_Telu','asm_Beng']
missing = [l for l in langs if l not in supported_langs]
print('missing', missing)
print('sample similar for ory', [l for l in supported_langs if l.startswith('ory_')][:10])
print('sample for asm', [l for l in supported_langs if l.startswith('asm_')][:10])
PY


Output:
Exit code: 1
Wall time: 0.1 seconds
Output:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'omnilingual_asr'


**Testing local import of supported languages**

I'll attempt importing the supported languages directly from the local source by adjusting PYTHONPATH or sys.path to avoid installing the package first. This will verify access to the needed data.


python3 - <<'PY'
import sys
from pathlib import Path
root = Path('external/omnilingual-asr/src').resolve()
sys.path.insert(0, str(root))
from omnilingual_asr.models.wav2vec2_llama.lang_ids import supported_langs
langs = ['eng_Latn','hin_Deva','ben_Beng','guj_Gujr','kan_Knda','mal_Mlym','mar_Deva','ory_Orya','pan_Guru','tam_Taml','tel_Telu','asm_Beng']
missing = [l for l in langs if l not in supported_langs]
print('missing', missing)
print('ory variants', [l for l in supported_langs if l.startswith('ory_')])
print('asm variants', [l for l in supported_langs if l.startswith('asm_')])
PY


Output:
Exit code: 1
Wall time: 0.1 seconds
Output:
Traceback (most recent call last):
  File "<stdin>", line 5, in <module>
  File "/home/ubuntu/maya-transcribe/external/omnilingual-asr/src/omnilingual_asr/__init__.py", line 9, in <module>
    from fairseq2.composition.assets import register_package_assets
ModuleNotFoundError: No module named 'fairseq2'


**Avoiding heavy dependency by direct module import**

I'm planning to import the lang_ids module directly via its file path using importlib to bypass the package __init__ that requires fairseq2. This will let me access lang_ids without needing the heavy fairseq2 dependency.


python3 - <<'PY'
import importlib.util
from pathlib import Path
lang_path = Path('external/omnilingual-asr/src/omnilingual_asr/models/wav2vec2_llama/lang_ids.py').resolve()
spec = importlib.util.spec_from_file_location('lang_ids', lang_path)
mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(mod)
supported_langs = mod.supported_langs
langs = ['eng_Latn','hin_Deva','ben_Beng','guj_Gujr','kan_Knda','mal_Mlym','mar_Deva','ory_Orya','pan_Guru','tam_Taml','tel_Telu','asm_Beng']
missing = [l for l in langs if l not in supported_langs]
print('missing', missing)
print('ory variants', [l for l in supported_langs if l.startswith('ory_')])
print('asm variants', [l for l in supported_langs if l.startswith('asm_')])
PY


Output:
Exit code: 0
Wall time: 0 seconds
Output:
missing []
ory variants ['ory_Orya']
asm variants ['asm_Beng']


**Planning omnilingual ASR setup**

Considering pip installing omnilingual-asr to handle dependencies including fairseq2, then using transformers' SeamlessM4Tv2ForSpeechSeq2Seq with AutoProcessor for running seamless-m4t-v2-large, setting generate parameters to transcribe with the correct target language code. I'll verify language code mappings from the processor tokenizer next.


**Deciding ASR evaluation strategy**

I'm weighing writing separate scripts versus integrating new ASR backends into the pipeline, favoring integration for uniform output and LID/QC handling while ensuring results.jsonl includes consistent segment_id, relpath, final text, and route derived from audio path language. I'll verify segment_id generation consistency by inspecting audio filenames and hashes next.


ls data/bench/maya_hf_v2_100/audio/eng | head -n 3


Output:
Exit code: 0
Wall time: 0 seconds
Output:
fleurs__en_us__test__0__1904.wav
fleurs__en_us__test__10__1776.wav
fleurs__en_us__test__111__1889.wav


**Verifying segment_id format in reference data**

I'm checking if the reference segment IDs in the benchmark include hashes or if they match the original audio file names without hashes.


python3 - <<'PY'
import json
from pathlib import Path
refs = Path('data/bench/maya_hf_v2_100/refs.jsonl')
for line in refs.read_text().splitlines():
    row = json.loads(line)
    if row['lang']=='eng':
        print(row['segment_id'])
        break
PY


Output:
Exit code: 0
Wall time: 0 seconds
Output:
fleurs__en_us__test__640__1867-3cac98b35b46daca


**Confirming segment ID hashing consistency**

The pipeline and reference segment IDs both append the same hash based on the audio file's relative path, ensuring they align even though raw audio filenames lack the hash suffix.


**Planning separate scripts for new ASR models**

Decided to implement standalone scripts using the existing ASRInferencePipeline for OmniASR and HuggingFace transformers for M4T to minimize pipeline changes while ensuring matching output formats and language routing. Next, I'll create language mappings, handle batching and dependencies, and produce JSONL results compatible with evaluation.


python3 - <<'PY'
try:
    import omnilingual_asr
    print('omnilingual-asr installed', getattr(omnilingual_asr, '__version__', 'unknown'))
except Exception as e:
    print('not installed', type(e).__name__)
PY


Output:
Exit code: 0
Wall time: 0 seconds
Output:
not installed ModuleNotFoundError


**Installing omnilingual-asr and checking dependencies**


python3 -m pip install --upgrade omnilingual-asr