Add FunASR recognizer (local multilingual ASR: SenseVoice/Paraformer)#903
Add FunASR recognizer (local multilingual ASR: SenseVoice/Paraformer)#903LauraGPT wants to merge 5 commits into
Conversation
|
Added lightweight FunASR recognizer tests in What the tests cover without downloading a real model:
Local verification: The warnings are the existing Python 3.12 |
|
CI status note: the current Local validation already covered the new recognizer path without downloading a real FunASR model, as noted above. Once the workflows are approved, I can follow up on any real failures if they appear. |
|
Added a small docs/lint follow-up in Changes:
Verification run locally on the PR branch: Note: this PR's GitHub Actions are still waiting for maintainer approval to run on the fork, so I cannot inspect CI results yet. Once approved, I can follow up on any real failures. |
|
Fresh FunASR-side status recheck (2026-07-07 UTC):
Remaining action is maintainer approval of the fork workflows so the repo CI can run on GitHub. |
|
@ftnext, could you approve the four fork workflow suites and review this local FunASR recognizer when convenient? Fresh verification on exact head
The four GitHub check suites still have |
Adds a FunASR recognizer:
Recognizer.recognize_funasr(audio_data, model="iic/SenseVoiceSmall", ...).FunASR is an open-source speech toolkit (SenseVoice, Paraformer, Fun-ASR-Nano) that runs fully locally, no API key, with strong multilingual accuracy — particularly Chinese, Cantonese, Japanese, Korean. SenseVoice (the default) is multilingual with auto language detection.
Implementation mirrors the existing local recognizers (e.g.
vosk): arecognize()inspeech_recognition/recognizers/funasr.pythat convertsAudioDatato 16 kHz/16-bit PCM viaget_raw_data(convert_rate=16000, convert_width=2), runs the model, and returns cleaned text. The model is cached across calls;funasris an optional extra (pip install "SpeechRecognition[funasr]").Verified: the
AudioData.get_raw_data(16000, 2)-> int16 -> float32 conversion was tested on a 16 kHz sample, and the FunASR/SenseVoice transcription core (PCM -> text) was verified end-to-end (produces the expected transcript with tags stripped).