agent-cli 0.75.0__tar.gz → 0.76.1__tar.gz

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 (367) hide show
  1. {agent_cli-0.75.0 → agent_cli-0.76.1}/PKG-INFO +3 -3
  2. {agent_cli-0.75.0 → agent_cli-0.76.1}/README.md +1 -1
  3. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/_extras.json +2 -2
  4. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/_requirements/vad.txt +20 -2
  5. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/core/vad.py +121 -13
  6. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/install/extras.py +2 -2
  7. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/sync_extras.py +4 -3
  8. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/cli.py +15 -7
  9. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/architecture/index.md +1 -1
  10. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/commands/install-extras.md +1 -1
  11. {agent_cli-0.75.0 → agent_cli-0.76.1}/pyproject.toml +1 -1
  12. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/core/test_vad.py +22 -24
  13. {agent_cli-0.75.0 → agent_cli-0.76.1}/uv.lock +2 -22
  14. {agent_cli-0.75.0 → agent_cli-0.76.1}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
  15. {agent_cli-0.75.0 → agent_cli-0.76.1}/.claude/skills/agent-cli-dev/examples.md +0 -0
  16. {agent_cli-0.75.0 → agent_cli-0.76.1}/.claude-plugin/README.md +0 -0
  17. {agent_cli-0.75.0 → agent_cli-0.76.1}/.claude-plugin/marketplace.json +0 -0
  18. {agent_cli-0.75.0 → agent_cli-0.76.1}/.claude-plugin/plugin.json +0 -0
  19. {agent_cli-0.75.0 → agent_cli-0.76.1}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
  20. {agent_cli-0.75.0 → agent_cli-0.76.1}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
  21. {agent_cli-0.75.0 → agent_cli-0.76.1}/.cursorrules +0 -0
  22. {agent_cli-0.75.0 → agent_cli-0.76.1}/.dockerignore +0 -0
  23. {agent_cli-0.75.0 → agent_cli-0.76.1}/.env.example +0 -0
  24. {agent_cli-0.75.0 → agent_cli-0.76.1}/.github/logo.svg +0 -0
  25. {agent_cli-0.75.0 → agent_cli-0.76.1}/.github/release-drafter.yml +0 -0
  26. {agent_cli-0.75.0 → agent_cli-0.76.1}/.github/renovate.json +0 -0
  27. {agent_cli-0.75.0 → agent_cli-0.76.1}/.github/scripts/check_extras_sync.py +0 -0
  28. {agent_cli-0.75.0 → agent_cli-0.76.1}/.github/scripts/sync_requirements.py +0 -0
  29. {agent_cli-0.75.0 → agent_cli-0.76.1}/.github/workflows/automerge.yml +0 -0
  30. {agent_cli-0.75.0 → agent_cli-0.76.1}/.github/workflows/docker.yml +0 -0
  31. {agent_cli-0.75.0 → agent_cli-0.76.1}/.github/workflows/docs.yml +0 -0
  32. {agent_cli-0.75.0 → agent_cli-0.76.1}/.github/workflows/markdown-code-runner.yml +0 -0
  33. {agent_cli-0.75.0 → agent_cli-0.76.1}/.github/workflows/pytest.yml +0 -0
  34. {agent_cli-0.75.0 → agent_cli-0.76.1}/.github/workflows/release-drafter.yml +0 -0
  35. {agent_cli-0.75.0 → agent_cli-0.76.1}/.github/workflows/release.yml +0 -0
  36. {agent_cli-0.75.0 → agent_cli-0.76.1}/.github/workflows/toc.yaml +0 -0
  37. {agent_cli-0.75.0 → agent_cli-0.76.1}/.gitignore +0 -0
  38. {agent_cli-0.75.0 → agent_cli-0.76.1}/.jscpd.json +0 -0
  39. {agent_cli-0.75.0 → agent_cli-0.76.1}/.pre-commit-config.yaml +0 -0
  40. {agent_cli-0.75.0 → agent_cli-0.76.1}/.prompts/docs-review.md +0 -0
  41. {agent_cli-0.75.0 → agent_cli-0.76.1}/.prompts/pr-review.md +0 -0
  42. {agent_cli-0.75.0 → agent_cli-0.76.1}/CLAUDE.md +0 -0
  43. {agent_cli-0.75.0 → agent_cli-0.76.1}/LICENSE +0 -0
  44. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/__init__.py +0 -0
  45. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/__main__.py +0 -0
  46. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/_requirements/.gitkeep +0 -0
  47. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/_requirements/audio.txt +0 -0
  48. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/_requirements/faster-whisper.txt +0 -0
  49. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/_requirements/kokoro.txt +0 -0
  50. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/_requirements/llm.txt +0 -0
  51. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/_requirements/memory.txt +0 -0
  52. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/_requirements/mlx-whisper.txt +0 -0
  53. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/_requirements/piper.txt +0 -0
  54. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/_requirements/rag.txt +0 -0
  55. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/_requirements/server.txt +0 -0
  56. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/_requirements/speed.txt +0 -0
  57. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/_requirements/whisper-transformers.txt +0 -0
  58. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/_requirements/wyoming.txt +0 -0
  59. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/_tools.py +0 -0
  60. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/agents/__init__.py +0 -0
  61. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/agents/_voice_agent_common.py +0 -0
  62. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/agents/assistant.py +0 -0
  63. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/agents/autocorrect.py +0 -0
  64. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/agents/chat.py +0 -0
  65. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/agents/memory/__init__.py +0 -0
  66. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/agents/memory/add.py +0 -0
  67. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/agents/memory/proxy.py +0 -0
  68. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/agents/rag_proxy.py +0 -0
  69. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/agents/speak.py +0 -0
  70. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/agents/transcribe.py +0 -0
  71. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/agents/transcribe_daemon.py +0 -0
  72. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/agents/voice_edit.py +0 -0
  73. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/api.py +0 -0
  74. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/cli.py +0 -0
  75. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/config.py +0 -0
  76. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/config_cmd.py +0 -0
  77. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/constants.py +0 -0
  78. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/core/__init__.py +0 -0
  79. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/core/audio.py +0 -0
  80. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/core/audio_format.py +0 -0
  81. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/core/chroma.py +0 -0
  82. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/core/deps.py +0 -0
  83. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/core/openai_proxy.py +0 -0
  84. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/core/process.py +0 -0
  85. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/core/reranker.py +0 -0
  86. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/core/sse.py +0 -0
  87. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/core/transcription_logger.py +0 -0
  88. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/core/utils.py +0 -0
  89. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/core/watch.py +0 -0
  90. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/__init__.py +0 -0
  91. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/cli.py +0 -0
  92. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/coding_agents/__init__.py +0 -0
  93. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/coding_agents/aider.py +0 -0
  94. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/coding_agents/base.py +0 -0
  95. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/coding_agents/claude.py +0 -0
  96. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/coding_agents/codex.py +0 -0
  97. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
  98. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/coding_agents/copilot.py +0 -0
  99. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
  100. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/coding_agents/gemini.py +0 -0
  101. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/coding_agents/opencode.py +0 -0
  102. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/coding_agents/registry.py +0 -0
  103. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/editors/__init__.py +0 -0
  104. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/editors/base.py +0 -0
  105. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/editors/cursor.py +0 -0
  106. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/editors/emacs.py +0 -0
  107. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/editors/jetbrains.py +0 -0
  108. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/editors/nano.py +0 -0
  109. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/editors/neovim.py +0 -0
  110. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/editors/registry.py +0 -0
  111. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/editors/sublime.py +0 -0
  112. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/editors/vim.py +0 -0
  113. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/editors/vscode.py +0 -0
  114. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/editors/zed.py +0 -0
  115. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/project.py +0 -0
  116. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/registry.py +0 -0
  117. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/skill/SKILL.md +0 -0
  118. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/skill/examples.md +0 -0
  119. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/terminals/__init__.py +0 -0
  120. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/terminals/apple_terminal.py +0 -0
  121. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/terminals/base.py +0 -0
  122. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/terminals/gnome.py +0 -0
  123. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/terminals/iterm2.py +0 -0
  124. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/terminals/kitty.py +0 -0
  125. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/terminals/registry.py +0 -0
  126. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/terminals/tmux.py +0 -0
  127. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/terminals/warp.py +0 -0
  128. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/terminals/zellij.py +0 -0
  129. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/dev/worktree.py +0 -0
  130. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/docs_gen.py +0 -0
  131. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/example-config.toml +0 -0
  132. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/install/__init__.py +0 -0
  133. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/install/common.py +0 -0
  134. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/install/hotkeys.py +0 -0
  135. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/install/services.py +0 -0
  136. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/memory/__init__.py +0 -0
  137. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/memory/_files.py +0 -0
  138. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/memory/_filters.py +0 -0
  139. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/memory/_git.py +0 -0
  140. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/memory/_indexer.py +0 -0
  141. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/memory/_ingest.py +0 -0
  142. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/memory/_persistence.py +0 -0
  143. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/memory/_prompt.py +0 -0
  144. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/memory/_retrieval.py +0 -0
  145. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/memory/_store.py +0 -0
  146. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/memory/_streaming.py +0 -0
  147. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/memory/_tasks.py +0 -0
  148. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/memory/api.py +0 -0
  149. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/memory/client.py +0 -0
  150. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/memory/engine.py +0 -0
  151. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/memory/entities.py +0 -0
  152. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/memory/models.py +0 -0
  153. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/opts.py +0 -0
  154. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/py.typed +0 -0
  155. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/rag/__init__.py +0 -0
  156. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/rag/_indexer.py +0 -0
  157. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/rag/_indexing.py +0 -0
  158. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/rag/_prompt.py +0 -0
  159. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/rag/_retriever.py +0 -0
  160. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/rag/_store.py +0 -0
  161. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/rag/_utils.py +0 -0
  162. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/rag/api.py +0 -0
  163. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/rag/client.py +0 -0
  164. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/rag/engine.py +0 -0
  165. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/rag/models.py +0 -0
  166. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/.runtime/.gitkeep +0 -0
  167. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/__init__.py +0 -0
  168. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/check_plugin_skill_sync.py +0 -0
  169. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
  170. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
  171. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
  172. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
  173. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
  174. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
  175. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
  176. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
  177. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
  178. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
  179. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
  180. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
  181. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
  182. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
  183. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/run-openwakeword.sh +0 -0
  184. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/run-piper-windows.ps1 +0 -0
  185. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/run-piper.sh +0 -0
  186. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/run-whisper-linux.sh +0 -0
  187. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/run-whisper-macos.sh +0 -0
  188. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/run-whisper-windows.ps1 +0 -0
  189. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/run-whisper.sh +0 -0
  190. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/run_faster_whisper_server.py +0 -0
  191. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
  192. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/setup-linux.sh +0 -0
  193. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
  194. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/setup-macos.sh +0 -0
  195. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/setup-windows.ps1 +0 -0
  196. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
  197. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/scripts/start-all-services.sh +0 -0
  198. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/__init__.py +0 -0
  199. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/common.py +0 -0
  200. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/model_manager.py +0 -0
  201. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/model_registry.py +0 -0
  202. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/proxy/__init__.py +0 -0
  203. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/proxy/api.py +0 -0
  204. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/streaming.py +0 -0
  205. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/tts/__init__.py +0 -0
  206. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/tts/api.py +0 -0
  207. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/tts/backends/__init__.py +0 -0
  208. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/tts/backends/base.py +0 -0
  209. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/tts/backends/kokoro.py +0 -0
  210. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/tts/backends/piper.py +0 -0
  211. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/tts/model_manager.py +0 -0
  212. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/tts/model_registry.py +0 -0
  213. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/tts/wyoming_handler.py +0 -0
  214. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/whisper/__init__.py +0 -0
  215. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/whisper/api.py +0 -0
  216. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/whisper/backends/__init__.py +0 -0
  217. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/whisper/backends/base.py +0 -0
  218. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
  219. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/whisper/backends/mlx.py +0 -0
  220. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/whisper/backends/transformers.py +0 -0
  221. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/whisper/languages.py +0 -0
  222. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/whisper/model_manager.py +0 -0
  223. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/whisper/model_registry.py +0 -0
  224. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/server/whisper/wyoming_handler.py +0 -0
  225. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/services/__init__.py +0 -0
  226. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/services/_wyoming_utils.py +0 -0
  227. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/services/asr.py +0 -0
  228. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/services/llm.py +0 -0
  229. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/services/tts.py +0 -0
  230. {agent_cli-0.75.0 → agent_cli-0.76.1}/agent_cli/services/wake_word.py +0 -0
  231. {agent_cli-0.75.0 → agent_cli-0.76.1}/docker/docker-compose.yml +0 -0
  232. {agent_cli-0.75.0 → agent_cli-0.76.1}/docker/memory-proxy.Dockerfile +0 -0
  233. {agent_cli-0.75.0 → agent_cli-0.76.1}/docker/rag-proxy.Dockerfile +0 -0
  234. {agent_cli-0.75.0 → agent_cli-0.76.1}/docker/transcribe-proxy.Dockerfile +0 -0
  235. {agent_cli-0.75.0 → agent_cli-0.76.1}/docker/tts.Dockerfile +0 -0
  236. {agent_cli-0.75.0 → agent_cli-0.76.1}/docker/whisper.Dockerfile +0 -0
  237. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/CNAME +0 -0
  238. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/architecture/memory.md +0 -0
  239. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/architecture/rag.md +0 -0
  240. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/commands/assistant.md +0 -0
  241. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/commands/autocorrect.md +0 -0
  242. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/commands/chat.md +0 -0
  243. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/commands/config.md +0 -0
  244. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/commands/dev.md +0 -0
  245. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/commands/index.md +0 -0
  246. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/commands/install-hotkeys.md +0 -0
  247. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/commands/install-services.md +0 -0
  248. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/commands/memory.md +0 -0
  249. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/commands/rag-proxy.md +0 -0
  250. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/commands/server/index.md +0 -0
  251. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/commands/server/transcribe-proxy.md +0 -0
  252. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/commands/server/tts.md +0 -0
  253. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/commands/server/whisper.md +0 -0
  254. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/commands/speak.md +0 -0
  255. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/commands/start-services.md +0 -0
  256. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/commands/transcribe-daemon.md +0 -0
  257. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/commands/transcribe.md +0 -0
  258. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/commands/voice-edit.md +0 -0
  259. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/configuration.md +0 -0
  260. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/getting-started.md +0 -0
  261. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/iOS_Shortcut_Guide.md +0 -0
  262. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/index.md +0 -0
  263. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/installation/docker.md +0 -0
  264. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/installation/index.md +0 -0
  265. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/installation/linux.md +0 -0
  266. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/installation/macos.md +0 -0
  267. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/installation/nixos.md +0 -0
  268. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/installation/windows.md +0 -0
  269. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/logo-clean.svg +0 -0
  270. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
  271. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/run_markdown_code_runner.py +0 -0
  272. {agent_cli-0.75.0 → agent_cli-0.76.1}/docs/system-integration.md +0 -0
  273. {agent_cli-0.75.0 → agent_cli-0.76.1}/example.agent-cli-config.toml +0 -0
  274. {agent_cli-0.75.0 → agent_cli-0.76.1}/justfile +0 -0
  275. {agent_cli-0.75.0 → agent_cli-0.76.1}/shell.nix +0 -0
  276. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/__init__.py +0 -0
  277. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/agents/__init__.py +0 -0
  278. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/agents/test_fix_my_text.py +0 -0
  279. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/agents/test_interactive.py +0 -0
  280. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/agents/test_interactive_extra.py +0 -0
  281. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/agents/test_memory_add.py +0 -0
  282. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/agents/test_speak.py +0 -0
  283. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/agents/test_speak_e2e.py +0 -0
  284. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/agents/test_transcribe.py +0 -0
  285. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/agents/test_transcribe_agent.py +0 -0
  286. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/agents/test_transcribe_daemon.py +0 -0
  287. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/agents/test_transcribe_e2e.py +0 -0
  288. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/agents/test_transcribe_recovery.py +0 -0
  289. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/agents/test_tts_common.py +0 -0
  290. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/agents/test_tts_common_extra.py +0 -0
  291. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/agents/test_voice_agent_common.py +0 -0
  292. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/agents/test_voice_edit.py +0 -0
  293. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/agents/test_voice_edit_e2e.py +0 -0
  294. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/agents/test_wake_word_assistant.py +0 -0
  295. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/conftest.py +0 -0
  296. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/core/__init__.py +0 -0
  297. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/core/test_audio_format.py +0 -0
  298. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/core/test_chroma.py +0 -0
  299. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/core/test_sse.py +0 -0
  300. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/core/test_watch.py +0 -0
  301. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/dev/__init__.py +0 -0
  302. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/dev/test_cli.py +0 -0
  303. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/dev/test_coding_agents.py +0 -0
  304. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/dev/test_editors.py +0 -0
  305. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/dev/test_project.py +0 -0
  306. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/dev/test_terminals.py +0 -0
  307. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/dev/test_verification.py +0 -0
  308. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/dev/test_worktree.py +0 -0
  309. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/install/__init__.py +0 -0
  310. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/install/test_extras.py +0 -0
  311. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/memory/__init__.py +0 -0
  312. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/memory/test_api_health.py +0 -0
  313. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/memory/test_api_integration_liveish.py +0 -0
  314. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/memory/test_client.py +0 -0
  315. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/memory/test_engine.py +0 -0
  316. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/memory/test_files.py +0 -0
  317. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/memory/test_filters.py +0 -0
  318. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/memory/test_git_integration.py +0 -0
  319. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/memory/test_indexer.py +0 -0
  320. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/memory/test_memory_integration.py +0 -0
  321. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/memory/test_proxy_passthrough.py +0 -0
  322. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/memory/test_store.py +0 -0
  323. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/memory/test_utils.py +0 -0
  324. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/mocks/__init__.py +0 -0
  325. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/mocks/audio.py +0 -0
  326. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/mocks/llm.py +0 -0
  327. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/mocks/wyoming.py +0 -0
  328. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/rag/__init__.py +0 -0
  329. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/rag/test_api.py +0 -0
  330. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/rag/test_engine.py +0 -0
  331. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/rag/test_history.py +0 -0
  332. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/rag/test_indexer.py +0 -0
  333. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/rag/test_indexing.py +0 -0
  334. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/rag/test_rag_client.py +0 -0
  335. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/rag/test_rag_integration_liveish.py +0 -0
  336. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/rag/test_rag_proxy_passthrough.py +0 -0
  337. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/rag/test_retriever.py +0 -0
  338. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/rag/test_store.py +0 -0
  339. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/rag/test_utils.py +0 -0
  340. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_api.py +0 -0
  341. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_api_integration.py +0 -0
  342. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_asr.py +0 -0
  343. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_asr_recovery.py +0 -0
  344. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_audio_e2e.py +0 -0
  345. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_cli.py +0 -0
  346. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_config.py +0 -0
  347. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_config_cmd.py +0 -0
  348. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_docs_gen.py +0 -0
  349. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_env_vars.py +0 -0
  350. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_json_output.py +0 -0
  351. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_llm.py +0 -0
  352. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_llm_gemini.py +0 -0
  353. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_memory_tools.py +0 -0
  354. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_mlx_backend.py +0 -0
  355. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_process_manager.py +0 -0
  356. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_requires_extras.py +0 -0
  357. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_server_streaming.py +0 -0
  358. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_server_tts.py +0 -0
  359. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_server_whisper.py +0 -0
  360. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_services.py +0 -0
  361. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_tools.py +0 -0
  362. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_transformers_backend.py +0 -0
  363. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_tts.py +0 -0
  364. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_utils.py +0 -0
  365. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_wake_word.py +0 -0
  366. {agent_cli-0.75.0 → agent_cli-0.76.1}/tests/test_wyoming_utils.py +0 -0
  367. {agent_cli-0.75.0 → agent_cli-0.76.1}/zensical.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-cli
