agent-ear 0.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. agent_ear-0.2.0.dist-info/METADATA +217 -0
  2. agent_ear-0.2.0.dist-info/RECORD +52 -0
  3. agent_ear-0.2.0.dist-info/WHEEL +5 -0
  4. agent_ear-0.2.0.dist-info/entry_points.txt +2 -0
  5. agent_ear-0.2.0.dist-info/licenses/LICENSE +21 -0
  6. agent_ear-0.2.0.dist-info/top_level.txt +1 -0
  7. ear/__init__.py +3 -0
  8. ear/_data/schema/audio-score.schema.json +978 -0
  9. ear/_data/schema/examples/basic.json +1198 -0
  10. ear/_data/schema/examples/events.json +530 -0
  11. ear/_data/schema/examples/precise.json +3383 -0
  12. ear/_data/skill/SKILL.md +140 -0
  13. ear/_data/skill/references/direct-vs-transcribe.md +100 -0
  14. ear/_data/skill/references/output-schema.md +137 -0
  15. ear/_data/skill/references/request-strategies.md +94 -0
  16. ear/_data/skill/scripts/agent-ear +6 -0
  17. ear/_data/skill/scripts/agent-ear.cmd +8 -0
  18. ear/_data/skill/scripts/agent-ear.ps1 +7 -0
  19. ear/_vendor/pretrainedsed/LICENSE +21 -0
  20. ear/_vendor/pretrainedsed/config.py +28 -0
  21. ear/_vendor/pretrainedsed/data_util/audioset_classes.py +1393 -0
  22. ear/_vendor/pretrainedsed/ear_runner.py +155 -0
  23. ear/_vendor/pretrainedsed/models/beats/BEATs.py +183 -0
  24. ear/_vendor/pretrainedsed/models/beats/BEATs_wrapper.py +56 -0
  25. ear/_vendor/pretrainedsed/models/beats/Tokenizers.py +172 -0
  26. ear/_vendor/pretrainedsed/models/beats/backbone.py +783 -0
  27. ear/_vendor/pretrainedsed/models/beats/modules.py +218 -0
  28. ear/_vendor/pretrainedsed/models/beats/quantizer.py +215 -0
  29. ear/_vendor/pretrainedsed/models/prediction_wrapper.py +213 -0
  30. ear/_vendor/pretrainedsed/models/seq_models.py +40 -0
  31. ear/_vendor/pretrainedsed/models/transformer_wrapper.py +19 -0
  32. ear/aed_psed.py +70 -0
  33. ear/aed_registry.py +64 -0
  34. ear/asr_qwen.py +198 -0
  35. ear/beats.py +105 -0
  36. ear/cli.py +751 -0
  37. ear/config.py +185 -0
  38. ear/context.py +42 -0
  39. ear/doctor.py +73 -0
  40. ear/events_panns.py +167 -0
  41. ear/fuse.py +233 -0
  42. ear/install.py +186 -0
  43. ear/media.py +148 -0
  44. ear/models.py +192 -0
  45. ear/omni.py +329 -0
  46. ear/probe.py +104 -0
  47. ear/render.py +181 -0
  48. ear/requests.py +49 -0
  49. ear/routing.py +45 -0
  50. ear/score.py +250 -0
  51. ear/setup.py +156 -0
  52. ear/text_llm.py +49 -0
