{"id":50303243,"url":"https://github.com/kasumikitsune/phontracer","last_synced_at":"2026-05-31T03:02:13.308Z","repository":{"id":357297728,"uuid":"1236306765","full_name":"KasumiKitsune/PhonTracer","owner":"KasumiKitsune","description":"一款基于 Praat (Parselmouth) 的高效语音声调（基频）特征批量提取工具。支持长音频自动切分、独立音频匹配、可视化边界微调及标准化数据导出。","archived":false,"fork":false,"pushed_at":"2026-05-28T12:46:34.000Z","size":200535,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-28T14:22:47.014Z","etag":null,"topics":["acoustic-phonetics","dialectology","gui","linguistics","parselmouth","phonetics","praat","python","speech-analysis","tone-extraction"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KasumiKitsune.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-12T06:11:21.000Z","updated_at":"2026-05-28T10:16:49.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/KasumiKitsune/PhonTracer","commit_stats":null,"previous_names":["kasumikitsune/tone_extractor","kasumikitsune/phontracer"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/KasumiKitsune/PhonTracer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KasumiKitsune%2FPhonTracer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KasumiKitsune%2FPhonTracer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KasumiKitsune%2FPhonTracer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KasumiKitsune%2FPhonTracer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KasumiKitsune","download_url":"https://codeload.github.com/KasumiKitsune/PhonTracer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KasumiKitsune%2FPhonTracer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33717419,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["acoustic-phonetics","dialectology","gui","linguistics","parselmouth","phonetics","praat","python","speech-analysis","tone-extraction"],"created_at":"2026-05-28T14:00:34.532Z","updated_at":"2026-05-31T03:02:13.303Z","avatar_url":"https://github.com/KasumiKitsune.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"assets/logo.png\" alt=\"PhonTracer Logo\" width=\"180\"\u003e\n  \u003ch1\u003ePhonTracer\u003c/h1\u003e\n  \u003cp\u003e\u003cstrong\u003e面向语音学标注与声学分析的桌面工具套件\u003c/strong\u003e\u003c/p\u003e\n\n  \u003cp\u003e\n    \u003ca href=\"https://github.com/KasumiKitsune/PhonTracer/releases\"\u003e\u003cimg src=\"https://img.shields.io/badge/release-v1.2.0-blue.svg\" alt=\"Release\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://www.python.org/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Python-3.12-3776AB?logo=python\u0026logoColor=white\" alt=\"Python\"\u003e\u003c/a\u003e\n    \u003ca href=\"#安装\"\u003e\u003cimg src=\"https://img.shields.io/badge/platform-Windows%20%7C%20macOS-lightgrey.svg\" alt=\"Platform\"\u003e\u003c/a\u003e\n    \u003cimg src=\"https://img.shields.io/badge/UI-CustomTkinter-blue\" alt=\"UI\"\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n---\n\n### \u003cimg src=\"https://img.icons8.com/material-rounded/24/000000/info.png\" width=\"20\" style=\"vertical-align: middle;\"/\u003e 项目简介\n\n\u003e **PhonTracer** 是一个面向语音学标注与声学分析的桌面工具套件，支持批量提取和人工复核声调 `F0`、共振峰 `F1/F2`，并提供 `.teproj` 工程保存、异常提示、多说话人管理、科学图表导出和 Windows 命令行工作台。\n\n项目底层通过 [Parselmouth](https://parselmouth.readthedocs.io/) 调用 **Praat** 的声学分析能力，适合需要“自动提取 + 可视化复核 + 批量导出”工作流的研究和教学场景。\n\n---\n\n### \u003cimg src=\"https://img.icons8.com/material-rounded/24/000000/star.png\" width=\"20\" style=\"vertical-align: middle;\"/\u003e 核心能力\n\n- **双分析模式**：支持声调 `F0` 与共振峰 `F1/F2` 提取，可按任务切换分析模式。\n- **自动分析与人工复核结合**：在声谱图中查看轮廓、试听音频、调整边界，并删除明显异常的分析点。\n- **两类导入流程**：支持“长音频 + 字表”切分，也支持批量导入独立音频文件。\n- **TextGrid 互操作**：支持导入和导出 TextGrid，便于与 Praat 工作流衔接。\n- **多说话人管理**：每位说话人拥有独立的 F0 与共振峰参数，可按说话人导出结果。\n- **异常提示**：在项目树中提示边界问题、分析点缺失、跳变异常和跨边界拆分风险，帮助用户定位需要复核的条目。\n- **工程归档**：通过 `.teproj` 保存音频、分析结果、参数和人工修改，便于中断后继续工作。\n- **科学图表导出**：支持 `PNG`、`SVG` 和 `PDF`，覆盖 F0 轮廓、分布、密度、热图以及共振峰空间和轨迹等图表。\n\n---\n\n### \u003cimg src=\"https://img.icons8.com/material-rounded/24/000000/layers.png\" width=\"20\" style=\"vertical-align: middle;\"/\u003e 套件组成\n\n\u003ctable width=\"100%\"\u003e\n  \u003ctr\u003e\n    \u003cth width=\"20%\"\u003e入口\u003c/th\u003e\n    \u003cth width=\"50%\"\u003e用途\u003c/th\u003e\n    \u003cth width=\"30%\"\u003e平台说明\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cb\u003ePhonTracer\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003e主桌面程序：导入、分析、人工复核、异常检查、工程保存和导出\u003c/td\u003e\n    \u003ctd\u003eWindows、macOS\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cb\u003eAudioToolkit\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003e独立音频工具箱：音频合并、长音频切分、批量整理和工程预览\u003c/td\u003e\n    \u003ctd\u003eWindows、macOS\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cb\u003ePhonTracerCLI\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003e面向批处理与 AI 代理的命令行工作台\u003c/td\u003e\n    \u003ctd\u003e当前随 Windows 套件发布\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\n### \u003cimg src=\"https://img.icons8.com/material-rounded/24/000000/process.png\" width=\"20\" style=\"vertical-align: middle;\"/\u003e 工作流程\n\n```mermaid\nflowchart LR\n    %% ================= 样式库 =================\n    classDef input fill:#E3F2FD,stroke:#1E88E5,stroke-width:2px,color:#000\n    classDef route fill:#FFF3E0,stroke:#FB8C00,stroke-width:2px,color:#000\n    classDef core fill:#FCE4EC,stroke:#D81B60,stroke-width:2px,color:#000\n    classDef ui fill:#E8F5E9,stroke:#43A047,stroke-width:2px,color:#000\n    classDef export fill:#F3E5F5,stroke:#8E24AA,stroke-width:2px,color:#000\n\n    A[\"音频、字表或 TextGrid\"]:::input --\u003e B{\"选择导入方式\"}:::route\n    B --\u003e C[\"长音频切分\"]:::route\n    B --\u003e D[\"独立音频批量导入\"]:::route\n    B --\u003e E[\"TextGrid 导入\"]:::route\n    C --\u003e F{\"选择分析模式\"}:::core\n    D --\u003e F\n    E --\u003e F\n    F --\u003e G[\"声调 F0\"]:::core\n    F --\u003e H[\"共振峰 F1/F2\"]:::core\n    G --\u003e I[\"声谱图试听与人工复核\"]:::ui\n    H --\u003e I\n    I --\u003e J[\"异常提示与条目检查\"]:::ui\n    J --\u003e K[\"TXT、TextGrid、XLSX、图表导出\"]:::export\n    I --\u003e L[\"保存 .teproj 工程\"]:::export\n```\n\n**一个典型工作流如下：**\n\n1. 创建或切换说话人，并设置适合该说话人的分析参数。\n2. 导入长音频和字表、批量导入独立音频，或载入已有 TextGrid。\n3. 选择声调 `F0` 或共振峰 `F1/F2` 模式并执行分析。\n4. 在声谱图中试听音频、检查分段边界和分析点，必要时手动修正。\n5. 根据项目树中的异常提示复核可疑条目。\n6. 导出所需的数据报告、科学图表或 TextGrid。\n7. 将当前工作保存为 `.teproj` 工程，便于后续继续分析。\n\n---\n\n### \u003cimg src=\"https://img.icons8.com/material-rounded/24/000000/settings.png\" width=\"20\" style=\"vertical-align: middle;\"/\u003e 分析模式\n\n#### 声调 F0\n- 默认通过 Parselmouth 调用 Praat 自相关音高分析。\n- 可切换 REAPER 作为替代 F0 引擎，用于对比不同录音和任务条件下的结果。\n- 支持设置音高下限、音高上限、静音阈值、前端跳过比例和浊音阈值。\n- 支持按说话人估计推荐 F0 范围。\n- 支持在声谱图中检查轮廓，并删除明显异常的 F0 点。\n\n#### 共振峰 F1/F2\n- 通过 Parselmouth 调用 Praat 的 Burg 共振峰分析。\n- 支持提取和显示 `F1`、`F2`，内部同时保留 `F3` 数据用于导出和检查。\n- 支持在声谱图中检查共振峰轨迹，并删除明显异常的分析点。\n- 支持根据当前说话人的样本生成参数建议。\n\n**共振峰主要参数说明：**\n\n| 参数 | 内部字段 | 默认值 | 说明 |\n| --- | --- | --- | --- |\n| 最大共振峰频率 | `formant_max_hz` | `5500` | 控制共振峰搜索范围 |\n| 共振峰数量 | `formant_count` | `5` | Praat Burg 分析参数 |\n| 窗长 | `formant_window_length` | `0.025` | 单位为秒 |\n| 预加重 | `formant_pre_emphasis` | `50` | 单位为赫兹 |\n| 采样策略 | `formant_sample_strategy` | `整段11点` | 控制导出时的采样位置 |\n\n---\n\n### \u003cimg src=\"https://img.icons8.com/material-rounded/24/000000/cursor.png\" width=\"20\" style=\"vertical-align: middle;\"/\u003e 输入与复核\n\n#### 输入方式\n\nPhonTracer 支持三类常见输入流程：\n\n| 输入方式 | 适用场景 | 说明 |\n| --- | --- | --- |\n| **长音频 + 字表** | 连续录音按词条拆分 | 字表支持分组标题；程序根据音频分析和条目顺序生成切分结果 |\n| **独立音频批量导入** | 每个词条已有单独音频文件 | 可批量导入 `WAV` 和 `MP3` 文件 |\n| **TextGrid 导入** | 已有 Praat 标注或需要继续复核 | 支持载入已有分段信息，并在当前工程中继续分析 |\n\n#### 人工复核与异常提示\n\n自动提取不是最终结论。PhonTracer 将分析结果放回可试听、可编辑的声谱图界面，帮助用户完成复核：\n\n- 播放当前音频并查看声谱图\n- 调整词条和字符边界\n- 检查 F0 轮廓或共振峰轨迹\n- 删除明显异常的分析点\n- 在项目树中定位“需要检查”的条目\n\n\u003e [!NOTE]\n\u003e 项目树会针对边界异常、分析点缺失、有效点比例不足、跳变异常以及跨边界拆分风险给出提示。提示用于辅助人工检查，不应被理解为自动质量认证。\n\n---\n\n### \u003cimg src=\"https://img.icons8.com/material-rounded/24/000000/save.png\" width=\"20\" style=\"vertical-align: middle;\"/\u003e 工程保存与恢复\n\nPhonTracer 使用 `.teproj` 作为可移植工程归档格式。工程可保存：\n\n- 说话人和参数设置\n- 导入的音频\n- 条目、分组和边界信息\n- F0 与共振峰分析结果\n- 人工删除或调整后的分析状态\n\n导入已有工程时，程序会先显示预览；如果当前工作区已有内容，可选择覆盖或叠加导入。\n\n\u003e [!TIP]\n\u003e 启用自动保存后，程序会将当前状态写入内部恢复工作区，并在下次启动时提供恢复提示。需要跨设备传输、迁移或分享时，请显式导出 `.teproj` 工程。\n\n---\n\n### \u003cimg src=\"https://img.icons8.com/material-rounded/24/000000/export.png\" width=\"20\" style=\"vertical-align: middle;\"/\u003e 导出能力\n\n| 类别 | 格式 | 适用场景 |\n| --- | --- | --- |\n| **文本数据** | `TXT` | 轻量查看和后续脚本处理；文本结果采用制表符分隔 |\n| **Praat 标注** | `TextGrid` | 与 Praat 标注和复核流程无缝衔接 |\n| **表格分析** | `XLSX` | 批量结果、原始数据和分析图表 |\n| **科学图表** | `PNG`、`SVG`、`PDF` | 报告、论文制图和批量图表归档 |\n| **工程归档** | `.teproj` | 保存完整分析状态，便于恢复、迁移和分享 |\n\n#### 科学图表\n\n图表导出器支持当前说话人、分说话人和综合视图，可导出 `PNG`、`SVG` 与 `PDF`。支持预览、分页和取消导出。\n\n- **F0 图表**：F0 轮廓图、F0 分布图、F0 密度图、数据质量图、综合热图。\n- **共振峰图表**：共振峰空间图、共振峰轨迹图、共振峰密度图、共振峰综合热图。\n\n---\n\n### \u003cimg src=\"https://img.icons8.com/material-rounded/24/000000/download.png\" width=\"20\" style=\"vertical-align: middle;\"/\u003e 安装与快速开始\n\n#### 安装\n\n请优先从 [GitHub Releases](https://github.com/KasumiKitsune/PhonTracer/releases) 下载已构建版本。\n\n**Windows**\n- 安装版：运行发布页中的安装程序。\n- 便携版：解压发布页中的 Windows 压缩包后运行 `PhonTracer.exe`。\n- 安装程序会注册 `.teproj` 文件关联，并提供 `PhonTracer`、`AudioToolkit` 和 `PhonTracerCLI` 快捷入口。\n\n**macOS**\n- 下载发布页中的 `DMG`。\n- 打开镜像后，将应用拖入“应用程序”目录。\n\n\u003e 当前 Windows 套件包含命令行入口；macOS 主要提供图形界面应用。\n\n#### 从源码运行\n\n建议使用 Python 3.12 环境：\n\n```bash\ngit clone https://github.com/KasumiKitsune/PhonTracer.git\ncd PhonTracer\npython -m pip install -r requirements.txt\npython main.py\n```\n\n其他入口的启动方式：\n```bash\npython audio_toolkit.py\npython cli.py\n```\n\n#### Windows CLI 示例\n\n打包后的命令行执行示例：\n```powershell\nPhonTracerCLI.exe status\nPhonTracerCLI.exe help export\nPhonTracerCLI.exe modify_params analysis_mode=f0\nPhonTracerCLI.exe modify_params analysis_mode=formant\n```\n\n---\n\n### \u003cimg src=\"https://img.icons8.com/material-rounded/24/000000/book.png\" width=\"20\" style=\"vertical-align: middle;\"/\u003e 详细手册与更多资源\n\nREADME 只提供快速概览。完整操作步骤、参数说明和进阶工作流请查看：\n- 📖 **[详细用户手册](assets/manual/manual.md)**\n\n#### 验证与测试\n\n```bash\npython -m pytest -q\npython -m compileall -q main.py cli.py audio_toolkit.py modules tests\n```\n\u003e 在 `v1.2.0` 对应代码上，使用 Python 3.12 执行测试：`167 passed, 4 warnings`。\n\n#### 更新与发布\n- 可在软件的“关于”窗口中手动检查 GitHub Releases 更新。\n- GitHub Actions 会在手动触发或推送版本标签时基于 `ToneExtractor_Suite.spec` 构建发布套件。\n\n---\n\n### \u003cimg src=\"https://img.icons8.com/material-rounded/24/000000/error.png\" width=\"20\" style=\"vertical-align: middle;\"/\u003e 已知边界\n\n- 自动分析结果会受到录音质量、说话人参数和分段边界影响，正式使用前仍应人工复核。\n- F0 范围估计和共振峰参数建议用于辅助配置，不是最终分析结论。\n- 主程序与 `AudioToolkit` 的拖拽行为不同：主程序支持窗口级拖拽，`AudioToolkit` 请使用界面按钮导入。\n- 自动保存用于内部恢复；需要归档、迁移或分享时，请显式导出 `.teproj` 工程。\n- 当前命令行入口随 Windows 套件发布。\n\n---\n\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"assets/icon.png\" alt=\"PhonTracer Icon\" width=\"60\"\u003e\n  \u003cp\u003e© 2026 KasumiKitsune\u003c/p\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkasumikitsune%2Fphontracer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkasumikitsune%2Fphontracer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkasumikitsune%2Fphontracer/lists"}