3
- Version: 0.75.0
3
+ Version: 0.76.1
4
4
  Summary: A suite of AI-powered command-line tools for text correction, audio transcription, and voice assistance.
5
5
  Project-URL: Homepage, https://github.com/basnijholt/agent-cli
6
6
  Author-email: Bas Nijholt <bas@nijho.lt>
@@ -83,7 +83,7 @@ Requires-Dist: pytest-mock; extra == 'test'
83
83
  Requires-Dist: pytest-timeout; extra == 'test'
84
84
  Requires-Dist: pytest>=7.0.0; extra == 'test'
85
85
  Provides-Extra: vad
86
- Requires-Dist: silero-vad-lite>=0.2.1; extra == 'vad'
86
+ Requires-Dist: onnxruntime>=1.16.0; extra == 'vad'
87
87
  Provides-Extra: whisper-transformers
88
88
  Requires-Dist: fastapi[standard]; extra == 'whisper-transformers'
89
89
  Requires-Dist: torch>=2.0.0; extra == 'whisper-transformers'
@@ -516,7 +516,7 @@ agent-cli install-extras rag memory vad
516
516
 
517
517
  • rag - RAG proxy server (ChromaDB, embeddings)
518
518
  • memory - Long-term memory proxy (ChromaDB)
519
- • vad - Voice Activity Detection (silero-vad)
519
+ • vad - Voice Activity Detection (Silero VAD via ONNX)
520
520
  • audio - Local audio recording/playback
