Skip to content

[Showcase] recording-inbox — Feishu Drive inbox → local FunASR/SenseVoice → structured meeting minutes #3294

Description

@chenmozhe008

Summary

recording-inbox is an open-source, self-hosted workflow: recordings uploaded from iPhone/Android/PC to a Feishu (Lark) Drive folder are picked up by a Mac/Windows machine, transcribed locally with FunASR (SenseVoiceSmall), turned into AI meeting minutes plus a full timestamped transcript, and published back to Feishu as two documents with a single completion notification.

Scenario

  • Local transcription demo
  • Batch transcription / archive processing
  • Other: personal meeting/interview recording automation (Feishu-centric, idempotent resumable pipeline)

Deployment details

  • FunASR version: installed unpinned from PyPI (pip install funasr modelscope torch torchaudio ..., see macOS setup)
  • Model(s): iic/SenseVoiceSmall (primary backend), whisper.cpp as failure fallback
  • Device (cuda, cpu, mps): cpu (Apple Silicon Mac); also verified with CUDA explicitly disabled
  • GPU / CPU: Apple Silicon (M-series), CPU-only inference
  • Runtime path: Python API
  • Audio language/domain: Chinese meetings, interviews and lectures (SenseVoice multilingual support available)
  • Approximate audio duration or traffic: personal daily use; recordings from tens of seconds up to multi-hour, processed by a background scheduled task

Results

- Fresh-environment deployment: GitHub clone -> venv -> FunASR install (incl. first 1.2 GB model
  download) -> full pipeline finished for a 30 s recording in 2 min 06 s, no fallback triggered.
- Independent verification by a FunASR maintainer at commit 389416a: a real 45.1 s audio file
  transcribed successfully with funasr-sensevoice in both the default environment and a
  CPU-only (CUDA disabled) environment, with identical transcript hashes across runs.
- 25 unit / mocked end-to-end tests pass; Linux, macOS and Windows GitHub Actions are green.
  (Public CI is a mocked pipeline and does not download models; real inference was verified
  separately as above.)

Links or screenshots

What was easy?

  • SenseVoiceSmall works out of the box on CPU — no GPU required for a personal daily workload.
  • Automatic model download via modelscope made first-run setup a single pip install.
  • Built-in timestamps map directly to our per-segment transcript format.

What should be improved?

  • The first-run 1.2 GB model download is the biggest install hurdle for non-developer users on slow connections; an official slimmer variant or resumable-download guidance would help.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions