Skip to main content

No project description provided

Project description

Introduction

An ASR server framework in Python, aiming to support both streaming and non-streaming recognition.

Note: Only non-streaming recognition is implemented at present. We will add streaming recognition later.

CPU-bound tasks, such as neural network computation, are implemented in C++; while IO-bound tasks, such as socket communication, are implemented in Python.

Caution: We assume the model is trained using pruned stateless RNN-T from icefall and it is from a directory like pruned_transducer_statelessX where X >=2.

Installation

First, you have to install PyTorch and torchaudio. PyTorch 1.10 is known to work. Other versions may also work.

Second, clone this repository

git clone https://github.com/k2-fsa/sherpa
cd sherpa
pip install -r ./requirements.txt

Third, install the C++ extension of sherpa. You can use one of the following methods.

Option 1: Use pip

pip install --verbose k2-sherpa

or

pip install --verbose git+https://github.com/k2-fsa/shera

Option 2: Build from source with setup.py

python3 setup.py install

Option 3: Build from source with cmake

mkdir build
cd build
cmake ..
make -j
export PYTHONPATH=$PWD/../sherpa/python:$PWD/lib:$PYTHONPATH

Usage

First, check that sherpa has been installed successfully:

python3 -c "import sherpa; print(sherpa.__version__)"

It should print the version of sherpa.

Start the server

To start the server, you need to first generate two files:

  • (1) The torch script model file. You can use export.py --jit=1 in pruned_transducer_statelessX from icefall.

  • (2) The BPE model file. You can find it in data/lang_bpe_XXX/bpe.model in icefall, where XXX is the number of BPE tokens used in the training.

With the above two files ready, you can start the server with the following command:

sherpa/bin/offline_server.py \
  --port 6006 \
  --num-device 0 \
  --max-batch-size 10 \
  --max-wait-ms 5 \
  --feature-extractor-pool-size 5 \
  --nn-pool-size 1 \
  --nn-model-filename ./path/to/exp/cpu_jit.pt \
  --bpe-model-filename ./path/to/data/lang_bpe_500/bpe.model &

You can use ./sherpa/bin/offline_server.py --help to view the help message.

We provide a pretrained model using the LibriSpeech dataset at https://huggingface.co/csukuangfj/icefall-asr-librispeech-pruned-transducer-stateless3-2022-05-13

The following shows how to use the above pretrained model to start the server.

git lfs install
git clone https://huggingface.co/csukuangfj/icefall-asr-librispeech-pruned-transducer-stateless3-2022-05-13

sherpa/bin/offline_server.py \
  --port 6006 \
  --num-device 0 \
  --max-batch-size 10 \
  --max-wait-ms 5 \
  --feature-extractor-pool-size 5 \
  --nn-pool-size 1 \
  --nn-model-filename ./icefall-asr-librispeech-pruned-transducer-stateless3-2022-05-13/exp/cpu_jit.pt \
  --bpe-model-filename ./icefall-asr-librispeech-pruned-transducer-stateless3-2022-05-13/data/lang_bpe_500/bpe.model

Start the client

After starting the server, you can use the following command to start the client:

./sherpa/bin/offline_client.py \
    --server-addr localhost \
    --server-port 6006 \
    /path/to/foo.wav \
    /path/to/bar.wav

You can use ./sherpa/bin/offline_client.py --help to view the usage message.

The following shows how to use the client to send some test waves to the server for recognition.

sherpa/bin/offline_client.py \
  --server-addr localhost \
  --server-port 6006 \
  icefall-asr-librispeech-pruned-transducer-stateless3-2022-05-13//test_wavs/1089-134686-0001.wav \
  icefall-asr-librispeech-pruned-transducer-stateless3-2022-05-13//test_wavs/1221-135766-0001.wav \
  icefall-asr-librispeech-pruned-transducer-stateless3-2022-05-13//test_wavs/1221-135766-0002.wav

RTF test

We provide a demo ./sherpa/bin/decode_manifest.py to decode the test-clean dataset from the LibriSpeech corpus.

It creates 50 connections to the server using websockets and sends audio files to the server for recognition.

At the end, it will display the RTF and the WER.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

k2-sherpa-0.2.tar.gz (36.2 kB view details)

Uploaded Source

File details

Details for the file k2-sherpa-0.2.tar.gz.

File metadata

  • Download URL: k2-sherpa-0.2.tar.gz
  • Upload date:
  • Size: 36.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.8.12

File hashes

Hashes for k2-sherpa-0.2.tar.gz
Algorithm Hash digest
SHA256 0703384c38299a1a629c3771fd47250e43508d4bf7181bfba889a114097fccd8
MD5 802ab5d1c5d80ea380e5f839144275c9
BLAKE2b-256 d9f123e74153fe9ea7503a949b42df40781556c2b68d84c4595aa15710b6d09c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page