Powerful and Extensible WFST Framework for RNN-Transducer Losses

Aleksandr Laptev, Vladimir Bataev, Igor Gitman, Boris Ginsburg
3/18/2023
eess.AScs.AIcs.CL

No official code found. Best implementation: NVIDIA-NeMo/NeMo (17,831 stars, Apache-2.0, last commit 2026-05-02).

Abstract

This paper presents a framework based on Weighted Finite-State Transducers (WFST) to simplify the development of modifications for RNN-Transducer (RNN-T) loss. Existing implementations of RNN-T use CUDA-related code, which is hard to extend and debug. WFSTs are easy to construct and extend, and allow debugging through visualization. We introduce two WFST-powered RNN-T implementations: (1) "Compose-Transducer", based on a composition of the WFST graphs from acoustic and textual schema -- computationally competitive and easy to modify; (2) "Grid-Transducer", which constructs the lattice directly for further computations -- most compact, and computationally efficient. We illustrate the ease of extensibility through introduction of a new W-Transducer loss -- the adaptation of the Connectionist Temporal Classification with Wild Cards. W-Transducer (W-RNNT) consistently outperforms the standard RNN-T in a weakly-supervised data setup with missing parts of transcriptions at the beginning and end of utterances. All RNN-T losses are implemented with the k2 framework and are available in the NeMo toolkit.

View on arXivView PDF

Code Implementations(1)

NVIDIA-NeMo/NeMoCommunity100%
Apache-2.0

A scalable generative AI framework built for researchers and developers working on Large Language Models, Multimodal, and Speech AI (Automatic Speech Recognition and Text-to-Speech)

17,8313,521C++, CSSAug 5, 20195 months agoApache-2.0
asrdeeplearninggenerative-aimachine-translationneural-networks+5 more

Similar Papers

Cite this paper

@article{laptev2023powerful,
  title  = {Powerful and Extensible WFST Framework for RNN-Transducer Losses},
  author = {Aleksandr Laptev and Vladimir Bataev and Igor Gitman and Boris Ginsburg},
  year   = {2023},
  eprint = {2303.10384},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2303.10384v1}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2303.10384.svg)](https://codeofpaper.com/paper/2303.10384)

Discussion