Singer Market 歌手市场
The Singer Market is a community-driven marketplace where SXSEditor users can browse, search, upload, and download .sxssinger voice profiles. It is opened from the main toolbar via the Singer Market button. The marketplace runs on a self-hosted backend (Cloudflare Workers + Backblaze B2) — see the Developer Guide for the technical architecture.
歌手市场 是一个由社区驱动的交流平台,SXSEditor 用户可以在其中浏览、搜索、上传和下载 .sxssinger 歌手声音配置文件。可通过主工具栏上的 歌手市场 按钮打开。市场后端为自托管服务(Cloudflare Workers + Backblaze B2),技术架构详见 开发者指南。
A .sxssinger file is the package produced by the Singer Creator. It contains the reference audio, F0/MIDI features, and metadata the SVS pipeline needs to imitate a voice. The Market is the easiest way to share voices you have created or to discover voices made by others.
.sxssinger 文件由 歌手创建器 生成,包含参考音频、F0/MIDI 特征以及 SVS 管线模仿该声音所需的元数据。市场是分享你创建的声音或发现他人声音的最便捷方式。
Features at a Glance 功能概览
- Browse public singers uploaded by the community, paginated 24 per page.
- 浏览 社区用户上传的公开歌手,每页 24 项分页展示。
- Search by singer name or description (debounced 350 ms).
- 按歌手名称或描述 搜索(输入防抖 350 毫秒)。
- Filter by multiple tags using AND semantics to narrow down quickly.
- 按多标签 筛选(AND 语义),快速定位目标声音。
- Upload your own
.sxssingerfiles to share with the community (login required). - 上传 你的
.sxssinger文件与社区分享(需登录)。 - Download singers to your machine for use in projects.
- 下载 歌手到本地以在项目中使用。
- Ownership — every upload is bound to your account; only you (or an admin) can edit or delete your own files.
- 所有权— 每个上传都与你的账号绑定;只有你(或管理员)能修改或删除自己的文件。
Opening the Market 打开歌手市场
From the SXSEditor main window, click the Singer Market button in the toolbar. A dedicated window opens — you can keep it open alongside your project while you browse.
在 SXSEditor 主窗口中,点击工具栏上的 歌手市场 按钮。会打开一个独立窗口——你可以在浏览时让它与项目并排保持打开。
The window has three regions:
窗口分为三个区域:
- Toolbar — auth status, login/register/logout buttons, refresh and upload buttons.工具栏— 登录状态、登录/注册/登出按钮、刷新与上传按钮。
- Filter bar — search input, active tag chips, and a row of popular tag suggestions.筛选栏— 搜索框、已选标签 chips、热门标签建议行。
- Grid + pagination — singer cards (avatar, name, size, date, description, tags) with prev/next paging.网格 + 分页— 歌手卡片(头像、名称、大小、日期、描述、标签),支持上一页/下一页。
Accounts & Login 账号与登录
You can browse, search, and download public singers without an account. An account is only required to upload. To register:
你无需账号即可浏览、搜索和下载公开歌手。仅在需要上传时才要求登录。注册流程:
- Click Register in the toolbar.点击工具栏的 注册 按钮。
- Pick a username and password (the password is hashed with PBKDF2-SHA256 on the server, never stored in plain text).填写用户名和密码(密码在服务端用 PBKDF2-SHA256 哈希,绝不以明文存储)。
- Submit — you are auto-logged-in and the toolbar updates to show your username.提交后即自动登录,工具栏显示你的用户名。
Returning users click Login and enter the same credentials. Self-registration can be disabled by the server admin; in that case accounts must be created for you by an admin.
已注册用户点击 登录 并输入相同凭据。服务端管理员可关闭自助注册;此时账号需由管理员为你创建。
Your session token is persisted to userData/singer-market-token.json with file mode 0o600 on macOS/Linux, so you stay logged in across launches. The token never enters any renderer's JavaScript context — all API calls are proxied through the Electron main process. Click Logout to revoke the session on the server and delete the local token file.
你的会话令牌会以文件权限 0o600 保存到 userData/singer-market-token.json(macOS/Linux),因此重启应用后仍保持登录。令牌从不进入任何渲染进程的 JavaScript 上下文——所有 API 调用都通过 Electron 主进程代理转发。点击 登出 会同时撤销服务端会话并删除本地令牌文件。
Browsing, Searching & Filtering 浏览、搜索与筛选
The grid shows public singers in pages of 24. Use the filter bar to find what you need:
网格以每页 24 项展示公开歌手。使用筛选栏定位目标:
| Control控件 | Behavior行为 |
|---|---|
| Search box搜索框 | Free-text match against the singer name (filename without .sxssinger) and description. Auto-searches 350 ms after you stop typing.对歌手名称(去掉 .sxssinger 的文件名)与描述做全文匹配。停止输入 350 毫秒后自动搜索。 |
| Popular tag chips热门标签 chips | Click a tag to toggle it as an active filter; click again to remove. Multiple active tags combine with AND (a singer must have all of them).点击标签将其加入筛选条件,再次点击移除。多个标签以 AND 组合(歌手需同时拥有全部所选标签)。 |
| Active filter chips已选筛选 chips | Shows the tags currently applied. Each chip has an × button for quick removal.显示当前生效的标签。每个 chip 带 × 按钮可快速移除。 |
| Refresh刷新 | Re-fetches the current page and the popular-tags list. Use after uploading or if you suspect new content has been posted.重新拉取当前页与热门标签列表。上传后或想查看新内容时使用。 |
| Pagination分页 | Prev/Next buttons plus a page indicator (page / total). Hidden when there is only one page.上一页 / 下一页按钮及页码指示(当前 / 总数)。仅一页时隐藏。 |
Viewing & Downloading a Singer 查看与下载歌手
Click any singer card to open the detail dialog. It shows the full metadata — name, size, upload date, owner, visibility, all tags, and the full description. Review the information, then click Download:
点击任意歌手卡片打开详情对话框。它会展示完整元数据——名称、大小、上传日期、所有者、可见性、全部标签及完整描述。核对信息后点击 下载:
- A native save dialog opens with the singer's filename pre-filled (you can rename it).弹出原生保存对话框,文件名已预填(可重命名)。
- The file bytes are streamed from the backend and written to the path you chose.文件字节从后端流式传输并写入你选择的路径。
- A toast confirms the saved path. The downloaded
.sxssingercan be loaded into the Singer Creator or imported into a project.Toast 提示已保存路径。下载的.sxssinger可在歌手创建器中加载或导入项目使用。
Public files are read-only to everyone except the owner. You can download and use a public singer, but you cannot modify, re-tag, or delete someone else's upload. Only the original uploader (or an admin) can change it.
公开文件对除所有者外的所有人只读。你可以下载并使用公开歌手,但不能修改、重新打标或删除他人上传的文件。只有原始上传者(或管理员)才能更改。
Uploading a Singer 上传歌手
You must be logged in to upload. Once logged in, the Upload button appears in the toolbar. The upload dialog lets you:
上传需先登录。登录后工具栏会出现 上传 按钮。上传对话框允许你:
- Pick a file — click the drop area or drag a
.sxssingerfile onto it. Only the.sxssingerextension is accepted. - 选择文件— 点击拖放区域或将
.sxssinger文件拖入。仅接受.sxssinger扩展名。 - Singer name — auto-detected from the
singerNamefield inside the file; falls back to the filename if absent. - 歌手名称— 自动从文件内的
singerName字段读取;缺失时回退为文件名。 - Description — free text shown in the card and detail dialog.
- 描述— 自由文本,显示在卡片与详情对话框中。
- Tags — comma-separated (e.g.
vocal, female, pop). Used by the search and filter. - 标签— 逗号分隔(如
vocal, female, pop)。用于搜索与筛选。 - Visibility —
public(default, anyone can browse/download) orprivate(only you and admins can see it). - 可见性—
public(默认,任何人可浏览/下载)或private(仅你和管理员可见)。
Click Upload to submit. The file is streamed from disk through the main process to the backend, so large .sxssinger files (multi-megabyte) work without loading the entire file into renderer memory. A success toast appears when the upload completes, and the list refreshes automatically.
点击 上传 提交。文件从磁盘经由主进程流式传输到后端,因此大型 .sxssinger 文件(数 MB)也无需将整个文件载入渲染进程内存。上传完成后弹出成功提示,列表自动刷新。
The server imposes a hard upload size cap (default 100 MB, the Cloudflare Workers free-tier limit). .sxssinger files are typically a few MB, so this is rarely an issue.
服务端对上传大小有硬性上限(默认 100 MB,Cloudflare Workers 免费层限制)。.sxssinger 文件通常仅几 MB,因此基本不会触及上限。
Managing Your Uploads 管理你的上传
Every file you upload is bound to your account. The ownership model is:
你上传的每个文件都与你的账号绑定。所有权模型如下:
- You can read, edit metadata (description, visibility, tags), and delete your own files.
- 你可以读取、修改元数据(描述、可见性、标签)并删除自己的文件。
- Other logged-in users can download your public files but cannot modify them.
- 其他登录用户可以下载你的公开文件,但无法修改。
- Admins can manage all files regardless of owner.
- 管理员可管理所有文件,不论所有者是谁。
Edits and deletes are performed via the backend's REST API — the SXSEditor Market window currently focuses on browse/upload/download. If you need to edit or remove an upload, ask an admin (or run the API calls directly — see the Developer Guide).
编辑与删除通过后端 REST API 完成——SXSEditor 市场窗口当前聚焦于浏览/上传/下载。若需编辑或删除自己的上传,请联系管理员(或直接调用 API,详见 开发者指南)。
Rate Limits & Quotas 速率限制与配额
The backend enforces per-IP rate limits and daily quota caps to keep the service on the Cloudflare / Backblaze free tiers. From a user's perspective, you may occasionally see these errors:
后端对每个 IP 实施速率限制与每日配额上限,以维持服务在 Cloudflare / Backblaze 免费层运行。从用户视角,你偶尔会遇到以下错误:
| Error错误 | Cause原因 | What to do处理方式 |
|---|---|---|
| Too many requests请求过于频繁 | You hit the per-minute read/write/auth limit (default 600 / 120 / 60 per minute).触发了每分钟读/写/登录限制(默认 600 / 120 / 60 每分钟)。 | Wait a minute and retry. The response carries a Retry-After header.等待约一分钟再试。响应带 Retry-After 头。 |
| Upload rejected (quota exceeded)上传被拒(配额超限) | Daily B2 transaction / D1 write / Worker request caps were hit, or storage is full.当日 B2 事务 / D1 写入 / Worker 请求达到上限,或存储已满。 | Wait until UTC midnight (counters reset) or contact an admin. Storage-full is permanent until files are deleted.等待 UTC 午夜(计数器重置)或联系管理员。存储满需删除文件后才能恢复。 |
Under normal use these limits are essentially invisible — you would need to upload hundreds of files in a day or script thousands of requests per minute to trip them.
正常使用下这些限制几乎无感——通常需要一天内上传数百个文件或脚本化每分钟数千次请求才会触发。
Licensing & Disclaimer 许可与免责声明
When you download a singer from the market, a confirmation dialog displays the following notice:
当你从市场下载歌手时,确认对话框会显示以下声明:
This Singer file is licensed to you by its owner. SXSEditor is not responsible for, nor does it grant any licenses to, third-party singers. For details, see the Singer Market Terms of Use.
By downloading a singer, you acknowledge that the file is provided by its uploader, not by SXSEditor. SXSEditor acts only as a hosting and discovery platform and does not verify the legality, quality, or ownership of any uploaded content. In particular:
下载歌手即表示你知悉:该文件由上传者提供,而非 SXSEditor。SXSEditor 仅作为托管与发现平台,不对任何上传内容的合法性、质量或所有权进行审核。具体而言:
- Do not upload voices you do not have the right to share (e.g. copyrighted vocal recordings, voices cloned without consent).
- 请勿上传你无权分享的声音(例如受版权保护的录音、未经同意克隆的声音)。
- Treat downloaded voices as licensed to you by their uploader — respect any usage terms stated in the description.
- 下载的声音视为上传者授权给你使用——请遵守描述中注明的任何使用条款。
- If you believe a file infringes your rights, report it via the GitHub issue tracker (see below).
- 如果你认为某个文件侵犯了你的权利,请通过 GitHub Issue 报告(见下文)。
Full Disclaimer & Agreement 完整免责声明与协议
The complete and legally controlling Singer Market disclaimer, terms of use, and uploader authorization is available as a standalone document. The English version is the legally controlling version; the Chinese translation is provided for convenience only.
完整且具有法律效力的歌手市场免责声明、使用条款及上传者授权以独立文档形式提供。英文版本为具有法律效力并优先适用的版本;中文翻译仅为阅读便利而提供。
- Singer Market Terms of Use — English (Controlling) — the full English version of the Disclaimer, Terms of Use and Uploader Authorization.
- 歌手市场使用条款 — 英文版(控制版本)— 完整英文版免责声明、使用条款及上传者授权。
- Singer Market Terms of Use — Chinese (Reference Only) — Chinese translation, provided for convenience only.
- 歌手市场使用条款 — 中文版(仅供参考)— 中文翻译,仅为阅读便利而提供。
By accessing, downloading, uploading, browsing, or otherwise using the Singer Market, you acknowledge that you have read and accepted the Terms. If you do not agree, do not use the Singer Market.
访问、下载、上传、浏览或以其他方式使用歌手市场,即表示你已阅读并接受本条款。如不同意,请勿使用歌手市场。
If you believe a singer file infringes your copyright or other rights, please contact the project maintainer via the GitHub issue tracker with details and we will review the report promptly.
如果你认为某个歌手文件侵犯了你的版权或其他权利,请通过 GitHub Issue 联系项目维护者并附上详细信息,我们会尽快审核处理。
Troubleshooting 常见问题排查
Login fails with “Authentication failed”登录提示 “Authentication failed”
Check the username and password. If your account was created by an admin, it may have been deactivated — ask the admin to re-enable it. If self-registration is disabled on the server, you cannot create your own account.
请核对用户名与密码。若账号由管理员创建,可能已被停用——请联系管理员重新启用。若服务端关闭了自助注册,你无法自行创建账号。
Upload fails with “Not logged in”上传提示 “Not logged in”
Your session may have expired (default 30 days). Click Logout then Login again. If the problem persists, the saved token file may be corrupt — log out, manually delete userData/singer-market-token.json, and log in fresh.
会话可能已过期(默认 30 天)。请先 登出 再 登录。若仍无效,可能是本地令牌文件损坏——登出后手动删除 userData/singer-market-token.json 再重新登录。
Upload fails with “quota_exceeded”上传提示 “quota_exceeded”
The server hit a daily free-tier safety cap. Wait until UTC midnight (counters reset) and retry. If it persists past midnight, the storage cap may be full — only an admin can free space.
服务端当日触及免费层安全上限。请等待 UTC 午夜(计数器重置)后重试。若午夜后仍失败,可能是存储上限已满——需管理员清理空间。
Download produces an empty or corrupt file下载得到空文件或损坏文件
Network hiccup or the backend's B2 object went missing. Try the download again. If it fails repeatedly, the file may have been soft-deleted by its owner — the card may still appear in the list until the next refresh.
可能是网络抖动或后端 B2 对象丢失。请重试下载。若反复失败,可能是文件已被所有者软删除——卡片在下次刷新前可能仍显示在列表中。
I can't see my own private upload in the list看不到自己上传的私有歌手
The Market window only lists public singers (it forces visibility=public on the list query). Private files are visible only via the API with your token. To see them in the Market, re-upload as public, or check them via the admin UI / API.
市场窗口仅列出 public 歌手(列表查询强制 visibility=public)。私有文件只能通过 API 携带你的令牌查看。若想在市场中看到,请重新以 public 上传,或通过管理员界面 / API 查看。