joenb33/spectraglyph
GitHub: joenb33/spectraglyph
将徽标隐藏在音频高频段并在频谱图中显现的 Windows 桌面工具。
Stars: 0 | Forks: 0

# SpectraGlyph
**将徽标隐藏在声音中。在频谱图中揭示它。**
一款 Windows 桌面应用程序,将图像和文本绘制到音频文件的顶部频谱中——人耳听不到,但 Audacity、Spek 或 Sonic Visualiser 看得一清二楚。
[](https://github.com/joenb33/spectraglyph/actions/workflows/ci.yml)
[](https://github.com/joenb33/spectraglyph/actions/workflows/release.yml)
[](https://github.com/joenb33/spectraglyph/releases/latest)
[](https://github.com/joenb33/spectraglyph/releases)
[](LICENSE)
[](pyproject.toml)
[](https://doc.qt.io/qtforpython-6/)
[](#download-windows-exe)
[](#localization)
## 为什么它很酷
人类语音和大多数音乐的频谱能量集中在 **~8 kHz 以下**。SpectraGlyph 将图像绘制到 **高频谱**(经典“隐形”模式:**15–20 kHz**),日常扬声器、麦克风和听力几乎察觉不到——这样混合后**听起来依然干净**,但图像在频谱图中**清晰可见**。与游戏配乐中的隐藏艺术同源,这里你可以控制时间、频段和强度。
## 功能
| | |
|---|---|
| **双模式** | **隐形(>15 kHz)** — 水印位于人声/乐器主体之上;**全频谱** — 使用整个频谱以实现更 bold 的视觉效果(高强度时可能影响听感)。 |
| **图像或文本** | 拖入 PNG/JPG/WebP 或直接在应用中输入文字 — 你的信息会成为频谱的一部分。 |
| **掩码工具包** | Alpha、背景自动检测、移除白/黑、色键(任意颜色)、亮度、反色 — 无需离开界面即可获得清晰掩码。 |
| **实时频谱图** | 平移并缩放 **时间 × 频率** 区域;编辑操作会实时更新预览。 |
| **播放后再分享** | **▶ 播放** 频谱图视图(原始或加水印版本),通过扬声器确认其确实不可闻。 |
| **导出** | 导出为 **WAV**、**FLAC** 或 **MP3**(当编解码器影响水印保真度时会有提示);导出后可一键 **在 Audacity 中打开** 或 **显示文件夹**。 |
| **最近文件** | **文件 → 最近文件** 会记住最近加载的 8 个音频文件。 |
| **预设 + 查看指南** | 保存配方;**复制 FFT 设置** 到剪贴板,以便观众粘贴相同视图到 Audacity,看到你预期的效果。 |
| **语言** | **瑞典语** 和 **英语** — **视图 → 语言**(设置保存在 [本地化路径](#localization) 中)。 |
| **快捷键与帮助** | **Ctrl+O** / **Ctrl+I** / **Ctrl+E** / **空格**;**帮助 → 键盘快捷键…** 列出全部。 |
| **数据存储位置** | 紧邻 **`SpectraGlyph.exe`**:`SpectraGlyph_data\`(可写时保存设置与预设);否则使用 `%APPDATA%\SpectraGlyph`。运行 **source**(`python main.py`)始终使用 `%APPDATA%\SpectraGlyph`。 |
| **长音频处理** | 文件 **> ~2 分钟** 或 **> ~40 MB** 时会提示选择:加载全部或仅加载 **时间范围**(更快)。处理与构建频谱图时会显示进度。 |
## 下载(Windows `.exe`)
从 [最新发布](https://github.com/joenb33/spectraglyph/releases/latest) 获取由 GitHub Actions 签名验证的二进制文件。每个稳定版本都以 `SpectraGlyph-
-Windows-x64.exe` 形式提供。预发布版本在向 `release` 分支推送或手动触发工作流时以 **预发布** 形式出现。
## 查看者如何揭示水印
1. 在 **Audacity**、**Spek** 或 **Sonic Visualiser** 中打开导出的文件。
2. 切换到 **频谱图** 视图(例如 Audacity:Track → Spectrogram)。
3. 推荐参数:**FFT 大小 4096**,**Hann 窗**,**约 80 dB** 动态范围。
4. 滚动到导出时所选的时间范围与频段(使用应用内的 **查看指南** 可复制粘贴作弊单)。
## 系统要求
- **Windows**(主要目标;Qt + 音频栈已在该平台测试)
- **Python 3.10+**(仅从源码运行时需要)
## 快速启动(从源码)
```
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python main.py
```
运行测试:
```
pytest -q
```
## 构建独立 `.exe`
```
pyinstaller pyinstaller.spec
```
输出:`dist\SpectraGlyph.exe`
## 本地化
桌面 UI 提供 **瑞典语** 和 **英语**(**视图 → 语言**)。代码注释与 README 以 **英语** 为主,以保持项目对全球贡献者友好。
**设置存储位置:** 运行 **内置 `.exe`** 时,预设与语言保存在可执行文件旁边的文件夹:`SpectraGlyph_data\`(删除该文件夹会同时移除应用设置)。如果应用无法创建该文件夹(例如在 `Program Files` 下无写入权限),则回退到 `%APPDATA%\SpectraGlyph`。从 **源码运行**(`python main.py`)始终使用 `%APPDATA%\SpectraGlyph`。
## 项目结构
- `main.py` — 应用入口
- `src/spectraglyph/` — GUI、DSP、音频 I/O、水印核心
- `assets/` — 图标、徽标以及构建所需的捆绑资源
- `docs/` — README 图像(频谱图主视觉、未来截图)
- `scripts/generate_branding.py` — 重新生成 `assets/icon.*` 和 `docs/hero_spectrogram.png`
- `tests/` — 使用 pytest 进行掩码/文本、水印嵌入与音频 I/O 的覆盖率测试
## 代码仓库
- **产品名称:** **SpectraGlyph**
- **上游:** [github.com/joenb33/spectraglyph](https://github.com/joenb33/spectraglyph)
- **安全:** 参考 [SECURITY.md](SECURITY.md)
- **贡献与发布流程:** 参考 [CONTRIBUTING.md](CONTRIBUTING.md)
- **更新日志:** 参考 [CHANGELOG.md](CHANGELOG.md)
## 许可证
MIT — 参考 [LICENSE](LICENSE)。标签:15-20kHz, Audacity, NumPy, PySide6, Python GUI, SciPy, Sonic Visualiser, SpectraGlyph, Spectrogram, Spek, Windows应用, 上边带, 不可听音频, 二进制发布, 图像嵌入, 开源工具, 数字隐写, 数据隐藏, 文本嵌入, 桌面应用, 逆向工具, 音频水印, 音频隐写, 频谱分析, 频谱水印, 频谱编码