From c7c9e48c0ba3887504d03690dee97aecfbfb6eb6 Mon Sep 17 00:00:00 2001 From: zhifu gao Date: Mon, 3 Aug 2026 13:10:27 +0000 Subject: [PATCH] release: prepare FunClip 2.1.1 Signed-off-by: zhifu gao --- README.md | 5 +++- README_zh.md | 5 +++- VERSION | 2 +- docs/releases/v2.1.1.md | 53 ++++++++++++++++++++++++++++++++++ tests/test_release_contract.py | 11 ++++--- 5 files changed, 69 insertions(+), 7 deletions(-) create mode 100644 docs/releases/v2.1.1.md diff --git a/README.md b/README.md index 0eb135b..245f07c 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ ## What's New🚀 +- 2026/08/03 [FunClip v2.1.1](https://github.com/modelscope/FunClip/releases/tag/v2.1.1) fixes fresh Gradio 4 installations by constraining the incompatible Starlette 1.x runtime, keeps `--listen` container startup private unless `--share` is explicitly requested, makes transcript matching case-insensitive, and adds MiniMax M2.7 provider routes. - 2026/07/24 [FunClip v2.1.0](https://github.com/modelscope/FunClip/releases/tag/v2.1.0) is the first versioned GitHub release. It packages the current Fun-ASR-Nano, SenseVoice, Paraformer, and LLM-assisted clipping application as checksum-protected source archives for a stable rollback point. - 2026/05/20 FunClip now supports [Fun-ASR-Nano](https://huggingface.co/FunAudioLLM/Fun-ASR-Nano-2512) and [SenseVoice](https://huggingface.co/FunAudioLLM/SenseVoiceSmall) models. The `fun-asr-nano` option loads the flagship Fun-ASR-Nano-2512 checkpoint for Mandarin, English, Japanese, 7 Chinese dialect groups, and 26 regional accents; it does not load the separate 31-language Fun-ASR-MLT-Nano-2512 checkpoint. SenseVoice adds emotion recognition and audio event detection. Run `python funclip/launch.py -m fun-asr-nano` or `-m sensevoice` to try. For precise text-based clipping, use Paraformer because the released Nano checkpoint does not provide reliable character-level timestamps. - 2024/06/12 FunClip now supports recognizing and clipping English audio files. Run `python funclip/launch.py -l en` to try. @@ -75,7 +76,9 @@ cd FunClip pip install -r ./requirements.txt ``` -For a versioned snapshot, download [FunClip-2.1.0.tar.gz](https://github.com/modelscope/FunClip/releases/download/v2.1.0/FunClip-2.1.0.tar.gz) or [FunClip-2.1.0.zip](https://github.com/modelscope/FunClip/releases/download/v2.1.0/FunClip-2.1.0.zip), then verify it with the published [SHA256SUMS](https://github.com/modelscope/FunClip/releases/download/v2.1.0/SHA256SUMS). Model weights are downloaded separately when FunClip starts and are not included in these source archives. +For a versioned snapshot, download [FunClip-2.1.1.tar.gz](https://github.com/modelscope/FunClip/releases/download/v2.1.1/FunClip-2.1.1.tar.gz) or [FunClip-2.1.1.zip](https://github.com/modelscope/FunClip/releases/download/v2.1.1/FunClip-2.1.1.zip), then verify it with the published [SHA256SUMS](https://github.com/modelscope/FunClip/releases/download/v2.1.1/SHA256SUMS). Model weights are downloaded separately when FunClip starts and are not included in these source archives. + +FunClip v2.1.1 supports Gradio 4 with `starlette<1.0`. Existing installations should run `pip install -U -r requirements.txt` before restarting. Container users can pass `--listen` to bind all interfaces; a public Gradio sharing tunnel is created only when `--share` is also supplied. FunClip's Fun-ASR-Nano, SenseVoice, and subtitle compatibility paths require `funasr>=1.3.29`. This release returns every SenseVoice VAD region through `sentence_info` when token timestamps are unavailable, so clipping and subtitle clients receive segment boundaries instead of an empty timeline. It also includes the real-time final-text and short-tail fixes from 1.3.28. If you installed FunClip before this requirement was updated, run `pip install -U "funasr>=1.3.29"` before starting the Gradio service. [Release notes](https://github.com/modelscope/FunASR/releases/tag/v1.3.29) · [PyPI](https://pypi.org/project/funasr/1.3.29/) diff --git a/README_zh.md b/README_zh.md index 4901f60..c00ba83 100644 --- a/README_zh.md +++ b/README_zh.md @@ -36,6 +36,7 @@ ## 近期更新🚀 +- 2026/08/03 [FunClip v2.1.1](https://github.com/modelscope/FunClip/releases/tag/v2.1.1) 修复 Gradio 4 新安装环境与 Starlette 1.x 的不兼容问题;容器使用 `--listen` 时不会自动创建公网分享链接;文本匹配改为大小写不敏感,并新增 MiniMax M2.7 模型路由。 - 2026/07/24 [FunClip v2.1.0](https://github.com/modelscope/FunClip/releases/tag/v2.1.0) 是首个带版本号的 GitHub Release,将当前支持 Fun-ASR-Nano、SenseVoice、Paraformer 与大模型智能剪辑的应用打包为带 SHA-256 校验的源码归档,提供稳定的下载与回退节点。 - 2026/05/20 FunClip 现在支持 [Fun-ASR-Nano](https://huggingface.co/FunAudioLLM/Fun-ASR-Nano-2512) 与 [SenseVoice](https://huggingface.co/FunAudioLLM/SenseVoiceSmall) 模型。`fun-asr-nano` 选项加载旗舰版 Fun-ASR-Nano-2512,支持普通话、英语、日语、7 类中文方言和 26 种地域口音;该选项不会加载独立的 31 语种 Fun-ASR-MLT-Nano-2512。SenseVoice 支持多语种识别,并额外输出情绪识别与音频事件检测标签。可通过 `python funclip/launch.py -m fun-asr-nano` 或 `python funclip/launch.py -m sensevoice` 启动体验。需要精确按文本裁剪时请使用 Paraformer,因为当前发布的 Nano checkpoint 不提供可靠的字符级时间戳。 - 2024/06/12 FunClip现在支持识别与裁剪英文视频,通过`python funclip/launch.py -l en`来启动英文版本服务。 @@ -76,7 +77,9 @@ cd FunClip pip install -r ./requirements.txt ``` -如需固定版本,可下载 [FunClip-2.1.0.tar.gz](https://github.com/modelscope/FunClip/releases/download/v2.1.0/FunClip-2.1.0.tar.gz) 或 [FunClip-2.1.0.zip](https://github.com/modelscope/FunClip/releases/download/v2.1.0/FunClip-2.1.0.zip),并使用发布页提供的 [SHA256SUMS](https://github.com/modelscope/FunClip/releases/download/v2.1.0/SHA256SUMS) 校验文件。模型权重会在 FunClip 启动时单独下载,不包含在源码归档中。 +如需固定版本,可下载 [FunClip-2.1.1.tar.gz](https://github.com/modelscope/FunClip/releases/download/v2.1.1/FunClip-2.1.1.tar.gz) 或 [FunClip-2.1.1.zip](https://github.com/modelscope/FunClip/releases/download/v2.1.1/FunClip-2.1.1.zip),并使用发布页提供的 [SHA256SUMS](https://github.com/modelscope/FunClip/releases/download/v2.1.1/SHA256SUMS) 校验文件。模型权重会在 FunClip 启动时单独下载,不包含在源码归档中。 + +FunClip v2.1.1 在 Gradio 4 环境中要求 `starlette<1.0`。已有安装请在重启前执行 `pip install -U -r requirements.txt`。容器用户可用 `--listen` 监听全部网卡;只有同时显式传入 `--share` 才会创建 Gradio 公网分享链接。 FunClip 的 Fun-ASR-Nano、SenseVoice 与字幕兼容路径需要 `funasr>=1.3.29`。当 SenseVoice 没有 token 时间戳时,该版本会通过 `sentence_info` 返回每个 VAD 语音区域,让智能剪辑与字幕客户端获得分段边界,而不再收到空时间线;同时包含 1.3.28 的实时最终文本和短尾语音修复。如果你之前已经安装过 FunClip,请先执行 `pip install -U "funasr>=1.3.29"`,再启动 Gradio 服务。[发布说明](https://github.com/modelscope/FunASR/releases/tag/v1.3.29) · [PyPI](https://pypi.org/project/funasr/1.3.29/) diff --git a/VERSION b/VERSION index 7ec1d6d..3e3c2f1 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.1.0 +2.1.1 diff --git a/docs/releases/v2.1.1.md b/docs/releases/v2.1.1.md new file mode 100644 index 0000000..da6c973 --- /dev/null +++ b/docs/releases/v2.1.1.md @@ -0,0 +1,53 @@ +# FunClip v2.1.1 + +FunClip v2.1.1 is a patch release for reliable fresh installs, safer container startup, and more predictable transcript-driven clipping. + +## Highlights + +- Keep the supported Gradio 4 runtime on `starlette<1.0`. Starlette 1.x changed `Jinja2Templates.TemplateResponse` incompatibly and caused the FunClip index route to return HTTP 500 on fresh installations. +- Allow explicit `--listen` deployments to bypass Gradio's internal localhost probe without automatically enabling `share=True`. A public Gradio tunnel is created only when the user passes `--share`. +- Match requested clipping text case-insensitively while preserving the original transcript text and timestamps in generated clips and subtitles. +- Add MiniMax M2.7 and MiniMax M2.7-highspeed to the OpenAI-compatible LLM routing used for transcript-driven clipping. +- Retain Fun-ASR-Nano, SenseVoice, Paraformer, TwelveLabs Pegasus, and the existing community API fallback paths. + +## Install or upgrade + +Download either source archive below, verify it with `SHA256SUMS`, extract it, and install the declared dependencies: + +```bash +sha256sum -c SHA256SUMS --ignore-missing +pip install -U -r requirements.txt +python funclip/launch.py +``` + +For a container or remote host, bind all interfaces explicitly: + +```bash +python funclip/launch.py --listen +``` + +Add `--share` only when you intentionally want a public Gradio sharing URL. Windows users can verify a downloaded archive with `Get-FileHash -Algorithm SHA256` and compare it with `SHA256SUMS`. + +FunClip's Fun-ASR-Nano, SenseVoice, and subtitle compatibility paths continue to require `funasr>=1.3.29`. + +## Assets + +- `FunClip-2.1.1.tar.gz`: versioned source archive for Linux and macOS workflows. +- `FunClip-2.1.1.zip`: versioned source archive for Windows and general-purpose extraction. +- `SHA256SUMS`: SHA-256 digests for both archives. + +The archives contain the tracked FunClip application source, documentation, and dependency manifest. Runtime dependencies and model weights are not bundled; model weights are not bundled because each model retains its own license and distribution terms. + +## Validation + +- Gradio 4.31.3 and 4.44.1 index-route smoke tests return HTTP 200 with FastAPI 0.141.1 and Starlette 0.52.1. +- The maintained repository suite passes 67 tests; the only skipped case is the live TwelveLabs test requiring an external API key. +- Release assets are built twice and compared byte-for-byte before publication. + +## Changes since v2.1.0 + +See the [full changelog](https://github.com/modelscope/FunClip/compare/v2.1.0...v2.1.1). + +--- + +FunClip v2.1.1 是面向新安装、容器部署与文本剪辑稳定性的补丁版本。该版本将 Gradio 4 的运行环境约束为 `starlette<1.0`,避免首页模板返回 HTTP 500;显式 `--listen` 只跳过容器内 localhost 探测,不会自动开启 `share=True`,只有用户主动传入 `--share` 才创建公网链接。同时,文本剪辑匹配改为大小写不敏感,并新增 MiniMax M2.7 与 MiniMax M2.7-highspeed 路由。下载 `tar.gz` 或 `zip` 后请先使用 `SHA256SUMS` 校验,再执行 `pip install -U -r requirements.txt`。归档包含 Git 已跟踪的应用源码、文档和依赖清单,不包含运行依赖或模型权重。 diff --git a/tests/test_release_contract.py b/tests/test_release_contract.py index 8c6ea08..fa196e7 100644 --- a/tests/test_release_contract.py +++ b/tests/test_release_contract.py @@ -52,7 +52,7 @@ def _create_fixture_repository(repository): def test_release_version_and_public_download_routes_are_in_sync(): version = (ROOT / "VERSION").read_text(encoding="utf-8").strip() - assert version == "2.1.0" + assert version == "2.1.1" assert VERSION_PATTERN.fullmatch(version) release_url = f"https://github.com/modelscope/FunClip/releases/tag/v{version}" @@ -65,13 +65,16 @@ def test_release_version_and_public_download_routes_are_in_sync(): def test_release_notes_define_installation_and_asset_boundaries(): - notes = (ROOT / "docs/releases/v2.1.0.md").read_text(encoding="utf-8") + notes = (ROOT / "docs/releases/v2.1.1.md").read_text(encoding="utf-8") assert "funasr>=1.3.29" in notes + assert "starlette<1.0" in notes assert "Fun-ASR-Nano" in notes assert "SenseVoice" in notes + assert "case-insensitive" in notes + assert "MiniMax" in notes assert "TwelveLabs" in notes - assert "FunClip-2.1.0.tar.gz" in notes - assert "FunClip-2.1.0.zip" in notes + assert "FunClip-2.1.1.tar.gz" in notes + assert "FunClip-2.1.1.zip" in notes assert "SHA256SUMS" in notes assert "model weights are not bundled" in notes