@@ -0,0 +1,217 @@
1
+ Metadata-Version: 2.4
2
+ Name: agent-ear
3
+ Version: 0.2.0
4
+ Summary: Give text-only agents an offline ear: audio/video -> a time-indexed audio score.
5
+ Author: agent-ear contributors
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/HudsonHuang/agent-ear
8
+ Project-URL: Repository, https://github.com/HudsonHuang/agent-ear
9
+ Project-URL: Issues, https://github.com/HudsonHuang/agent-ear/issues
10
+ Keywords: audio,agent,skill,transcription,audio-tagging,video-editing
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Operating System :: MacOS
14
+ Classifier: Operating System :: POSIX :: Linux
15
+ Classifier: Operating System :: Microsoft :: Windows
16
+ Classifier: Topic :: Multimedia :: Sound/Audio :: Analysis
17
+ Requires-Python: >=3.10
18
+ Description-Content-Type: text/markdown
19
+ License-File: LICENSE
20
+ Requires-Dist: numpy>=1.24
21
+ Requires-Dist: requests>=2.31
22
+ Requires-Dist: soundfile>=0.12
23
+ Requires-Dist: jsonschema>=4.0
24
+ Provides-Extra: local
25
+ Requires-Dist: torch>=2.2; extra == "local"
26
+ Requires-Dist: torchaudio>=2.2; extra == "local"
27
+ Requires-Dist: beat-this>=0.1; extra == "local"
28
+ Requires-Dist: panns-inference>=0.1; extra == "local"
29
+ Requires-Dist: silero-vad>=5.0; extra == "local"
30
+ Requires-Dist: librosa>=0.10; extra == "local"
31
+ Provides-Extra: dev
32
+ Requires-Dist: pytest>=8; extra == "dev"
33
+ Requires-Dist: build>=1.0; extra == "dev"
34
+ Requires-Dist: twine>=5; extra == "dev"
35
+ Dynamic: license-file
36
+
37
+ # agent-ear
38
+
39
+ 给没有音频通道的文本 Agent 一副**离线耳朵**:把音频/视频编译成同一时间轴上的 `audio-score.json`,再整理成层级化、带时间戳的 `hearing.md`。任何文本模型都能读,不需要模型本身支持音频。
40
+
41
+ > 状态:basic(Omni 详细转录)与 precise(Omni 前置 + 按需精修)已实现。
42
+ > 定位:**local-first, cloud optional**。basic 需要 Qwen API Key;`privacy` 模式不调用 API。
43
+ > 边界:只做离线文件;不做 Live Translation、实时流、空间声学、声纹身份、完整音乐总谱。
44
+
45
+ ## 安装
46
+
47
+ ### macOS / Linux
48
+
49
+ ```bash
50
+ curl -fsSL https://raw.githubusercontent.com/HudsonHuang/agent-ear/main/install.sh -o /tmp/agent-ear-install.sh
51
+ sh /tmp/agent-ear-install.sh
52
+ ```
53
+
54
+ 或手动:
55
+
56
+ ```bash
57
+ uv tool install "agent-ear" # 只装 basic(推荐先这样)
58
+ # uv tool install "agent-ear[local]" # precise 需要:torch/BEATs/Beat This!,体积较大
59
+ agent-ear setup
60
+ ```
61
+
62
+ ### Windows(原生,PowerShell)
63
+
64
+ ```powershell
65
+ winget install Gyan.FFmpeg
66
+ uv tool install agent-ear
67
+ agent-ear setup
68
+ ```
69
+
70
+ 如果 GitHub 脚本可用:
71
+
72
+ ```powershell
73
+ irm https://raw.githubusercontent.com/HudsonHuang/agent-ear/main/install.ps1 | iex
74
+ ```
75
+
76
+ Windows 需要 `ffmpeg`/`ffprobe` 在 PATH;`uv tool install` 默认把 `agent-ear.exe` 放到 `%USERPROFILE%\.local\bin`。
77
+
78
+ ### 安装向导会问什么
79
+
80
+ `agent-ear setup` 会:
81
+
82
+ 1. 检查 ffmpeg/ffprobe;
83
+ 2. 询问 **Qwen API Key**(隐藏输入,不回显);
84
+ 3. 可选自定义 base URL(默认 `https://dashscope.aliyuncs.com`);
85
+ 4. 检查 Key;
86
+ 5. 选择要安装的 Agent:Codex / DSH / Claude Code;
87
+ 6. 写 `~/.config/agent-ear/config.json`(Windows: `%APPDATA%\agent-ear\config.json`,0600);
88
+ 7. 安装 Skill,跑 doctor + 本地 smoke test。
89
+
90
+ Key 也可以走环境变量:`DASHSCOPE_API_KEY`(优先级最高)。
91
+
92
+ ## 快速使用
93
+
94
+ ```bash
95
+ # 问答:一次 Omni 调用,同时返回完整分析 + 答案
96
+ agent-ear ask input.mp4 "这段音频里发生了什么?"
97
+
98
+ # 详细转录:完整 transcript/events/music,0.5–2s 时间戳
99
+ agent-ear listen input.mp4 --mode basic --out .ear/my-video
100
+
101
+ # 精确:词级 ASR + 40ms 事件 + beat grid
102
+ agent-ear listen input.mp4 --mode precise --need transcript,events,beat --out .ear/my-video-precise
103
+
104
+ # 长视频只要笑声:不转写,只跑目标事件
105
+ agent-ear listen long.mp4 --mode basic --request "把视频里所有笑声都剪出来"
106
+ agent-ear listen long.mp4 --mode precise --request "把视频里所有笑声都剪出来"
107
+
108
+ # 问已保存的转录,不重新调 Omni
109
+ agent-ear ask --score .ear/my-video "谁在什么时候笑了?"
110
+ ```
111
+
112
+ 读结果:
113
+
114
+ ```bash
115
+ cat .ear/my-video/hearing.md
116
+ agent-ear digest .ear/my-video/audio-score.json --level 1
117
+ ```
118
+
119
+ ## 输出
120
+
121
+ ```text
122
+ .ear/<name>-<hash>/
123
+ ├── audio-score.json # 唯一事实源,schema 校验
124
+ ├── audio-score.json.gz
125
+ ├── hearing.md # 层级 Markdown:概览 / 章节 / 音乐 / 事件索引 / 限制
126
+ ├── digest.md # 章节级短摘要
127
+ ├── context.md # 给文本 LM 的完整上下文
128
+ └── work/ # 16k/32k wav
129
+ ```
130
+
131
+ - `audio-score.json`:speech/events/music/relations/timeline/views;事件带 `precision`(`omni-coarse` / `refined-40ms`)。
132
+ - `hearing.md`:给 Agent/人读;`# 音频纪要` + `## 概览` / `## 章节` / `## 音乐` / `## 事件索引` / `## 限制`。
133
+ - `context.md`:给文本 LM 的完整 transcript/events/music;`agent-ear ask --score` 直接使用,不再调 Omni。
134
+
135
+ ## 模式
136
+
137
+ | 模式 | 用途 | 时间精度 | 依赖 |
138
+ |---|---|---|---|
139
+ | `basic`(默认) | 详细转录、摘要、粗剪 | 0.5–2s | Qwen API |
140
+ | `precise` | 字幕、打轴、卡点、精剪 | 词级 + 40ms | Qwen + local extra |
141
+ | `music` | 音乐描述 + beat grid | BPM/beats | Qwen + local extra |
142
+ | `privacy` | 不上传 | 本地 | local extra(MOSS 未实现) |
143
+
144
+ `precise` 用 `--need transcript,events,beat` 显式指定;不指定时默认三项都跑。`--request` 会按自然语言只跑需要的层。
145
+
146
+ ## 实测(2026-11-11)
147
+
148
+ | 项 | 结果 |
149
+ |---|---:|
150
+ | 1 小时 basic 结构化 | 231s,RTF 0.064,¥0.211/音频小时 |
151
+ | 5 分钟 precise 全量 | 57s,RTF 0.19 |
152
+ | 5 分钟只要笑声 basic / precise | 15.2s / 24.1s;53/65 事件 refine |
153
+ | Omni 单模型 QA(180 条) | 87.2% |
154
+ | 直接 ask vs 一次转录+回答 | 87.2% vs 80.0%(全量) |
155
+ | 转录后强文本模型(40 条子集) | 77.5% |
156
+
157
+ 诚实结论:**basic 的价值是完整转录/时间轴/可审计,不是“QA 超过 Omni”**。单问题最高准确率仍是直接 `ask`;多问题/剪辑才值得先转录。详见 [直接 ask vs 转录后 ask](docs/direct-vs-transcribe.md)。
158
+
159
+ ## Codex / DSH / Claude
160
+
161
+ 安装后 Skill 位置:
162
+
163
+ - Codex:`$CODEX_HOME/skills/agent-ear`(默认 `~/.codex/skills/agent-ear`)
164
+ - DSH:`$DSH_HOME/skills/agent-ear`(默认 `~/.dsh/skills/agent-ear`)
165
+ - Claude Code:`~/.claude/skills/agent-ear`
166
+
167
+ Windows 下对应 `%USERPROFILE%\.codex\skills\agent-ear` 等。
168
+
169
+ Codex 重启后可用 `/skills` 查看;DSH 新会话可见;Claude 输入 `/agent-ear`。Skill 内部通过 `scripts/agent-ear`(Windows:`scripts\agent-ear.cmd`)调用 CLI。
170
+
171
+ > DSH 的 Skill 与 Plugin 不是一回事:Skill 放目录即可,不需要 `dsh plugin add` 或 `dsh.bundle.patch`。
172
+
173
+ ## Doctor / 配置 / 卸载
174
+
175
+ ```bash
176
+ agent-ear doctor --json # 依赖/config/skill/模型,不联网
177
+ agent-ear doctor --check-api # 额外检查 key
178
+ agent-ear config show # 不显示 key
179
+ agent-ear config set-key # 隐藏输入
180
+ agent-ear skill list
181
+ agent-ear uninstall --target codex
182
+ agent-ear uninstall --target all --purge
183
+ ```
184
+
185
+ ## 已知限制
186
+
187
+ - basic 是 0.5–2s 时间戳,不能精确打轴;要精确用 precise。
188
+ - precise 事件 refine 目前只覆盖可映射标签(如 Laughter);开放标签仍是 `omni-coarse`。
189
+ - 1 小时 basic 已实测;1 小时 precise 未实测。
190
+ - 5 分钟 precise 的 Qwen diarization 会过切说话人;长音频显式 `--speakers 2` 或合并。
191
+ - AED 选型不是永久的;`ear/aed_registry.py` 的 `LAST_REVIEWED` 超过 6 个月要重查。
192
+ - Windows 原生支持 basic/precise;`privacy` 的 MOSS 仍未实现。
193
+
194
+ ## 开发
195
+
196
+ ```bash
197
+ uv venv .venv --python 3.12
198
+ uv pip install --python .venv/bin/python -e ".[dev,local]"
199
+ .venv/bin/python -m pytest -q
200
+ .venv/bin/python -m ear.cli --help
201
+ ```
202
+
203
+ 模型缓存:`~/.cache/ear/models`(`EAR_MODEL_DIR` 可覆盖)。下载支持 `HTTPS_PROXY` / `EAR_DOWNLOAD_PROXY`。
204
+
205
+ ## 文档
206
+
207
+ - [Windows 原生支持](docs/windows.md)
208
+ - [输出 Schema](docs/output-schema.md)
209
+ - [按请求动态选策略](docs/request-strategies.md)
210
+ - [直接 ask vs 转录后 ask](docs/direct-vs-transcribe.md)
211
+ - [v2 架构](docs/architecture-v2.md)
212
+ - [水位结果](docs/eval-results-2026-11-11.md)
213
+ - [事件 refine](docs/refine-eval.md)
214
+ - [AED 选型与敞口](docs/aed-selection.md)
215
+ - [Roadmap](docs/roadmap.md)
216
+ - [Schema 示例](schema/examples/)
217
+ - [Skill 源文件](skills/agent-ear/SKILL.md)
@@ -0,0 +1,52 @@
1
+ agent_ear-0.2.0.dist-info/licenses/LICENSE,sha256=hwrtwEQGr45Wv3l_p6feRVCj_xmXcp7Eg030bu5nynM,1079
2
+ ear/__init__.py,sha256=6QEO_wqcLRMT-pm_Tyn-yTWZSD-01NMSuY_8lzEfZpw,101
3
+ ear/aed_psed.py,sha256=1mGltd9Z-L5YTYpy7rDZ_VmxnYGqLFHNGlfza2P4nMs,2312
4
+ ear/aed_registry.py,sha256=4BasDPpCe2lr4FzGO-zp3r4VW4vsAAdF3PPh_AfiD-w,1972
5
+ ear/asr_qwen.py,sha256=VNnDY0E3EDzydSbN9-JIEJsEtiRcnjxceBnJWOFHpDk,7662
6
+ ear/beats.py,sha256=8xFFODTTgaM7Uii2Z0AHqcDtKCoyIwj9g0g1wrXSI8w,3388
7
+ ear/cli.py,sha256=a5ymbO0EabTg2aJ4Vd1snoc4WfZnSoikjPWL62XhlYA,33462
8
+ ear/config.py,sha256=xTDDMOOvcYW4IgOZxeXHQF-WEe6enewMZ5rs-X-ilbk,6381
9
+ ear/context.py,sha256=ZXChzwUDNOuWCuAaoXt7WkxGDYeE6bzGNSVoytQa8qU,1678
10
+ ear/doctor.py,sha256=Qx6CR7QmlcL4CihjHY6q4vEr8N-X1kPtXjFR6v3RtKc,3151
11
+ ear/events_panns.py,sha256=k4KZ_eEZ3LlVjPZE8p8p30LrFoYsp1rQZhiSLKwPHuI,6598
12
+ ear/fuse.py,sha256=kI2kG2MgxKuq-XrJ8rsBecYQKvCEwzpCEnTlNtlVxb8,9291
13
+ ear/install.py,sha256=V1Pw4qIQ5w6K_WSyMo4oRTv0ELrJUI0ZkEexsZghI7w,6596
14
+ ear/media.py,sha256=RGt948GHWiDrKTBGjRge_4XXzx1rZyvhgySTg7BaVMM,5243
15
+ ear/models.py,sha256=NmNJpyUJlNhQtpdd1Dh0RQRhccqNkI9ljjWZg4T2C0E,6504
16
+ ear/omni.py,sha256=7Tq9QoO-9nRXAMObwueTBI_pxGSZdQOpnTJ7idp-GgY,13810
17
+ ear/probe.py,sha256=jihav14mVjicFfrNM4uvVCxi_9qBtJIJZJyS12qmCCE,3351
18
+ ear/render.py,sha256=0824s2VQLrSW2YjTqjl2XA7fnXCFLzA-iRZyAIfHZoo,7539
19
+ ear/requests.py,sha256=nfVOTmjlTwDZV64opJA9AMI17V_vQ59co07CUU4mtzA,2238
20
+ ear/routing.py,sha256=o6PwGlnG5EbkkPtwc4lZ2gShoVbNCyCd4JmKZc256DY,1793
21
+ ear/score.py,sha256=z-5FvMeO8PWJzpRJW5_-tUlbHS-sz8-KXpQiaNFRcaE,10066
22
+ ear/setup.py,sha256=PYpeoQm8c62HnxX4P7cTynxdcCio6KGYrPEY7gfwCvU,6272
23
+ ear/text_llm.py,sha256=lHcXQfkLf38mxDEaIhy9eWWPG-Rz1Pokk76pT8fHAtY,2104
24
+ ear/_data/schema/audio-score.schema.json,sha256=_WV0oGip5b6Ent3_kjh6rxs5XPdgVLOG5gOQ4siqd7o,19212
25
+ ear/_data/schema/examples/basic.json,sha256=FXX-Xc_tSfEskr2GkA5aYcd-QbBFN4NtKIYGDwQh_ZA,28490
26
+ ear/_data/schema/examples/events.json,sha256=faMxvCsg4MDIF0uy_aA4eb1ec4wrNNfADyZp33usJ_A,11479
27
+ ear/_data/schema/examples/precise.json,sha256=kMMi_MGbx64XDqaSqzNBpsg9XTKvx7fZgrMo_ywLZBI,73386
28
+ ear/_data/skill/SKILL.md,sha256=DkW_Eag1yoa4vg9wj0jtSjLtquWcjdvZQsbFlTnugoQ,4875
29
+ ear/_data/skill/references/direct-vs-transcribe.md,sha256=sp_STMRrR-2SfrogNIedDBcRuwIIwbzC45X8qBfXTa0,5631
30
+ ear/_data/skill/references/output-schema.md,sha256=HW3MpbkforxfVhJLLDPit9fHnRRegJdk1vJ7e_DLml8,4850
31
+ ear/_data/skill/references/request-strategies.md,sha256=5OvSOC7thoMa5NUEHOv1FTPW3pBcROsrxFPuNI-Rzt0,3681
32
+ ear/_data/skill/scripts/agent-ear,sha256=Jq0TZ32btUTPCaD4UbX5oNmJanbpRvcdEwpbjFYoDsc,129
33
+ ear/_data/skill/scripts/agent-ear.cmd,sha256=0b1TZWvQZ--LXobkpUFv1V_L9wvMo3PR8dkd6sA9MsQ,120
34
+ ear/_data/skill/scripts/agent-ear.ps1,sha256=mQT-ZN5RKzqUo8LRcMFPtwz6fJdt4vjdv-aqhVBYmRQ,137
35
+ ear/_vendor/pretrainedsed/LICENSE,sha256=OZrMbZA8_WWmzVurpqma8-5TTXkWGweFTBpv_qs9yIs,1071
36
+ ear/_vendor/pretrainedsed/config.py,sha256=EOQBIHapuITRIiybGZuLvXqRZ3XUbRwkJcJk0Szr5oM,1372
37
+ ear/_vendor/pretrainedsed/ear_runner.py,sha256=Fr-gdJ9kbEFDeIWnGykcD6AOvhYoxSgi7AkcnIkmNMY,5481
38
+ ear/_vendor/pretrainedsed/data_util/audioset_classes.py,sha256=dxrbY3aLNJFxoWaLSwwvky9tsbIeEEUMfpE2wDl-B28,54411
39
+ ear/_vendor/pretrainedsed/models/prediction_wrapper.py,sha256=U_N_eHCoXmQkLQfdCH_7THKoqEE9Q6WTq0a7qFs5g-s,10385
40
+ ear/_vendor/pretrainedsed/models/seq_models.py,sha256=16wquWfOZePa19089xcWOhB-jMC1e9qw13WnLwdcpmc,1163
41
+ ear/_vendor/pretrainedsed/models/transformer_wrapper.py,sha256=jKcoRHXkfcAKX0dr2Nk3QA41yVrjFkuP2REVBcSk3ug,506
42
+ ear/_vendor/pretrainedsed/models/beats/BEATs.py,sha256=x9ukbZ-DoJsAljN4FnlaIjnLq1-el5xVjFfxWVNmd2U,6931
43
+ ear/_vendor/pretrainedsed/models/beats/BEATs_wrapper.py,sha256=K4tztnUsWP618mQy5lnTNFpo7xD1koxK-McO7SPW4E8,2041
44
+ ear/_vendor/pretrainedsed/models/beats/Tokenizers.py,sha256=_Msfr8Nc1-lHRZNAiwcevgXbvnyHeWXtt3EwVSYX4Gg,6429
45
+ ear/_vendor/pretrainedsed/models/beats/backbone.py,sha256=Xfk--IPS_qD5o3Y8qpNpC3BpBQlNbscn-G9oqCe4fF0,30779
46
+ ear/_vendor/pretrainedsed/models/beats/modules.py,sha256=xLQXCxxChnF7YGeI9hegp2ivB2zeqqmx01v3DWw4Wf4,7386
47
+ ear/_vendor/pretrainedsed/models/beats/quantizer.py,sha256=Mi8fVfTVIu6SfQNucPk-XhW_D_Nqbe9bRYfefDUFNZA,8171
48
+ agent_ear-0.2.0.dist-info/METADATA,sha256=VRn95N7rjdJAd-_CNaEIA4mjrfIh4d_YO3-vHaK68ZA,8560
49
+ agent_ear-0.2.0.dist-info/WHEEL,sha256=mOdXR9C3wMVov7cSY8PY-XCzo3SmmWCHvGQr5csJoao,91
50
+ agent_ear-0.2.0.dist-info/entry_points.txt,sha256=Z191ozvwL7gzaYyssiIZejFJh1KaTO123eA-6rxVHEc,43
51
+ agent_ear-0.2.0.dist-info/top_level.txt,sha256=b1z7E33IPyW9p9kWpE2Kpypr6qb_dorXsTqlWLYWySc,4
52
+ agent_ear-0.2.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.2.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ agent-ear = ear.cli:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 agent-ear contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ ear
ear/__init__.py ADDED
@@ -0,0 +1,3 @@
1
+ """Ear: compile audio/video into a time-indexed, LLM-readable audio score."""
2
+
3
+ __version__ = "0.2.0"