#6426·espnet

`espnet/powsm_ctc` cannot be loaded via `Speech2TextGreedySearch.from_pretrained(...)` because published `meta.yaml` is invalid

Author: jhkonanCreated Apr 20, 2026Updated May 4, 2026
LabelsBugBugfix

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:

python
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:

yaml
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.yaml

The extra indentation on s2t_model_file makes the file fail to parse.

Repro

Minimal repro:

python
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 3

Expected 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 espnet from 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:

  1. Republish espnet/powsm_ctc with a valid meta.yaml
  2. Verify the expected espnet_model_zoo metadata format for this model
  3. 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