Spaces:
Running on Zero
Download README.md from espnet/owsm-ctc-v4: direct link, hf CLI and curl.
- Browser
- Download file 3.25 kB
-
https://huggingface.co/spaces/espnet/owsm-ctc-v4/resolve/main/README.md
- Command line
-
hf download hf://spaces/espnet/owsm-ctc-v4/README.md
-
curl -L -o README.md https://huggingface.co/spaces/espnet/owsm-ctc-v4/resolve/main/README.md
A newer version of the Gradio SDK is available: 6.30.0
title: OWSM-CTC v4
emoji: 🎙️
colorFrom: blue
colorTo: green
sdk: gradio
python_version: '3.12'
sdk_version: 6.27.0
app_file: app.py
pinned: false
license: apache-2.0
short_description: 151 languages in, 25 translation targets out, fast
tags:
- espnet
- owsm
- automatic-speech-recognition
- speech-translation
- language-identification
models:
- espnet/owsm_ctc_v4_1B
OWSM-CTC v4
The source of espnet/owsm-ctc-v4,
one of two OWSM v4 demos kept in this repository. Both offer the same tasks -
speech recognition, any-to-any speech translation, language identification and
long-form decoding - so the two models can be compared on the same audio:
| this demo | espnet/owsm-v4 |
|
|---|---|---|
| model | owsm_ctc_v4_1B, encoder-only |
owsm_v4_medium_1B, encoder-decoder |
| decoding | one encoder pass per 30 s window, no beam search | beam search |
| text prompt | not supported by OWSM-CTC | supported |
| source | this directory | egs2/owsm_v4/s2t1/demo |
The language menu and the translation targets are read from the checkpoint, so a model covering more languages needs no edit here.
The hosted demo takes audio of up to two minutes and asks ZeroGPU for a matching slice of GPU time; the model itself has no such limit, so run the app yourself for longer recordings.
The card pins python_version: "3.12". espnet requires 3.12 or 3.13, and a
Space image with an older interpreter installs no espnet at all - pip reports
"No matching distribution found" and the build fails.
Running and publishing
pip install -r requirements.txt gradio
python app.py # http://127.0.0.1:7860
DEVICE decides where the models run and takes precedence over everything
else, so DEVICE=cpu is a local CPU test even on a machine with a GPU. With
DEVICE unset, the choice is CUDA when the runtime is ZeroGPU
(SPACES_ZERO_GPU, the marker Hugging Face sets — asking
torch.cuda.is_available() there answers False, because the GPU is attached
only while a @spaces.GPU function runs) or when torch reports a GPU, and CPU
otherwise.
To publish, from the ESPnet checkout:
hf auth login
hf upload espnet/owsm-ctc-v4 egs2/owsm_ctc_v4/s2t1/demo . --repo-type space
Not before the release named in requirements.txt. A Space installs
espnet from PyPI, so an app that calls something only master has is a Space
that builds and then fails to start. This app decodes with best_path() and
the decode_long() that takes a path and a batch size, which arrived after
202610 - hence espnet>=202610.post1, which pip will refuse until that
release exists. Uploading this directory before then replaces a working Space with a
broken one, which is exactly what happened on 2026-09-20.
Citation
@inproceedings{owsm-ctc,
title={{OWSM-CTC}: An Open Encoder-Only Speech Foundation Model for Speech
Recognition, Translation, and Language Identification},
author={Yifan Peng and Yui Sudo and Muhammad Shakeel and Shinji Watanabe},
booktitle={Proc. ACL},
year={2024}
}