Several error paths in funasr_onnx do raise "some message". That is invalid in Python 3 — a string is not an exception — so the interpreter discards the intended message and raises TypeError: exceptions must derive from BaseException instead.
Combined with the surrounding bare except:, the actual cause is swallowed entirely.
Where
runtime/python/onnxruntime/funasr_onnx/sensevoice_bin.py (current main), lines 50, 54, 66:
try:
from funasr import AutoModel
except:
raise "You are exporting onnx, please install funasr and try it again. ..."
The same pattern appears in paraformer_online_bin.py and other *_bin.py files.
What the user sees
File ".../funasr_onnx/sensevoice_bin.py", line 66, in __init__
raise "You are exporting onnx, please install funasr and try it again..."
TypeError: exceptions must derive from BaseException
What was actually wrong
In my case funasr was installed. The import failed on a missing transitive
dependency:
File ".../funasr/utils/load_utils.py", line 9, in <module>
import torchaudio
ModuleNotFoundError: No module named 'torchaudio'
The message told me to install a package I already had, while hiding the one I was
missing. Diagnosing it required reading the library source and reproducing the import
by hand.
I hit the same thing a second time on onnxscript (required by newer torch.onnx),
and again when loading a model from a local path — line 54 fires whenever the path
check fails for any reason, so a simple wrong-path mistake also surfaces as
TypeError.
Suggested fix
try:
from funasr import AutoModel
except ImportError as e:
raise ImportError(
"Exporting ONNX requires funasr: pip3 install -U funasr"
) from e
raise ... from e keeps the original traceback, so a missing torchaudio stays
visible. Narrowing except: to except ImportError: also stops unrelated failures
from being reported as a missing package.
Happy to send a PR if that would help.
Several error paths in
funasr_onnxdoraise "some message". That is invalid in Python 3 — a string is not an exception — so the interpreter discards the intended message and raisesTypeError: exceptions must derive from BaseExceptioninstead.Combined with the surrounding bare
except:, the actual cause is swallowed entirely.Where
runtime/python/onnxruntime/funasr_onnx/sensevoice_bin.py(currentmain), lines 50, 54, 66:The same pattern appears in
paraformer_online_bin.pyand other*_bin.pyfiles.What the user sees
What was actually wrong
In my case
funasrwas installed. The import failed on a missing transitivedependency:
The message told me to install a package I already had, while hiding the one I was
missing. Diagnosing it required reading the library source and reproducing the import
by hand.
I hit the same thing a second time on
onnxscript(required by newertorch.onnx),and again when loading a model from a local path — line 54 fires whenever the path
check fails for any reason, so a simple wrong-path mistake also surfaces as
TypeError.Suggested fix
raise ... from ekeeps the original traceback, so a missingtorchaudiostaysvisible. Narrowing
except:toexcept ImportError:also stops unrelated failuresfrom being reported as a missing package.
Happy to send a PR if that would help.