`espnet/powsm_ctc` cannot be loaded via `Speech2TextGreedySearch.from_pretrained(...)` because published `meta.yaml` is invalid
Hi, thanks for releasing powsm_ctc.
I’m seeing a reproducible packaging/loading issue with the public espnet/powsm_ctc model that prevents the documented from_pretrained(...) path from working on current upstream ESPnet.
Summary
The public model card suggests the following usage pattern:
from espnet2.bin.s2t_inference_ctc import Speech2TextGreedySearch
s2t = Speech2TextGreedySearch.from_pretrained(
"espnet/powsm_ctc",
device="cpu",
lang_sym="<unk>",
task_sym="<pr>",
)In my environment, this fails before model construction because the published meta.yaml in the HF snapshot is not valid YAML.
The current snapshot file looks like this:
espnet: '202604'
s2t_model_file: exp/s2t_train_conv2d_size768_e9_d9_mel80_raw_bpe40000/valid.total_count.ave_5best.till70epoch.pth
python: 3.12.8
torch: 2.9.1+cu128
yaml_files:
s2t_train_config: exp/s2t_train_conv2d_size768_e9_d9_mel80_raw_bpe40000/config.yamlThe extra indentation on s2t_model_file makes the file fail to parse.
Repro
Minimal repro:
from espnet2.bin.s2t_inference_ctc import Speech2TextGreedySearch
Speech2TextGreedySearch.from_pretrained(
"espnet/powsm_ctc",
device="cpu",
dtype="float32",
lang_sym="<unk>",
task_sym="<pr>",
)Actual Result
from_pretrained(...) fails with a YAML parse error from the downloaded snapshot metadata:
while parsing a block mapping
in ".../models--espnet--powsm_ctc/snapshots/4b46596f95f2d5279c82312306aba77917b53e8d/meta.yaml", line 1, column 1
expected <block end>, but found '<block mapping start>'
in ".../models--espnet--powsm_ctc/snapshots/4b46596f95f2d5279c82312306aba77917b53e8d/meta.yaml", line 2, column 3Expected Result
The documented Speech2TextGreedySearch.from_pretrained("espnet/powsm_ctc", ...) path should load successfully without requiring manual snapshot repair.
Environment
- CPU Docker environment
- Python 3.11 slim base image
- current upstream
espnetfrom GitHub torch==2.6.0,torchaudio==2.6.0,torchvision==0.21.0- PRiSM benchmark environment for validation
Additional Context
I was able to work around this by bypassing from_pretrained(...), downloading the snapshot manually, patching config paths, and instantiating Speech2TextGreedySearch(...) directly from config.yaml + valid.total_count*.pth.
However, the fact that the official public loader path fails means the released artifact is currently not usable as documented.
I also reran bounded PRiSM-scored TIMIT slices after switching to current upstream ESPnet. The benchmark still had to use the patched snapshot path rather than the official from_pretrained(...) path, so I could not validate the public release cleanly through the documented interface.
For reference, after patching around the loader issue:
- 1-file PRiSM-scored TIMIT slice:
PFER = 59.9583 - 4-file PRiSM-scored TIMIT slice:
PFER = 68.8542
These numbers were unchanged after switching to current upstream ESPnet, because the run still fell back to the patched snapshot path (decoder_mode = "snapshot_patched"). I am not claiming this alone proves a model-quality issue, only that fixing the code/runtime side did not change the observed result in my setup.
Suggested Fix
Likely one of:
- Republish
espnet/powsm_ctcwith a validmeta.yaml - Verify the expected
espnet_model_zoometadata format for this model - Confirm whether the intended public loading path is still
Speech2TextGreedySearch.from_pretrained("espnet/powsm_ctc", ...)
If helpful, I can also share the exact Docker repro I used.
Attachments: meta.yaml
Source: espnet/espnet