Model reference · open weights
powsm_ctc is an open-weight audio or speech model from espnet. powsm_ctc (BF16) weighs 1.7 GB; the smallest configuration that runs it is RTX 3060 12 GB.
Summary of the espnet/powsm_ctc model card, 2026-10-01
What it is
| Released by | espnet |
|---|---|
| Released | 2026-01-21 |
| VRAM | 1.7 GB for the weights |
What it runs on
| Card | One stream | Memory |
|---|---|---|
| RTX 3060 12 GB | fits | 11.6 GB |
| RTX 4060 Ti 16 GB | fits | 15.4 GB |
| RTX 3090 24 GB | fits | 23.4 GB |
| RTX 4090 24 GB | fits | 23.4 GB |
| RTX 5090 32 GB | fits | 31.0 GB |
| L40S 48 GB | fits | 44.0 GB |
| A100 80 GB | fits | 78.2 GB |
| H100 80 GB | fits | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | fits | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | fits | 107 GB |
| H200 141 GB | fits | 138 GB |
| B200 180 GB | fits | 176 GB |
From the model card
POWSM-CTC is a variant of POWSM, the first phonetic foundation model that can perform four phone-related tasks. Its multi-task encoder-CTC structure is based on OWSM-CTC, and trained on IPAPack++, the same dataset as POWSM.
This model is proposed together with our paper PRiSM, the first open-source benchmark for phone recognition systems. Its decoding is much faster than encoder-decoder models, with similar or enhanced PR performance on unseen domain.
[!TIP] Check out POWSM-CTC's predecessor: 🐁POWSM
To use the pre-trained model, please install espnet and espnet_model_zoo. The requirements are:
torch
espnet
espnet_model_zoo
The recipe can be found in ESPnet: https://github.com/espnet/espnet/tree/master/egs2/powsm_ctc/s2t1
Our models are trained on 16kHz audio with a fixed duration of 20s. When using the pre-trained model, please ensure the input speech is 16kHz and pad or truncate it to 20s. To distinguish phone entries from BPE tokens that share the same Unicode, we enclose every phone in slashes and treat them as special tokens. For example, /pʰɔsəm/ would be tokenized as /pʰ//ɔ//s//ə//m/.
from espnet2.bin.s2t_inference_ctc import Speech2TextGreedySearch
s2t = Speech2TextGreedySearch.from_pretrained(
"espnet/powsm_ctc",
device="cuda",
use_flash_attn=True,
lang_sym='',
task_sym='',
)
res = s2t.batch_decode(
["audio1.wav", "audio2.wav"], # a list of audios (path or 1-D array/tensor)
batch_size=16,
) # res is a list of str
@article{prism,
title={PRiSM: Benchmarking Phone Realization in Speech Models},
author={Shikhar Bharadwaj and Chin-Jou Li and Yoonjae Kim and Kwanghee Choi and Eunjung Yeo and Ryan Soh-Eun Shim and Hanyu Zhou and Brendon Boldt and Karen Rosero Jacome and Kalvin Chang and Darsh Agrawal and Keer Xu and Chao-Han Huck Yang and Jian Zhu and Shinji Watanabe and David R. Mortensen},
year={2026},
eprint={2601.14046},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2601.14046},
}Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.
How it works