Files
Leonard Li 4999dc7632 Raise real exceptions instead of strings in the runtime Python bindings
`raise "some message"` is invalid in Python 3 — a str is not an exception — so
the interpreter discards the message and raises

    TypeError: exceptions must derive from BaseException

instead. Paired with a bare `except:`, the original cause is lost too, and the
user is told to install something they may already have.

Concretely: funasr was installed, but importing it failed on a missing
torchaudio. The message said 'please install funasr', the traceback said
TypeError, and the actual ModuleNotFoundError was nowhere to be seen.

This converts all 30 occurrences under runtime/python to real exceptions:

  - guarded imports        -> except ImportError as e: raise ImportError(...) from e
  - everything else        -> except Exception as e:  raise RuntimeError(...) from e

`from e` keeps the original traceback, so a missing transitive dependency stays
visible. Narrowing the bare `except:` also stops unrelated failures from being
reported as a missing package — the model_dir branch in particular fired for any
failure, so a mistyped path also surfaced as TypeError.

Messages are unchanged. No behaviour changes beyond the exception type.
2026-08-22 12:35:50 -04:00
..
2023-11-07 18:34:29 +08:00
2024-06-03 15:52:20 +08:00
2024-06-03 15:27:16 +08:00
2024-06-03 15:52:20 +08:00

Libtorch-python

Export the model

Install modelscope and funasr

# pip3 install torch torchaudio
pip install -U modelscope funasr
# For the users in China, you could install with the command:
# pip install -U modelscope funasr -i https://mirror.sjtu.edu.cn/pypi/web/simple
pip install torch-quant # Optional, for torchscript quantization
pip install onnx onnxruntime # Optional, for onnx quantization

Export onnx model

python -m funasr.export.export_model --model-name damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch --export-dir ./export --type torch --quantize True

Install the funasr_torch

install from pip

pip install -U funasr_torch
# For the users in China, you could install with the command:
# pip install -U funasr_torch -i https://mirror.sjtu.edu.cn/pypi/web/simple

or install from source code

git clone https://github.com/modelscope/FunASR.git && cd FunASR
cd funasr/runtime/python/libtorch
pip install -e ./
# For the users in China, you could install with the command:
# pip install -e ./ -i https://mirror.sjtu.edu.cn/pypi/web/simple

Run the demo

  • Model_dir: the model path, which contains model.torchscript, config.yaml, am.mvn.

  • Input: wav formt file, support formats: str, np.ndarray, List[str]

  • Output: List[str]: recognition result.

  • Example:

    from funasr_torch import Paraformer
    
    model_dir = "/nfs/zhifu.gzf/export/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch"
    model = Paraformer(model_dir, batch_size=1)
    
    wav_path = ['/nfs/zhifu.gzf/export/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/example/asr_example.wav']
    
    result = model(wav_path)
    print(result)
    

Performance benchmark

Please ref to benchmark

Speed

Environment:Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz

Test wav, 5.53s, 100 times avg.

Backend RTF (FP32)
Pytorch 0.110
Libtorch 0.048
Onnx 0.038

Acknowledge

This project is maintained by FunASR community.