521
521
  • piper - Local Piper TTS engine
522
522
  • kokoro - Kokoro neural TTS engine
@@ -422,7 +422,7 @@ agent-cli install-extras rag memory vad
422
422
 
423
423
  • rag - RAG proxy server (ChromaDB, embeddings)
424
424
  • memory - Long-term memory proxy (ChromaDB)
425
- • vad - Voice Activity Detection (silero-vad)
425
+ • vad - Voice Activity Detection (Silero VAD via ONNX)
426
426
  • audio - Local audio recording/playback
427
427
  • piper - Local Piper TTS engine
428
428
  • kokoro - Kokoro neural TTS engine
@@ -63,9 +63,9 @@
63
63
  ]
64
64
  ],
65
65
  "vad": [
66
- "Voice Activity Detection (silero-vad)",
66
+ "Voice Activity Detection (Silero VAD via ONNX)",
67
67
  [
68
- "silero_vad"
68
+ "onnxruntime"
69
69
  ]
70
70
  ],
71
71
  "whisper-transformers": [
@@ -14,14 +14,20 @@ click==8.3.1
14
14
  # typer-slim
15
15
  colorama==0.4.6 ; sys_platform == 'win32'
16
16
  # via click
17
+ coloredlogs==15.0.1
18
+ # via onnxruntime
17
19
  dotenv==0.9.9
18
20
  # via agent-cli
21
+ flatbuffers==25.12.19
22
+ # via onnxruntime
19
23
  h11==0.16.0
20
24
  # via httpcore
21
25
  httpcore==1.0.9
22
26
  # via httpx
23
27
  httpx==0.28.1
24
28
  # via agent-cli
29
+ humanfriendly==10.0
30
+ # via coloredlogs
25
31
  idna==3.11
26
32
  # via
27
33
  # anyio
@@ -30,6 +36,16 @@ markdown-it-py==4.0.0
30
36
  # via rich
31
37
  mdurl==0.1.2
32
38
  # via markdown-it-py
39
+ mpmath==1.3.0
40
+ # via sympy
41
+ numpy==2.3.5
42
+ # via onnxruntime
43
+ onnxruntime==1.20.1
44
+ # via agent-cli
45
+ packaging==25.0
46
+ # via onnxruntime
47
+ protobuf==6.33.4
48
+ # via onnxruntime
33
49
  psutil==7.2.1 ; sys_platform == 'win32'
34
50
  # via agent-cli
35
51
  pydantic==2.12.5
@@ -40,6 +56,8 @@ pygments==2.19.2
40
56
  # via rich
41
57
  pyperclip==1.11.0
42
58
  # via agent-cli
59
+ pyreadline3==3.5.4 ; sys_platform == 'win32'
60
+ # via humanfriendly
43
61
  python-dotenv==1.2.1
44
62
  # via dotenv
45
63
  rich==14.2.0
@@ -53,8 +71,8 @@ shellingham==1.5.4
53
71
  # via
54
72
  # typer
55
73
  # typer-slim
56
- silero-vad-lite==0.2.1
57
- # via agent-cli
74
+ sympy==1.14.0
75
+ # via onnxruntime
58
76
  typer==0.21.1
59
77
  # via agent-cli
60
78
  typer-slim==0.21.1
@@ -1,24 +1,130 @@
1
- """Voice Activity Detection using Silero VAD for speech segmentation."""
1
+ """Voice Activity Detection using Silero VAD for speech segmentation.
2
+
3
+ Uses ONNX model with pure numpy inference (no torch dependency).
4
+ """
2
5
 
3
6
  from __future__ import annotations
4
7
 
5
8
  import logging
9
+ import urllib.request
6
10
  from collections import deque
11
+ from pathlib import Path
12
+ from typing import TYPE_CHECKING
7
13
 
8
14
  from agent_cli import constants
9
15
 
10
- try:
16
+ if TYPE_CHECKING:
11
17
  import numpy as np
12
- from silero_vad_lite import SileroVAD
13
- except ImportError as e:
14
- msg = (
15
- "silero-vad-lite is required for the transcribe-daemon command. "
16
- "Install it with: `pip install agent-cli[vad]` or `uv sync --extra vad`."
17
- )
18
- raise ImportError(msg) from e
18
+ from numpy.typing import NDArray
19
19
 
20
20
  LOGGER = logging.getLogger(__name__)
21
21
 
22
+ # Silero VAD model URL and cache location
23
+ SILERO_VAD_VERSION = "v6.2"
24
+ SILERO_VAD_URL = (
25
+ f"https://github.com/snakers4/silero-vad/raw/{SILERO_VAD_VERSION}"
26
+ "/src/silero_vad/data/silero_vad.onnx"
27
+ )
28
+ SILERO_VAD_CACHE = Path.home() / ".cache" / "agent-cli" / f"silero_vad_{SILERO_VAD_VERSION}.onnx"
29
+
30
+
31
+ def _get_model_path() -> Path:
32
+ """Get path to Silero VAD ONNX model, downloading if needed."""
33
+ if SILERO_VAD_CACHE.exists():
34
+ return SILERO_VAD_CACHE
35
+
36
+ LOGGER.info("Downloading Silero VAD model...")
37
+ SILERO_VAD_CACHE.parent.mkdir(parents=True, exist_ok=True)
38
+
39
+ # Download with progress
40
+ urllib.request.urlretrieve(SILERO_VAD_URL, SILERO_VAD_CACHE) # noqa: S310
41
+ LOGGER.info("Silero VAD model downloaded to %s", SILERO_VAD_CACHE)
42
+ return SILERO_VAD_CACHE
43
+
44
+
45
+ class _SileroVADOnnx:
46
+ """Pure numpy wrapper for Silero VAD ONNX model."""
47
+
48
+ def __init__(self, *, force_cpu: bool = True) -> None:
49
+ """Initialize the ONNX model session."""
50
+ import onnxruntime # noqa: PLC0415
51
+
52
+ model_path = _get_model_path()
53
+
54
+ opts = onnxruntime.SessionOptions()
55
+ opts.inter_op_num_threads = 1
56
+ opts.intra_op_num_threads = 1
57
+
58
+ providers = ["CPUExecutionProvider"] if force_cpu else None
59
+ self._session = onnxruntime.InferenceSession(
60
+ str(model_path),
61
+ providers=providers,
62
+ sess_options=opts,
63
+ )
64
+ self._sample_rates = [8000, 16000]
65
+ self.reset_states()
66
+
67
+ def reset_states(self, batch_size: int = 1) -> None:
68
+ """Reset the internal state for a new audio stream."""
69
+ import numpy as np # noqa: PLC0415
70
+
71
+ self._state = np.zeros((2, batch_size, 128), dtype=np.float32)
72
+ self._context = np.zeros(0, dtype=np.float32)
73
+ self._last_sr = 0
74
+ self._last_batch_size = 0
75
+
76
+ def __call__(self, audio: NDArray[np.floating], sample_rate: int) -> float:
77
+ """Process an audio chunk and return speech probability."""
78
+ import numpy as np # noqa: PLC0415
79
+
80
+ if sample_rate not in self._sample_rates:
81
+ msg = f"Supported sample rates: {self._sample_rates}"
82
+ raise ValueError(msg)
83
+
84
+ # Expected samples per chunk
85
+ num_samples = 512 if sample_rate == 16000 else 256 # noqa: PLR2004
86
+ context_size = 64 if sample_rate == 16000 else 32 # noqa: PLR2004
87
+
88
+ if len(audio) != num_samples:
89
+ msg = f"Expected {num_samples} samples for {sample_rate}Hz, got {len(audio)}"
90
+ raise ValueError(msg)
91
+
92
+ # Ensure 2D: [batch, samples]
93
+ if audio.ndim == 1:
94
+ audio = audio.reshape(1, -1)
95
+
96
+ batch_size = audio.shape[0]
97
+
98
+ # Reset state if sample rate or batch size changed
99
+ if self._last_sr and self._last_sr != sample_rate:
100
+ self.reset_states(batch_size)
101
+ if self._last_batch_size and self._last_batch_size != batch_size:
102
+ self.reset_states(batch_size)
103
+ if not self._last_batch_size:
104
+ self.reset_states(batch_size)
105
+
106
+ # Initialize context if empty
107
+ if len(self._context) == 0:
108
+ self._context = np.zeros((batch_size, context_size), dtype=np.float32)
109
+
110
+ # Concatenate context with audio
111
+ x = np.concatenate([self._context, audio], axis=1)
112
+
113
+ # Run ONNX inference
114
+ ort_inputs = {
115
+ "input": x,
116
+ "state": self._state,
117
+ "sr": np.array(sample_rate, dtype=np.int64),
118
+ }
119
+ out, self._state = self._session.run(None, ort_inputs)
120
+
121
+ # Update context with last samples
122
+ self._context = x[:, -context_size:]
123
+ self._last_sr = sample_rate
124
+ self._last_batch_size = batch_size
125
+
126
+ return float(out[0, 0])
127
+
22
128
 
23
129
  class VoiceActivityDetector:
24
130
  """Silero VAD-based voice activity detection for audio segmentation.
@@ -56,7 +162,7 @@ class VoiceActivityDetector:
56
162
  )
57
163
 
58
164
  # Model and state
59
- self._model = SileroVAD(sample_rate=sample_rate)
165
+ self._model = _SileroVADOnnx()
60
166
  self._pre_speech_buffer: deque[bytes] = deque(maxlen=pre_speech_windows)
61
167
  self._pending = bytearray()
62
168
  self._audio_buffer = bytearray()
@@ -74,7 +180,7 @@ class VoiceActivityDetector:
74
180
 
75
181
  def reset(self) -> None:
76
182
  """Reset VAD state for a new recording session."""
77
- self._model = SileroVAD(sample_rate=self.sample_rate)
183
+ self._model.reset_states()
78
184
  self._pre_speech_buffer.clear()
79
185
  self._pending.clear()
80
186
  self._audio_buffer.clear()
@@ -84,8 +190,10 @@ class VoiceActivityDetector:
84
190
 
85
191
  def _is_speech(self, window: bytes) -> bool:
86
192
  """Check if audio window contains speech."""
193
+ import numpy as np # noqa: PLC0415
194
+
87
195
  audio = np.frombuffer(window, dtype=np.int16).astype(np.float32) / 32768.0
88
- prob = self._model.process(audio)
196
+ prob = self._model(audio, self.sample_rate)
89
197
  LOGGER.debug("Speech prob: %.3f, threshold: %.2f", prob, self.threshold)
90
198
  return prob >= self.threshold
91
199
 
@@ -136,7 +244,7 @@ class VoiceActivityDetector:
136
244
  self._silence_samples = 0
137
245
  self._speech_samples = 0
138
246
  self._audio_buffer.clear()
139
- self._model = SileroVAD(sample_rate=self.sample_rate)
247
+ self._model.reset_states()
140
248
  else:
141
249
  # Not speaking - maintain rolling pre-speech buffer (auto-limited by deque maxlen)
142
250
  self._pre_speech_buffer.append(window)
@@ -63,7 +63,7 @@ def _install_via_uv_tool(extras: list[str], *, quiet: bool = False) -> bool:
63
63
  """Reinstall agent-cli via uv tool with the specified extras."""
64
64
  extras_str = ",".join(extras)
65
65
  package_spec = f"agent-cli[{extras_str}]"
66
- # Cap at Python 3.13 for compatibility - some deps (e.g., silero-vad-lite) don't support 3.14 yet
66
+ # Cap at Python 3.13 for compatibility - onnxruntime doesn't support 3.14 yet
67
67
  major, minor = sys.version_info[:2]
68
68
  python_version = f"{major}.{min(minor, 13)}"
69
69
  cmd = ["uv", "tool", "install", package_spec, "--force", "--python", python_version]
@@ -158,7 +158,7 @@ def install_extras(
158
158
  **Available extras:**
159
159
  - `rag` - RAG proxy server (ChromaDB, embeddings)
160
160
  - `memory` - Long-term memory proxy (ChromaDB)
161
- - `vad` - Voice Activity Detection (silero-vad)
161
+ - `vad` - Voice Activity Detection (Silero VAD via ONNX)
162
162
  - `audio` - Local audio recording/playback
163
163
  - `piper` - Local Piper TTS engine
164
164
  - `kokoro` - Kokoro neural TTS engine
@@ -36,7 +36,7 @@ EXTRA_METADATA: dict[str, tuple[str, list[str]]] = {
36
36
  # Feature extras
37
37
  "rag": ("RAG proxy (ChromaDB, embeddings)", ["chromadb", "pydantic_ai"]),
38
38
  "memory": ("Long-term memory proxy", ["chromadb", "yaml", "pydantic_ai"]),
39
- "vad": ("Voice Activity Detection (silero-vad)", ["silero_vad"]),
39
+ "vad": ("Voice Activity Detection (Silero VAD via ONNX)", ["onnxruntime"]),
40
40
  "whisper": ("Local Whisper ASR (faster-whisper)", ["faster_whisper"]),
41
41
  "whisper-mlx": ("MLX Whisper for Apple Silicon", ["mlx_whisper"]),
42
42
  "tts": ("Local Piper TTS", ["piper"]),
@@ -130,11 +130,12 @@ def main() -> int:
130
130
  """Generate _extras.json from pyproject.toml."""
131
131
  extras = get_extras_from_pyproject()
132
132
 
133
- # Check for missing metadata
133
+ # Check for missing metadata - fail if any extras lack proper metadata
134
134
  missing = check_missing_metadata(extras)
135
135
  if missing:
136
- print(f"Warning: The following extras need metadata in EXTRA_METADATA: {missing}")
136
+ print(f"ERROR: The following extras need metadata in EXTRA_METADATA: {missing}")
137
137
  print("Please update EXTRA_METADATA in scripts/sync_extras.py")
138
+ return 1
138
139
 
139
140
  # Generate the file
140
141
  content = generate_extras_json(extras)
@@ -29,15 +29,23 @@ def _has(package: str) -> bool:
29
29
 
30
30
  app = typer.Typer(
31
31
  name="server",
32
- help="""Run local ASR/TTS servers with OpenAI-compatible APIs.
32
+ help="""Local ASR/TTS servers with dual-protocol support and smart memory management.
33
+
34
+ **Key features:**
35
+
36
+ - **Dual protocol:** OpenAI-compatible HTTP API and Wyoming protocol (Home Assistant)
37
+ - **Multiple backends:** Choose the right engine for your hardware
38
+ - **Automatic memory management:** Models unload after idle timeout, freeing VRAM/RAM
33
39
 
34
40
  **Available servers:**
35
41
 
36
- - `whisper` - Local speech-to-text using Whisper models (faster-whisper or MLX)
37
- - `tts` - Local text-to-speech using Piper (CPU) or Kokoro (GPU)
38
- - `transcribe-proxy` - Proxy to external ASR providers (OpenAI, Gemini, Wyoming)
42
+ | Server | Backends | Default Ports |
43
+ |--------|----------|---------------|
44
+ | `whisper` | faster-whisper, MLX, transformers | HTTP: 10301, Wyoming: 10300 |
45
+ | `tts` | Piper (CPU), Kokoro (GPU) | HTTP: 10201, Wyoming: 10200 |
46
+ | `transcribe-proxy` | OpenAI-compatible, Gemini, Wyoming | HTTP: 61337 |
39
47
 
40
- **Common workflows:**
48
+ **Examples:**
41
49
 
42
50
  ```bash
43
51
  # Run local Whisper server (lazy loads large-v3 by default)
@@ -50,8 +58,8 @@ agent-cli server tts --backend kokoro
50
58
  agent-cli server transcribe-proxy
51
59
  ```
52
60
 
53
- All servers support Home Assistant via Wyoming protocol and can be used as
54
- drop-in replacements for OpenAI's audio APIs.
61
+ Models load on first request and automatically unload after 5 minutes of inactivity
62
+ (configurable via `--ttl`), so VRAM isn't wasted when the server is idle.
55
63
  """,
56
64
  add_completion=True,
57
65
  rich_markup_mode="markdown",
@@ -166,7 +166,7 @@ Install with `agent-cli install-extras <name>` or `pip install agent-cli[name]`:
166
166
 
167
167
  | Extra | Purpose | Key Packages |
168
168
  |-------|---------|--------------|
169
- | `vad` | Voice activity detection | silero-vad |
169
+ | `vad` | Voice activity detection | onnxruntime |
170
170
  | `rag` | Document chat | chromadb, markitdown |
171
171
  | `memory` | Long-term memory | chromadb |
172
172
  | `server` | Local ASR/TTS servers | fastapi |
@@ -41,7 +41,7 @@ Available extras:
41
41
  | `rag` | RAG proxy (ChromaDB, embeddings) |
42
42
  | `server` | FastAPI server components |
43
43
  | `speed` | Audio speed adjustment (audiostretchy) |
44
- | `vad` | Voice Activity Detection (silero-vad) |
44
+ | `vad` | Voice Activity Detection (Silero VAD via ONNX) |
45
45
  | `whisper-transformers` | Whisper ASR via HuggingFace transformers |
46
46
  | `wyoming` | Wyoming protocol support |
47
47
 
@@ -64,7 +64,7 @@ memory = [
64
64
  "pyyaml>=6.0.0",
65
65
  ]
66
66
  vad = [
67
- "silero-vad-lite>=0.2.1",
67
+ "onnxruntime>=1.16.0",
68
68
  ]
69
69
  faster-whisper = [
70
70
  "fastapi[standard]",
@@ -3,44 +3,42 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import struct
6
- import sys
7
6
  from typing import TYPE_CHECKING
8
- from unittest.mock import MagicMock, patch
7
+ from unittest.mock import patch
9
8
 
10
9
  import pytest
11
10
 
12
- # Skip all tests in this module on Windows - silero-vad-lite can hang during initialization
13
- if sys.platform == "win32":
14
- pytest.skip(
15
- "silero-vad-lite initialization can hang on Windows CI",
16
- allow_module_level=True,
17
- )
18
-
19
11
  from agent_cli.core.vad import VoiceActivityDetector
20
12
 
21
13
  if TYPE_CHECKING:
22
14
  from typing import Any
23
15
 
24
16
 
25
- @pytest.fixture
26
- def mock_silero_vad() -> MagicMock:
27
- """Mock silero_vad module."""
28
- mock_model = MagicMock()
29
- mock_model.audio_forward.return_value = 0.0 # No speech by default
30
- return mock_model
17
+ @pytest.fixture(scope="module", autouse=True)
18
+ def ensure_model_cached() -> None:
19
+ """Ensure Silero VAD model is cached before running tests."""
20
+ import shutil # noqa: PLC0415
21
+ import urllib.request # noqa: PLC0415
31
22
 
23
+ from agent_cli.core.vad import SILERO_VAD_CACHE, SILERO_VAD_URL # noqa: PLC0415
32
24
 
33
- def test_import_error_without_silero_vad() -> None:
34
- """Test that ImportError is raised with helpful message when silero-vad-lite is missing."""
35
- import importlib # noqa: PLC0415
25
+ if not SILERO_VAD_CACHE.exists():
26
+ SILERO_VAD_CACHE.parent.mkdir(parents=True, exist_ok=True)
27
+ try:
28
+ with (
29
+ urllib.request.urlopen(SILERO_VAD_URL, timeout=30) as response, # noqa: S310
30
+ SILERO_VAD_CACHE.open("wb") as f,
31
+ ):
32
+ shutil.copyfileobj(response, f)
33
+ except Exception as e:
34
+ pytest.skip(f"Failed to download VAD model: {e}")
36
35
 
37
- with patch.dict("sys.modules", {"silero_vad_lite": None}):
38
- # Remove cached module
39
- if "agent_cli.core.vad" in sys.modules:
40
- del sys.modules["agent_cli.core.vad"]
41
36
 
42
- with pytest.raises(ImportError, match="agent-cli\\[vad\\]"):
43
- importlib.import_module("agent_cli.core.vad")
37
+ def test_import_error_without_onnxruntime() -> None:
38
+ """Test that ModuleNotFoundError is raised when onnxruntime is missing."""
39
+ # With lazy imports, error happens at instantiation, not module import
40
+ with patch.dict("sys.modules", {"onnxruntime": None}), pytest.raises(ModuleNotFoundError):
41
+ VoiceActivityDetector()
44
42
 
45
43
 
46
44
  @pytest.fixture
@@ -115,7 +115,7 @@ test = [
115
115
  { name = "pytest-timeout" },
116
116
  ]
117
117
  vad = [
118
- { name = "silero-vad-lite" },
118
+ { name = "onnxruntime" },
119
119
  ]
120
120
  whisper-transformers = [
121
121
  { name = "fastapi", extra = ["standard"] },
@@ -172,6 +172,7 @@ requires-dist = [
172
172
  { name = "numpy", marker = "extra == 'audio'" },
173
173
  { name = "onnxruntime", marker = "extra == 'memory'", specifier = ">=1.17.0" },
174
174
  { name = "onnxruntime", marker = "extra == 'rag'", specifier = ">=1.17.0" },
175
+ { name = "onnxruntime", marker = "extra == 'vad'", specifier = ">=1.16.0" },
175
176
  { name = "openai", marker = "extra == 'memory'", specifier = ">=1.0.0" },
176
177
  { name = "openai", marker = "extra == 'rag'", specifier = ">=1.0.0" },
177
178
  { name = "pip", marker = "extra == 'kokoro'" },
@@ -199,7 +200,6 @@ requires-dist = [
199
200
  { name = "rich" },
200
201
  { name = "ruff", marker = "extra == 'dev'" },
201
202
  { name = "setproctitle" },
202
- { name = "silero-vad-lite", marker = "extra == 'vad'", specifier = ">=0.2.1" },
203
203
  { name = "sounddevice", marker = "extra == 'audio'", specifier = ">=0.4.6" },
204
204
  { name = "soundfile", marker = "extra == 'kokoro'", specifier = ">=0.12.0" },
205
205
  { name = "torch", marker = "extra == 'whisper-transformers'", specifier = ">=2.0.0" },
@@ -4753,26 +4753,6 @@ wheels = [
4753
4753
  { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload-time = "2023-10-24T04:13:38.866Z" },
4754
4754
  ]
4755
4755
 
4756
- [[package]]
4757
- name = "silero-vad-lite"
4758
- version = "0.2.1"
4759
- source = { registry = "https://pypi.org/simple" }
4760
- sdist = { url = "https://files.pythonhosted.org/packages/8d/8a/9c33e393a2068ac7e51bff755c001d0fd95a5221de310b760e5c1c0c5047/silero_vad_lite-0.2.1.tar.gz", hash = "sha256:74ccc2dc955a80a53f9520c3924a0a99b80691ab0632ddec08725b459a8f5d13", size = 1956112, upload-time = "2024-10-01T07:45:56.271Z" }
4761
- wheels = [
4762
- { url = "https://files.pythonhosted.org/packages/67/44/e883159ccc321125839d74f849c349e23f33b61de14845ad799dad6bbe54/silero_vad_lite-0.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5a4198be1dbb413ac0031cf76e5eedd1ad34f9922c74055eb653a41e02d64c7a", size = 30750461, upload-time = "2024-10-01T07:44:00.309Z" },
4763
- { url = "https://files.pythonhosted.org/packages/02/4e/d4f6fa9e2c4b585dd55f51c8964c3b2228506fcf5d6523cd01531333a9dc/silero_vad_lite-0.2.1-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:958ff533c37e84bbe88ee6fb41f6b43f8f261c48117bc81fa776fec4b2cec3f8", size = 30752295, upload-time = "2024-10-01T07:44:06.476Z" },
4764
- { url = "https://files.pythonhosted.org/packages/6d/bf/209b65437a8d90b8f20c21d1d04a6de545c2beaeed1c54da467169b3eca5/silero_vad_lite-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a865faa68535bbb9498288568c2d1e4bb4052b61aa12d038938fe1ce53863f3d", size = 10123116, upload-time = "2024-10-01T07:44:09.079Z" },
4765
- { url = "https://files.pythonhosted.org/packages/e6/32/fdebefaa7b2a7dcc82fc3eb62ad40064cc83935300613c96fa23d8e057fa/silero_vad_lite-0.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:d85e6e95133e013cc9d587f701fc462d2fd6b7b23f1b36a902dc8d8f990e2434", size = 6612344, upload-time = "2024-10-01T07:44:11.533Z" },
4766
- { url = "https://files.pythonhosted.org/packages/a2/ea/e389cd02b963a56421550f11a88eaca13f93771e2c065e1f56a36d565469/silero_vad_lite-0.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3de3c2dfd9b8f90a5725498479c016eb5b8aa3eb918c1132cb734757025d5f88", size = 30750460, upload-time = "2024-10-01T07:44:14.147Z" },
4767
- { url = "https://files.pythonhosted.org/packages/0a/9f/1a90098f5017c842bdf8c2c5e1edca7b4689980ff03924bcce3e8800e04b/silero_vad_lite-0.2.1-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:21bc8e03d74ca952cca4cb20cde711fc886cd1dd5093b7fc51de1607ec890fab", size = 30752295, upload-time = "2024-10-01T07:44:17.914Z" },
4768
- { url = "https://files.pythonhosted.org/packages/dc/4c/f8c6ef56058bbcffaaea88f8dd424486cd3cdcfd0244657502fe5bc25a48/silero_vad_lite-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae45855b5ce6fc5d16a608580f3a8378a1d31951802fef4584a60c53b25b7160", size = 10123117, upload-time = "2024-10-01T07:44:20.708Z" },
4769
- { url = "https://files.pythonhosted.org/packages/1e/4e/b240c77663d14882cfd78005bbef0391506b843283e278b2c2683627499d/silero_vad_lite-0.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:8bab6364ae0b0316c4e787e90b5efd229fbad18b351b3e80fe0dc5e7bdcdebdc", size = 6612344, upload-time = "2024-10-01T07:44:23.47Z" },
4770
- { url = "https://files.pythonhosted.org/packages/e9/45/692d9cc332e53d3c77d06303d7b978b8e2423454f075c02b95989796eb96/silero_vad_lite-0.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6eb4c81dce2d61102865f17ceb60a6afa6e1ca0a7330c4a55e07e3137b74db44", size = 30750459, upload-time = "2024-10-01T07:44:26.348Z" },
4771
- { url = "https://files.pythonhosted.org/packages/71/7a/fda5268fe3b661d16f6eae56444e14c1f2eb62aae51ca01cc01bd6194f58/silero_vad_lite-0.2.1-cp313-cp313-macosx_11_0_x86_64.whl", hash = "sha256:95c32ecd7c62c67903f5e67e18cc8ca1d0b93c3b020571698236502a66adb94e", size = 30752298, upload-time = "2024-10-01T07:44:29.441Z" },
4772
- { url = "https://files.pythonhosted.org/packages/f8/04/9de02bae297ed88c44b0f76f4e9d2149ef4fc30a932f5ea38ee686c86b9e/silero_vad_lite-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0d73a7676acf3fe6c743394b994eec33a9104d95dc32de2867cc4f63df19ff1", size = 10123118, upload-time = "2024-10-01T07:44:32.89Z" },
4773
- { url = "https://files.pythonhosted.org/packages/f3/cb/3ee98dd6174c7331e38b90c36eb675b406add4ab7edb45604096affda3e5/silero_vad_lite-0.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:5b11772d09383dc6e7cb89976110a75be17876427f7a019649a3761790dc83db", size = 6612343, upload-time = "2024-10-01T07:44:36.145Z" },
4774
- ]
4775
-
4776
4756
  [[package]]
4777
4757
  name = "six"
4778
4758
  version = "1.17.0"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes