This repository has been archived on 2025-08-26. You can view files and clone it, but cannot push or open issues or pull requests.
Files
enginex-mr_series-sherpa-onnx/flutter-examples/streaming_asr/README.md

126 lines
4.0 KiB
Markdown

# Real-time speech recognition
This APP supports the following platforms:
- Windows
- macOS
- Android
- iOS
Note that it does not support Linux since we are using
the package [record](https://pub.dev/packages/record), which does not
support streaming recording on Linux.
If you can find a recording package
that works on Linux, please let us know and we will update this app to support Linux.
See also <https://github.com/Jason-chen-coder/Flutter-EasySpeechRecognition>
## Getting Started
Remember to use the following steps to download a model. Otherwise, you would
get errors after you start and run the app.
### 1. Select a streaming model
Please visit <https://github.com/k2-fsa/sherpa-onnx/releases/tag/asr-models>
to download a streaming ASR model.
You can find introductions about each streaming model at
<https://k2-fsa.github.io/sherpa/onnx/pretrained_models/index.html>
Note: `Streaming` is the same as `Online` in this context.
### 2. Let the code know which model you are using
We have pre-configured some streaming models in the following file
<https://github.com/k2-fsa/sherpa-onnx/blob/master/flutter-examples/streaming_asr/lib/online_model.dart>
If you select a model that is not in the above file, please add it to the above file
by yourself by following how existing models are added.
Then you need to update
<https://github.com/k2-fsa/sherpa-onnx/blob/master/flutter-examples/streaming_asr/lib/streaming_asr.dart#L16>
```
final type = 0;
```
Please change ``type`` accordingly.
You also need to change [./pubspec.yaml](./pubspec.yaml) so that your APP knows where to find it.
Please see the example below for how to do that.
### 3. Place your downloaded model inside the directory assets
The downloaded model has to be placed in the [assets](./assets) directory.
**HINT**: Please delete files that are not needed by the code. Otherwise, you put
unnecessary files in your APP and it will significantly increase the size of your APP.
## Example
Suppose you have selected the following model
<https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20.tar.bz2>
Please use the following steps to make it available in your APP.
- 1. Change [online_model.dart](./lib/online_model.dart)
This model is already in the file and its type is `0`, so there is no need to change this file.
- 2. Change [streaming_asr.dart](./lib/streaming_asr.dart)
The default value for `type` is 0 and our model has also a type of `0`, so there is no need to change this file.
- 3. Change [pubspec.yaml](./pubspec.yaml)
At the end of [pubspec.yaml](./pubspec.yaml), please change it exactly like below:
```
assets:
- assets/
- assets/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/
```
- 4. Download the model to the [./assets](./assets) directory.
```
cd assets
wget https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20.tar.bz2
tar xvf sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20.tar.bz2
# Remeber to remove unused files.
rm -rf sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/test_wavs
rm sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/README.md
rm sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/bpe*
rm sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/encoder-epoch-99-avg-1.onnx
rm sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/decoder-epoch-99-avg-1.int8.onnx
rm sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/joiner-epoch-99-avg-1.int8.onnx
```
Your [assets](./assets) directory should look like below at the end.
```
assets/
└── sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20
├── decoder-epoch-99-avg-1.onnx
├── encoder-epoch-99-avg-1.int8.onnx
├── joiner-epoch-99-avg-1.onnx
└── tokens.txt
1 directory, 4 files
```
- 5. Run it!
For instance
- `flutter run -d macos` for macOS.
- `flutter run -d windows` for windows.