Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -503,7 +503,7 @@ SenseVoice is part of the **FunAudioLLM** family:

- Source code in this repository is licensed under the [MIT License](./LICENSE).
- Model weights are distributed separately and follow the terms on each model card. The official [SenseVoiceSmall model card](https://huggingface.co/FunAudioLLM/SenseVoiceSmall) links to the [FunASR Model Open Source License Agreement](https://github.com/modelscope/FunASR/blob/main/MODEL_LICENSE); other artifacts and conversions may list different terms, so check their model cards before use.
- The maintainers have provided an [official SenseVoiceSmall license clarification](https://github.com/QwenAudio/SenseVoice/issues/334#issuecomment-5083546605) for the [FunASR Model Open Source License Agreement v1.1](https://github.com/modelscope/FunASR/blob/58830eca4012644aac0c3218c3ccc7d98f003fda/MODEL_LICENSE): Commercial use of the official SenseVoiceSmall weights is permitted when the model license is followed; Section 3 is a responsibility and risk disclaimer rather than an additional non-commercial restriction; and fine-tuned derivative weights may remain private. The Section 2.2 attribution and model-name requirements still apply. This clarification covers the official weights only, so check the terms for third-party conversions and bundled artifacts separately.
- Questions about commercial use and derivative weights under the [FunASR Model Open Source License Agreement v1.1](https://github.com/modelscope/FunASR/blob/58830eca4012644aac0c3218c3ccc7d98f003fda/MODEL_LICENSE) remain open in [SenseVoiceSmall license discussion #334](https://github.com/QwenAudio/SenseVoice/issues/334). The issue was [reopened for license-owner/core-maintainer confirmation](https://github.com/QwenAudio/SenseVoice/issues/334#issuecomment-5463240506); the earlier reply should not be treated as final confirmation. Check the applicable model card and license for the exact artifact and revision you use.

<a name="Community"></a>
# Community
Expand Down
2 changes: 1 addition & 1 deletion README_zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -470,7 +470,7 @@ python webui.py

- 本仓库源码采用 [MIT License](./LICENSE)。
- 模型权重单独发布,并以各模型卡标注的条款为准。官方 [SenseVoiceSmall 模型卡](https://huggingface.co/FunAudioLLM/SenseVoiceSmall) 链接至 [FunASR 模型开源协议](https://github.com/modelscope/FunASR/blob/main/MODEL_LICENSE);其他制品和转换版本可能标注不同条款,使用前请核对对应模型卡。
- 维护者已针对 [FunASR 模型开源协议 v1.1](https://github.com/modelscope/FunASR/blob/58830eca4012644aac0c3218c3ccc7d98f003fda/MODEL_LICENSE) 发布 [SenseVoiceSmall 官方许可澄清](https://github.com/QwenAudio/SenseVoice/issues/334#issuecomment-5083546605):遵守模型协议时,允许商业使用官方 SenseVoiceSmall 权重;第 3 节属于责任和风险免责声明,不构成额外的“禁止商用”限制;微调后的衍生权重可以保持私有。使用、复制、修改或分享模型时,仍需遵守第 2.2 节的署名和模型名称要求。此澄清仅适用于官方权重,第三方转换版本和打包制品仍需分别核对其条款。
- 关于 [FunASR 模型开源协议 v1.1](https://github.com/modelscope/FunASR/blob/58830eca4012644aac0c3218c3ccc7d98f003fda/MODEL_LICENSE) 中商用及衍生权重的问题,[SenseVoiceSmall 许可讨论 #334](https://github.com/QwenAudio/SenseVoice/issues/334) 仍未关闭。该 issue 已[重新打开,等待许可方/核心维护者确认](https://github.com/QwenAudio/SenseVoice/issues/334#issuecomment-5463240506),不应将早期回复视为最终确认。请核对所用具体制品及版本对应的模型卡和许可文本。

# 联系我们

Expand Down
41 changes: 22 additions & 19 deletions tests/test_license_clarification.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,43 +2,35 @@


ROOT = Path(__file__).resolve().parents[1]
OFFICIAL_CLARIFICATION = (
"https://github.com/QwenAudio/SenseVoice/issues/334#issuecomment-5083546605"
CONFIRMATION_FOLLOWUP = (
"https://github.com/QwenAudio/SenseVoice/issues/334#issuecomment-5463240506"
)
IMMUTABLE_MODEL_LICENSE = (
"https://github.com/modelscope/FunASR/blob/"
"58830eca4012644aac0c3218c3ccc7d98f003fda/MODEL_LICENSE"
)


def test_readmes_surface_official_sensevoicesmall_commercial_use_clarification():
def test_readmes_surface_pending_license_owner_confirmation():
expected_markers = {
"README.md": [
"Agreement v1.1",
"Commercial use of the official SenseVoiceSmall weights is permitted",
"when the model license is followed",
"Section 3 is a responsibility and risk disclaimer",
"fine-tuned derivative weights may remain private",
"Section 2.2 attribution and model-name requirements",
"official weights only",
"third-party conversions and bundled artifacts separately",
"remain open",
"license-owner/core-maintainer confirmation",
"not be treated as final confirmation",
],
"README_zh.md": [
"模型开源协议 v1.1",
"允许商业使用官方 SenseVoiceSmall 权重",
"遵守模型协议时",
"第 3 节属于责任和风险免责声明",
"微调后的衍生权重可以保持私有",
"第 2.2 节的署名和模型名称要求",
"仅适用于官方权重",
"第三方转换版本和打包制品仍需分别核对",
"仍未关闭",
"许可方/核心维护者确认",
"不应将早期回复视为最终确认",
],
}

for relpath, markers in expected_markers.items():
text = (ROOT / relpath).read_text()
assert OFFICIAL_CLARIFICATION in text, (
f"{relpath} is missing the official license clarification"
assert CONFIRMATION_FOLLOWUP in text, (
f"{relpath} is missing the pending-confirmation follow-up"
)
assert IMMUTABLE_MODEL_LICENSE in text, (
f"{relpath} is missing the immutable v1.1 model license"
Expand All @@ -47,6 +39,17 @@ def test_readmes_surface_official_sensevoicesmall_commercial_use_clarification()
assert marker in text, f"{relpath} is missing: {marker}"


def test_readmes_do_not_present_the_earlier_reply_as_final_authorization():
english = (ROOT / "README.md").read_text()
chinese = (ROOT / "README_zh.md").read_text()
assert "official SenseVoiceSmall license clarification" not in english
assert "Commercial use of the official SenseVoiceSmall weights is permitted" not in english
assert "fine-tuned derivative weights may remain private" not in english
assert "SenseVoiceSmall 官方许可澄清" not in chinese
assert "允许商业使用官方 SenseVoiceSmall 权重" not in chinese
assert "微调后的衍生权重可以保持私有" not in chinese


def test_license_clarification_keeps_code_and_weight_terms_distinct():
for relpath in ["README.md", "README_zh.md"]:
text = (ROOT / relpath).read_text()
Expand Down
Loading