agent-cli 0.74.0__tar.gz → 0.76.0__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.74.0 → agent_cli-0.76.0}/PKG-INFO +14 -8
  2. {agent_cli-0.74.0 → agent_cli-0.76.0}/README.md +8 -6
  3. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/_extras.json +25 -10
  4. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/_requirements/vad.txt +20 -2
  5. agent_cli-0.76.0/agent_cli/_requirements/whisper-transformers.txt +256 -0
  6. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/core/vad.py +121 -13
  7. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/example-config.toml +4 -1
  8. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/install/extras.py +5 -3
  9. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/sync_extras.py +14 -3
  10. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/cli.py +45 -25
  11. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/whisper/backends/__init__.py +8 -1
  12. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/whisper/backends/mlx.py +10 -0
  13. agent_cli-0.76.0/agent_cli/server/whisper/backends/transformers.py +315 -0
  14. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/architecture/index.md +1 -1
  15. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/commands/install-extras.md +6 -5
  16. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/commands/server/index.md +2 -2
  17. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/commands/server/whisper.md +17 -5
  18. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/getting-started.md +3 -2
  19. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/installation/linux.md +5 -0
  20. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/installation/macos.md +4 -2
  21. {agent_cli-0.74.0 → agent_cli-0.76.0}/pyproject.toml +6 -1
  22. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/core/test_vad.py +14 -24
  23. agent_cli-0.76.0/tests/test_transformers_backend.py +57 -0
  24. {agent_cli-0.74.0 → agent_cli-0.76.0}/uv.lock +11 -23
  25. {agent_cli-0.74.0 → agent_cli-0.76.0}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
  26. {agent_cli-0.74.0 → agent_cli-0.76.0}/.claude/skills/agent-cli-dev/examples.md +0 -0
  27. {agent_cli-0.74.0 → agent_cli-0.76.0}/.claude-plugin/README.md +0 -0
  28. {agent_cli-0.74.0 → agent_cli-0.76.0}/.claude-plugin/marketplace.json +0 -0
  29. {agent_cli-0.74.0 → agent_cli-0.76.0}/.claude-plugin/plugin.json +0 -0
  30. {agent_cli-0.74.0 → agent_cli-0.76.0}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
  31. {agent_cli-0.74.0 → agent_cli-0.76.0}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
  32. {agent_cli-0.74.0 → agent_cli-0.76.0}/.cursorrules +0 -0
  33. {agent_cli-0.74.0 → agent_cli-0.76.0}/.dockerignore +0 -0
  34. {agent_cli-0.74.0 → agent_cli-0.76.0}/.env.example +0 -0
  35. {agent_cli-0.74.0 → agent_cli-0.76.0}/.github/logo.svg +0 -0
  36. {agent_cli-0.74.0 → agent_cli-0.76.0}/.github/release-drafter.yml +0 -0
  37. {agent_cli-0.74.0 → agent_cli-0.76.0}/.github/renovate.json +0 -0
  38. {agent_cli-0.74.0 → agent_cli-0.76.0}/.github/scripts/check_extras_sync.py +0 -0
  39. {agent_cli-0.74.0 → agent_cli-0.76.0}/.github/scripts/sync_requirements.py +0 -0
  40. {agent_cli-0.74.0 → agent_cli-0.76.0}/.github/workflows/automerge.yml +0 -0
  41. {agent_cli-0.74.0 → agent_cli-0.76.0}/.github/workflows/docker.yml +0 -0
  42. {agent_cli-0.74.0 → agent_cli-0.76.0}/.github/workflows/docs.yml +0 -0
  43. {agent_cli-0.74.0 → agent_cli-0.76.0}/.github/workflows/markdown-code-runner.yml +0 -0
  44. {agent_cli-0.74.0 → agent_cli-0.76.0}/.github/workflows/pytest.yml +0 -0
  45. {agent_cli-0.74.0 → agent_cli-0.76.0}/.github/workflows/release-drafter.yml +0 -0
  46. {agent_cli-0.74.0 → agent_cli-0.76.0}/.github/workflows/release.yml +0 -0
  47. {agent_cli-0.74.0 → agent_cli-0.76.0}/.github/workflows/toc.yaml +0 -0
  48. {agent_cli-0.74.0 → agent_cli-0.76.0}/.gitignore +0 -0
  49. {agent_cli-0.74.0 → agent_cli-0.76.0}/.jscpd.json +0 -0
  50. {agent_cli-0.74.0 → agent_cli-0.76.0}/.pre-commit-config.yaml +0 -0
  51. {agent_cli-0.74.0 → agent_cli-0.76.0}/.prompts/docs-review.md +0 -0
  52. {agent_cli-0.74.0 → agent_cli-0.76.0}/.prompts/pr-review.md +0 -0
  53. {agent_cli-0.74.0 → agent_cli-0.76.0}/CLAUDE.md +0 -0
  54. {agent_cli-0.74.0 → agent_cli-0.76.0}/LICENSE +0 -0
  55. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/__init__.py +0 -0
  56. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/__main__.py +0 -0
  57. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/_requirements/.gitkeep +0 -0
  58. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/_requirements/audio.txt +0 -0
  59. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/_requirements/faster-whisper.txt +0 -0
  60. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/_requirements/kokoro.txt +0 -0
  61. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/_requirements/llm.txt +0 -0
  62. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/_requirements/memory.txt +0 -0
  63. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/_requirements/mlx-whisper.txt +0 -0
  64. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/_requirements/piper.txt +0 -0
  65. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/_requirements/rag.txt +0 -0
  66. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/_requirements/server.txt +0 -0
  67. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/_requirements/speed.txt +0 -0
  68. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/_requirements/wyoming.txt +0 -0
  69. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/_tools.py +0 -0
  70. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/agents/__init__.py +0 -0
  71. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/agents/_voice_agent_common.py +0 -0
  72. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/agents/assistant.py +0 -0
  73. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/agents/autocorrect.py +0 -0
  74. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/agents/chat.py +0 -0
  75. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/agents/memory/__init__.py +0 -0
  76. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/agents/memory/add.py +0 -0
  77. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/agents/memory/proxy.py +0 -0
  78. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/agents/rag_proxy.py +0 -0
  79. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/agents/speak.py +0 -0
  80. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/agents/transcribe.py +0 -0
  81. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/agents/transcribe_daemon.py +0 -0
  82. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/agents/voice_edit.py +0 -0
  83. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/api.py +0 -0
  84. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/cli.py +0 -0
  85. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/config.py +0 -0
  86. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/config_cmd.py +0 -0
  87. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/constants.py +0 -0
  88. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/core/__init__.py +0 -0
  89. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/core/audio.py +0 -0
  90. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/core/audio_format.py +0 -0
  91. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/core/chroma.py +0 -0
  92. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/core/deps.py +0 -0
  93. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/core/openai_proxy.py +0 -0
  94. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/core/process.py +0 -0
  95. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/core/reranker.py +0 -0
  96. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/core/sse.py +0 -0
  97. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/core/transcription_logger.py +0 -0
  98. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/core/utils.py +0 -0
  99. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/core/watch.py +0 -0
  100. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/__init__.py +0 -0
  101. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/cli.py +0 -0
  102. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/coding_agents/__init__.py +0 -0
  103. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/coding_agents/aider.py +0 -0
  104. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/coding_agents/base.py +0 -0
  105. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/coding_agents/claude.py +0 -0
  106. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/coding_agents/codex.py +0 -0
  107. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
  108. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/coding_agents/copilot.py +0 -0
  109. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
  110. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/coding_agents/gemini.py +0 -0
  111. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/coding_agents/opencode.py +0 -0
  112. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/coding_agents/registry.py +0 -0
  113. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/editors/__init__.py +0 -0
  114. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/editors/base.py +0 -0
  115. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/editors/cursor.py +0 -0
  116. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/editors/emacs.py +0 -0
  117. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/editors/jetbrains.py +0 -0
  118. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/editors/nano.py +0 -0
  119. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/editors/neovim.py +0 -0
  120. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/editors/registry.py +0 -0
  121. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/editors/sublime.py +0 -0
  122. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/editors/vim.py +0 -0
  123. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/editors/vscode.py +0 -0
  124. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/editors/zed.py +0 -0
  125. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/project.py +0 -0
  126. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/registry.py +0 -0
  127. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/skill/SKILL.md +0 -0
  128. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/skill/examples.md +0 -0
  129. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/terminals/__init__.py +0 -0
  130. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/terminals/apple_terminal.py +0 -0
  131. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/terminals/base.py +0 -0
  132. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/terminals/gnome.py +0 -0
  133. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/terminals/iterm2.py +0 -0
  134. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/terminals/kitty.py +0 -0
  135. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/terminals/registry.py +0 -0
  136. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/terminals/tmux.py +0 -0
  137. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/terminals/warp.py +0 -0
  138. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/terminals/zellij.py +0 -0
  139. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/dev/worktree.py +0 -0
  140. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/docs_gen.py +0 -0
  141. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/install/__init__.py +0 -0
  142. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/install/common.py +0 -0
  143. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/install/hotkeys.py +0 -0
  144. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/install/services.py +0 -0
  145. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/memory/__init__.py +0 -0
  146. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/memory/_files.py +0 -0
  147. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/memory/_filters.py +0 -0
  148. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/memory/_git.py +0 -0
  149. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/memory/_indexer.py +0 -0
  150. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/memory/_ingest.py +0 -0
  151. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/memory/_persistence.py +0 -0
  152. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/memory/_prompt.py +0 -0
  153. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/memory/_retrieval.py +0 -0
  154. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/memory/_store.py +0 -0
  155. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/memory/_streaming.py +0 -0
  156. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/memory/_tasks.py +0 -0
  157. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/memory/api.py +0 -0
  158. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/memory/client.py +0 -0
  159. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/memory/engine.py +0 -0
  160. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/memory/entities.py +0 -0
  161. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/memory/models.py +0 -0
  162. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/opts.py +0 -0
  163. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/py.typed +0 -0
  164. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/rag/__init__.py +0 -0
  165. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/rag/_indexer.py +0 -0
  166. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/rag/_indexing.py +0 -0
  167. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/rag/_prompt.py +0 -0
  168. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/rag/_retriever.py +0 -0
  169. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/rag/_store.py +0 -0
  170. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/rag/_utils.py +0 -0
  171. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/rag/api.py +0 -0
  172. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/rag/client.py +0 -0
  173. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/rag/engine.py +0 -0
  174. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/rag/models.py +0 -0
  175. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/.runtime/.gitkeep +0 -0
  176. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/__init__.py +0 -0
  177. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/check_plugin_skill_sync.py +0 -0
  178. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
  179. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
  180. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
  181. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
  182. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
  183. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
  184. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
  185. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
  186. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
  187. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
  188. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
  189. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
  190. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
  191. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
  192. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/run-openwakeword.sh +0 -0
  193. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/run-piper-windows.ps1 +0 -0
  194. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/run-piper.sh +0 -0
  195. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/run-whisper-linux.sh +0 -0
  196. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/run-whisper-macos.sh +0 -0
  197. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/run-whisper-windows.ps1 +0 -0
  198. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/run-whisper.sh +0 -0
  199. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/run_faster_whisper_server.py +0 -0
  200. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
  201. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/setup-linux.sh +0 -0
  202. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
  203. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/setup-macos.sh +0 -0
  204. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/setup-windows.ps1 +0 -0
  205. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
  206. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/scripts/start-all-services.sh +0 -0
  207. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/__init__.py +0 -0
  208. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/common.py +0 -0
  209. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/model_manager.py +0 -0
  210. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/model_registry.py +0 -0
  211. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/proxy/__init__.py +0 -0
  212. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/proxy/api.py +0 -0
  213. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/streaming.py +0 -0
  214. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/tts/__init__.py +0 -0
  215. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/tts/api.py +0 -0
  216. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/tts/backends/__init__.py +0 -0
  217. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/tts/backends/base.py +0 -0
  218. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/tts/backends/kokoro.py +0 -0
  219. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/tts/backends/piper.py +0 -0
  220. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/tts/model_manager.py +0 -0
  221. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/tts/model_registry.py +0 -0
  222. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/tts/wyoming_handler.py +0 -0
  223. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/whisper/__init__.py +0 -0
  224. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/whisper/api.py +0 -0
  225. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/whisper/backends/base.py +0 -0
  226. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
  227. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/whisper/languages.py +0 -0
  228. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/whisper/model_manager.py +0 -0
  229. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/whisper/model_registry.py +0 -0
  230. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/server/whisper/wyoming_handler.py +0 -0
  231. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/services/__init__.py +0 -0
  232. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/services/_wyoming_utils.py +0 -0
  233. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/services/asr.py +0 -0
  234. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/services/llm.py +0 -0
  235. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/services/tts.py +0 -0
  236. {agent_cli-0.74.0 → agent_cli-0.76.0}/agent_cli/services/wake_word.py +0 -0
  237. {agent_cli-0.74.0 → agent_cli-0.76.0}/docker/docker-compose.yml +0 -0
  238. {agent_cli-0.74.0 → agent_cli-0.76.0}/docker/memory-proxy.Dockerfile +0 -0
  239. {agent_cli-0.74.0 → agent_cli-0.76.0}/docker/rag-proxy.Dockerfile +0 -0
  240. {agent_cli-0.74.0 → agent_cli-0.76.0}/docker/transcribe-proxy.Dockerfile +0 -0
  241. {agent_cli-0.74.0 → agent_cli-0.76.0}/docker/tts.Dockerfile +0 -0
  242. {agent_cli-0.74.0 → agent_cli-0.76.0}/docker/whisper.Dockerfile +0 -0
  243. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/CNAME +0 -0
  244. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/architecture/memory.md +0 -0
  245. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/architecture/rag.md +0 -0
  246. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/commands/assistant.md +0 -0
  247. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/commands/autocorrect.md +0 -0
  248. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/commands/chat.md +0 -0
  249. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/commands/config.md +0 -0
  250. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/commands/dev.md +0 -0
  251. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/commands/index.md +0 -0
  252. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/commands/install-hotkeys.md +0 -0
  253. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/commands/install-services.md +0 -0
  254. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/commands/memory.md +0 -0
  255. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/commands/rag-proxy.md +0 -0
  256. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/commands/server/transcribe-proxy.md +0 -0
  257. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/commands/server/tts.md +0 -0
  258. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/commands/speak.md +0 -0
  259. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/commands/start-services.md +0 -0
  260. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/commands/transcribe-daemon.md +0 -0
  261. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/commands/transcribe.md +0 -0
  262. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/commands/voice-edit.md +0 -0
  263. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/configuration.md +0 -0
  264. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/iOS_Shortcut_Guide.md +0 -0
  265. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/index.md +0 -0
  266. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/installation/docker.md +0 -0
  267. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/installation/index.md +0 -0
  268. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/installation/nixos.md +0 -0
  269. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/installation/windows.md +0 -0
  270. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/logo-clean.svg +0 -0
  271. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
  272. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/run_markdown_code_runner.py +0 -0
  273. {agent_cli-0.74.0 → agent_cli-0.76.0}/docs/system-integration.md +0 -0
  274. {agent_cli-0.74.0 → agent_cli-0.76.0}/example.agent-cli-config.toml +0 -0
  275. {agent_cli-0.74.0 → agent_cli-0.76.0}/justfile +0 -0
  276. {agent_cli-0.74.0 → agent_cli-0.76.0}/shell.nix +0 -0
  277. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/__init__.py +0 -0
  278. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/agents/__init__.py +0 -0
  279. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/agents/test_fix_my_text.py +0 -0
  280. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/agents/test_interactive.py +0 -0
  281. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/agents/test_interactive_extra.py +0 -0
  282. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/agents/test_memory_add.py +0 -0
  283. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/agents/test_speak.py +0 -0
  284. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/agents/test_speak_e2e.py +0 -0
  285. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/agents/test_transcribe.py +0 -0
  286. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/agents/test_transcribe_agent.py +0 -0
  287. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/agents/test_transcribe_daemon.py +0 -0
  288. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/agents/test_transcribe_e2e.py +0 -0
  289. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/agents/test_transcribe_recovery.py +0 -0
  290. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/agents/test_tts_common.py +0 -0
  291. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/agents/test_tts_common_extra.py +0 -0
  292. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/agents/test_voice_agent_common.py +0 -0
  293. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/agents/test_voice_edit.py +0 -0
  294. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/agents/test_voice_edit_e2e.py +0 -0
  295. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/agents/test_wake_word_assistant.py +0 -0
  296. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/conftest.py +0 -0
  297. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/core/__init__.py +0 -0
  298. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/core/test_audio_format.py +0 -0
  299. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/core/test_chroma.py +0 -0
  300. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/core/test_sse.py +0 -0
  301. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/core/test_watch.py +0 -0
  302. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/dev/__init__.py +0 -0
  303. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/dev/test_cli.py +0 -0
  304. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/dev/test_coding_agents.py +0 -0
  305. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/dev/test_editors.py +0 -0
  306. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/dev/test_project.py +0 -0
  307. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/dev/test_terminals.py +0 -0
  308. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/dev/test_verification.py +0 -0
  309. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/dev/test_worktree.py +0 -0
  310. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/install/__init__.py +0 -0
  311. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/install/test_extras.py +0 -0
  312. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/memory/__init__.py +0 -0
  313. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/memory/test_api_health.py +0 -0
  314. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/memory/test_api_integration_liveish.py +0 -0
  315. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/memory/test_client.py +0 -0
  316. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/memory/test_engine.py +0 -0
  317. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/memory/test_files.py +0 -0
  318. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/memory/test_filters.py +0 -0
  319. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/memory/test_git_integration.py +0 -0
  320. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/memory/test_indexer.py +0 -0
  321. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/memory/test_memory_integration.py +0 -0
  322. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/memory/test_proxy_passthrough.py +0 -0
  323. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/memory/test_store.py +0 -0
  324. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/memory/test_utils.py +0 -0
  325. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/mocks/__init__.py +0 -0
  326. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/mocks/audio.py +0 -0
  327. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/mocks/llm.py +0 -0
  328. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/mocks/wyoming.py +0 -0
  329. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/rag/__init__.py +0 -0
  330. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/rag/test_api.py +0 -0
  331. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/rag/test_engine.py +0 -0
  332. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/rag/test_history.py +0 -0
  333. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/rag/test_indexer.py +0 -0
  334. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/rag/test_indexing.py +0 -0
  335. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/rag/test_rag_client.py +0 -0
  336. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/rag/test_rag_integration_liveish.py +0 -0
  337. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/rag/test_rag_proxy_passthrough.py +0 -0
  338. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/rag/test_retriever.py +0 -0
  339. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/rag/test_store.py +0 -0
  340. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/rag/test_utils.py +0 -0
  341. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_api.py +0 -0
  342. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_api_integration.py +0 -0
  343. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_asr.py +0 -0
  344. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_asr_recovery.py +0 -0
  345. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_audio_e2e.py +0 -0
  346. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_cli.py +0 -0
  347. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_config.py +0 -0
  348. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_config_cmd.py +0 -0
  349. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_docs_gen.py +0 -0
  350. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_env_vars.py +0 -0
  351. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_json_output.py +0 -0
  352. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_llm.py +0 -0
  353. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_llm_gemini.py +0 -0
  354. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_memory_tools.py +0 -0
  355. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_mlx_backend.py +0 -0
  356. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_process_manager.py +0 -0
  357. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_requires_extras.py +0 -0
  358. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_server_streaming.py +0 -0
  359. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_server_tts.py +0 -0
  360. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_server_whisper.py +0 -0
  361. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_services.py +0 -0
  362. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_tools.py +0 -0
  363. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_tts.py +0 -0
  364. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_utils.py +0 -0
  365. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_wake_word.py +0 -0
  366. {agent_cli-0.74.0 → agent_cli-0.76.0}/tests/test_wyoming_utils.py +0 -0
  367. {agent_cli-0.74.0 → agent_cli-0.76.0}/zensical.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-cli
3
- Version: 0.74.0
3
+ Version: 0.76.0
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,11 @@ 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
+ Provides-Extra: whisper-transformers
88
+ Requires-Dist: fastapi[standard]; extra == 'whisper-transformers'
89
+ Requires-Dist: torch>=2.0.0; extra == 'whisper-transformers'
90
+ Requires-Dist: transformers>=4.30.0; extra == 'whisper-transformers'
87
91
  Provides-Extra: wyoming
88
92
  Requires-Dist: wyoming>=1.5.2; extra == 'wyoming'
89
93
  Description-Content-Type: text/markdown
@@ -424,7 +428,7 @@ Our installation scripts automatically handle all dependencies:
424
428
  |---------|---------|-----------------|
425
429
  | **[Ollama](https://ollama.ai/)** | Local LLM for text processing | ✅ Yes, with default model |
426
430
  | **[Wyoming Faster Whisper](https://github.com/rhasspy/wyoming-faster-whisper)** | Speech-to-text | ✅ Yes, via `uvx` |
427
- | **[`agent-cli server whisper`](docs/commands/server/whisper.md)** | Speech-to-text (alternative) | ✅ Built-in, `pip install "agent-cli[whisper]"` |
431
+ | **[`agent-cli server whisper`](docs/commands/server/whisper.md)** | Speech-to-text (alternative) | ✅ Built-in, `pip install "agent-cli[faster-whisper]"` |
428
432
  | **[Wyoming Piper](https://github.com/rhasspy/wyoming-piper)** | Text-to-speech | ✅ Yes, via `uvx` |
429
433
  | **[Kokoro-FastAPI](https://github.com/remsky/Kokoro-FastAPI)** | Premium TTS (optional) | ⚙️ Can be added later |
430
434
  | **[Wyoming openWakeWord](https://github.com/rhasspy/wyoming-openwakeword)** | Wake word detection | ✅ Yes, for `assistant` |
@@ -512,12 +516,13 @@ agent-cli install-extras rag memory vad
512
516
 
513
517
  • rag - RAG proxy server (ChromaDB, embeddings)
514
518
  • memory - Long-term memory proxy (ChromaDB)
515
- • vad - Voice Activity Detection (silero-vad)
519
+ • vad - Voice Activity Detection (Silero VAD via ONNX)
516
520
  • audio - Local audio recording/playback
517
521
  • piper - Local Piper TTS engine
518
522
  • kokoro - Kokoro neural TTS engine
519
523
  • faster-whisper - Whisper ASR for CUDA/CPU
520
524
  • mlx-whisper - Whisper ASR for Apple Silicon
525
+ • whisper-transformers - Whisper ASR via HuggingFace transformers (safetensors)
521
526
  • wyoming - Wyoming protocol for ASR/TTS servers
522
527
  • server - FastAPI server components
523
528
  • speed - Audio speed adjustment
@@ -534,7 +539,8 @@ agent-cli install-extras rag memory vad
534
539
 
535
540
  ╭─ Arguments ────────────────────────────────────────────────────────────────────────────╮
536
541
  │ extras [EXTRAS]... Extras to install: rag, memory, vad, audio, piper, kokoro, │
537
- │ faster-whisper, mlx-whisper, wyoming, server, speed, llm
542
+ │ faster-whisper, mlx-whisper, whisper-transformers, wyoming, │
543
+ │ server, speed, llm │
538
544
  ╰────────────────────────────────────────────────────────────────────────────────────────╯
539
545
  ╭─ Options ──────────────────────────────────────────────────────────────────────────────╮
540
546
  │ --list -l Show available extras with descriptions (what each one enables) │
@@ -630,8 +636,8 @@ the `[defaults]` section of your configuration file.
630
636
  ```toml
631
637
  [defaults]
632
638
  # llm_provider = "ollama" # 'ollama', 'openai', or 'gemini'
633
- # asr_provider = "wyoming" # 'wyoming' or 'openai'
634
- # tts_provider = "wyoming" # 'wyoming', 'openai', or 'kokoro'
639
+ # asr_provider = "wyoming" # 'wyoming', 'openai', or 'gemini'
640
+ # tts_provider = "wyoming" # 'wyoming', 'openai', 'kokoro', or 'gemini'
635
641
  # openai_api_key = "sk-..."
636
642
  # gemini_api_key = "..."
637
643
  ```
@@ -643,7 +649,7 @@ the `[defaults]` section of your configuration file.
643
649
  **Workflow:** This is a simple, one-shot command.
644
650
 
645
651
  1. It reads text from your system clipboard (or from a direct argument).
646
- 2. It sends the text to a local Ollama LLM with a prompt to perform only technical corrections.
652
+ 2. It sends the text to your configured LLM provider (default: Ollama) with a prompt to perform only technical corrections.
647
653
  3. The corrected text is copied back to your clipboard, replacing the original.
648
654
 
649
655
  **How to Use It:** This tool is ideal for integrating with a system-wide hotkey.
@@ -334,7 +334,7 @@ Our installation scripts automatically handle all dependencies:
334
334
  |---------|---------|-----------------|
335
335
  | **[Ollama](https://ollama.ai/)** | Local LLM for text processing | ✅ Yes, with default model |
336
336
  | **[Wyoming Faster Whisper](https://github.com/rhasspy/wyoming-faster-whisper)** | Speech-to-text | ✅ Yes, via `uvx` |
337
- | **[`agent-cli server whisper`](docs/commands/server/whisper.md)** | Speech-to-text (alternative) | ✅ Built-in, `pip install "agent-cli[whisper]"` |
337
+ | **[`agent-cli server whisper`](docs/commands/server/whisper.md)** | Speech-to-text (alternative) | ✅ Built-in, `pip install "agent-cli[faster-whisper]"` |
338
338
  | **[Wyoming Piper](https://github.com/rhasspy/wyoming-piper)** | Text-to-speech | ✅ Yes, via `uvx` |
339
339
  | **[Kokoro-FastAPI](https://github.com/remsky/Kokoro-FastAPI)** | Premium TTS (optional) | ⚙️ Can be added later |
340
340
  | **[Wyoming openWakeWord](https://github.com/rhasspy/wyoming-openwakeword)** | Wake word detection | ✅ Yes, for `assistant` |
@@ -422,12 +422,13 @@ 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
429
429
  • faster-whisper - Whisper ASR for CUDA/CPU
430
430
  • mlx-whisper - Whisper ASR for Apple Silicon
431
+ • whisper-transformers - Whisper ASR via HuggingFace transformers (safetensors)
431
432
  • wyoming - Wyoming protocol for ASR/TTS servers
432
433
  • server - FastAPI server components
433
434
  • speed - Audio speed adjustment
@@ -444,7 +445,8 @@ agent-cli install-extras rag memory vad
444
445
 
445
446
  ╭─ Arguments ────────────────────────────────────────────────────────────────────────────╮
446
447
  │ extras [EXTRAS]... Extras to install: rag, memory, vad, audio, piper, kokoro, │
447
- │ faster-whisper, mlx-whisper, wyoming, server, speed, llm
448
+ │ faster-whisper, mlx-whisper, whisper-transformers, wyoming, │
449
+ │ server, speed, llm │
448
450
  ╰────────────────────────────────────────────────────────────────────────────────────────╯
449
451
  ╭─ Options ──────────────────────────────────────────────────────────────────────────────╮
450
452
  │ --list -l Show available extras with descriptions (what each one enables) │
@@ -540,8 +542,8 @@ the `[defaults]` section of your configuration file.
540
542
  ```toml
541
543
  [defaults]
542
544
  # llm_provider = "ollama" # 'ollama', 'openai', or 'gemini'
543
- # asr_provider = "wyoming" # 'wyoming' or 'openai'
544
- # tts_provider = "wyoming" # 'wyoming', 'openai', or 'kokoro'
545
+ # asr_provider = "wyoming" # 'wyoming', 'openai', or 'gemini'
546
+ # tts_provider = "wyoming" # 'wyoming', 'openai', 'kokoro', or 'gemini'
545
547
  # openai_api_key = "sk-..."
546
548
  # gemini_api_key = "..."
547
549
  ```
@@ -553,7 +555,7 @@ the `[defaults]` section of your configuration file.
553
555
  **Workflow:** This is a simple, one-shot command.
554
556
 
555
557
  1. It reads text from your system clipboard (or from a direct argument).
556
- 2. It sends the text to a local Ollama LLM with a prompt to perform only technical corrections.
558
+ 2. It sends the text to your configured LLM provider (default: Ollama) with a prompt to perform only technical corrections.
557
559
  3. The corrected text is copied back to your clipboard, replacing the original.
558
560
 
559
561
  **How to Use It:** This tool is ideal for integrating with a system-wide hotkey.
@@ -6,12 +6,16 @@
6
6
  ]
7
7
  ],
8
8
  "faster-whisper": [
9
- "TODO: add description",
10
- []
9
+ "Whisper ASR via CTranslate2",
10
+ [
11
+ "faster_whisper"
12
+ ]
11
13
  ],
12
14
  "kokoro": [
13
- "TODO: add description",
14
- []
15
+ "Kokoro neural TTS (GPU)",
16
+ [
17
+ "kokoro"
18
+ ]
15
19
  ],
16
20
  "llm": [
17
21
  "LLM framework (pydantic-ai)",
@@ -28,12 +32,16 @@
28
32
  ]
29
33
  ],
30
34
  "mlx-whisper": [
31
- "TODO: add description",
32
- []
35
+ "Whisper ASR for Apple Silicon",
36
+ [
37
+ "mlx_whisper"
38
+ ]
33
39
  ],
34
40
  "piper": [
35
- "TODO: add description",
36
- []
41
+ "Piper TTS (CPU)",
42
+ [
43
+ "piper"
44
+ ]
37
45
  ],
38
46
  "rag": [
39
47
  "RAG proxy (ChromaDB, embeddings)",
@@ -55,9 +63,16 @@
55
63
  ]
56
64
  ],
57
65
  "vad": [
58
- "Voice Activity Detection (silero-vad)",
66
+ "Voice Activity Detection (Silero VAD via ONNX)",
67
+ [
68
+ "onnxruntime"
69
+ ]
70
+ ],
71
+ "whisper-transformers": [
72
+ "Whisper ASR via HuggingFace transformers",
59
73
  [
60
- "silero_vad"
74
+ "transformers",
75
+ "torch"
61
76
  ]
62
77
  ],
63
78
  "wyoming": [
@@ -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
@@ -0,0 +1,256 @@
1
+ # This file was autogenerated by uv via the following command:
2
+ # uv export --extra whisper-transformers --no-dev --no-emit-project --no-hashes
3
+ annotated-doc==0.0.4
4
+ # via fastapi
5
+ annotated-types==0.7.0
6
+ # via pydantic
7
+ anyio==4.12.1
8
+ # via
9
+ # httpx
10
+ # starlette
11
+ # watchfiles
12
+ certifi==2026.1.4
13
+ # via
14
+ # httpcore
15
+ # httpx
16
+ # requests
17
+ # sentry-sdk
18
+ charset-normalizer==3.4.4
19
+ # via requests
20
+ click==8.3.1
21
+ # via
22
+ # rich-toolkit
23
+ # typer
24
+ # typer-slim
25
+ # uvicorn
26
+ colorama==0.4.6 ; sys_platform == 'win32'
27
+ # via
28
+ # click
29
+ # tqdm
30
+ # uvicorn
31
+ dnspython==2.8.0
32
+ # via email-validator
33
+ dotenv==0.9.9
34
+ # via agent-cli
35
+ email-validator==2.3.0
36
+ # via
37
+ # fastapi
38
+ # pydantic
39
+ fastapi==0.128.0
40
+ # via agent-cli
41
+ fastapi-cli==0.0.20
42
+ # via fastapi
43
+ fastapi-cloud-cli==0.10.1
44
+ # via fastapi-cli
45
+ fastar==0.8.0
46
+ # via fastapi-cloud-cli
47
+ filelock==3.20.3
48
+ # via
49
+ # huggingface-hub
50
+ # torch
51
+ # transformers
52
+ fsspec==2026.1.0
53
+ # via
54
+ # huggingface-hub
55
+ # torch
56
+ h11==0.16.0
57
+ # via
58
+ # httpcore
59
+ # uvicorn
60
+ hf-xet==1.2.0 ; platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'
61
+ # via huggingface-hub
62
+ httpcore==1.0.9
63
+ # via httpx
64
+ httptools==0.7.1
65
+ # via uvicorn
66
+ httpx==0.28.1
67
+ # via
68
+ # agent-cli
69
+ # fastapi
70
+ # fastapi-cloud-cli
71
+ huggingface-hub==0.36.0
72
+ # via
73
+ # tokenizers
74
+ # transformers
75
+ idna==3.11
76
+ # via
77
+ # anyio
78
+ # email-validator
79
+ # httpx
80
+ # requests
81
+ jinja2==3.1.6
82
+ # via
83
+ # fastapi
84
+ # torch
85
+ markdown-it-py==4.0.0
86
+ # via rich
87
+ markupsafe==3.0.3
88
+ # via jinja2
89
+ mdurl==0.1.2
90
+ # via markdown-it-py
91
+ mpmath==1.3.0
92
+ # via sympy
93
+ networkx==3.6.1
94
+ # via torch
95
+ numpy==2.3.5
96
+ # via transformers
97
+ nvidia-cublas-cu12==12.8.4.1 ; platform_machine == 'x86_64' and sys_platform == 'linux'
98
+ # via
99
+ # nvidia-cudnn-cu12
100
+ # nvidia-cusolver-cu12
101
+ # torch
102
+ nvidia-cuda-cupti-cu12==12.8.90 ; platform_machine == 'x86_64' and sys_platform == 'linux'
103
+ # via torch
104
+ nvidia-cuda-nvrtc-cu12==12.8.93 ; platform_machine == 'x86_64' and sys_platform == 'linux'
105
+ # via torch
106
+ nvidia-cuda-runtime-cu12==12.8.90 ; platform_machine == 'x86_64' and sys_platform == 'linux'
107
+ # via torch
108
+ nvidia-cudnn-cu12==9.10.2.21 ; platform_machine == 'x86_64' and sys_platform == 'linux'
109
+ # via torch
110
+ nvidia-cufft-cu12==11.3.3.83 ; platform_machine == 'x86_64' and sys_platform == 'linux'
111
+ # via torch
112
+ nvidia-cufile-cu12==1.13.1.3 ; platform_machine == 'x86_64' and sys_platform == 'linux'
113
+ # via torch
114
+ nvidia-curand-cu12==10.3.9.90 ; platform_machine == 'x86_64' and sys_platform == 'linux'
115
+ # via torch
116
+ nvidia-cusolver-cu12==11.7.3.90 ; platform_machine == 'x86_64' and sys_platform == 'linux'
117
+ # via torch
118
+ nvidia-cusparse-cu12==12.5.8.93 ; platform_machine == 'x86_64' and sys_platform == 'linux'
119
+ # via
120
+ # nvidia-cusolver-cu12
121
+ # torch
122
+ nvidia-cusparselt-cu12==0.7.1 ; platform_machine == 'x86_64' and sys_platform == 'linux'
123
+ # via torch
124
+ nvidia-nccl-cu12==2.27.5 ; platform_machine == 'x86_64' and sys_platform == 'linux'
125
+ # via torch
126
+ nvidia-nvjitlink-cu12==12.8.93 ; platform_machine == 'x86_64' and sys_platform == 'linux'
127
+ # via
128
+ # nvidia-cufft-cu12
129
+ # nvidia-cusolver-cu12
130
+ # nvidia-cusparse-cu12
131
+ # torch
132
+ nvidia-nvshmem-cu12==3.3.20 ; platform_machine == 'x86_64' and sys_platform == 'linux'
133
+ # via torch
134
+ nvidia-nvtx-cu12==12.8.90 ; platform_machine == 'x86_64' and sys_platform == 'linux'
135
+ # via torch
136
+ packaging==25.0
137
+ # via
138
+ # huggingface-hub
139
+ # transformers
140
+ psutil==7.2.1 ; sys_platform == 'win32'
141
+ # via agent-cli
142
+ pydantic==2.12.5
143
+ # via
144
+ # agent-cli
145
+ # fastapi
146
+ # fastapi-cloud-cli
147
+ # pydantic-extra-types
148
+ # pydantic-settings
149
+ pydantic-core==2.41.5
150
+ # via pydantic
151
+ pydantic-extra-types==2.11.0
152
+ # via fastapi
153
+ pydantic-settings==2.12.0
154
+ # via fastapi
155
+ pygments==2.19.2
156
+ # via rich
157
+ pyperclip==1.11.0
158
+ # via agent-cli
159
+ python-dotenv==1.2.1
160
+ # via
161
+ # dotenv
162
+ # pydantic-settings
163
+ # uvicorn
164
+ python-multipart==0.0.21
165
+ # via fastapi
166
+ pyyaml==6.0.3
167
+ # via
168
+ # huggingface-hub
169
+ # transformers
170
+ # uvicorn
171
+ regex==2026.1.15
172
+ # via transformers
173
+ requests==2.32.5
174
+ # via
175
+ # huggingface-hub
176
+ # transformers
177
+ rich==14.2.0
178
+ # via
179
+ # agent-cli
180
+ # rich-toolkit
181
+ # typer
182
+ # typer-slim
183
+ rich-toolkit==0.17.1
184
+ # via
185
+ # fastapi-cli
186
+ # fastapi-cloud-cli
187
+ rignore==0.7.6
188
+ # via fastapi-cloud-cli
189
+ safetensors==0.7.0
190
+ # via transformers
191
+ sentry-sdk==2.49.0
192
+ # via fastapi-cloud-cli
193
+ setproctitle==1.3.7
194
+ # via agent-cli
195
+ setuptools==80.9.0 ; python_full_version >= '3.12'
196
+ # via torch
197
+ shellingham==1.5.4
198
+ # via
199
+ # typer
200
+ # typer-slim
201
+ starlette==0.50.0
202
+ # via fastapi
203
+ sympy==1.14.0
204
+ # via torch
205
+ tokenizers==0.22.2
206
+ # via transformers
207
+ torch==2.9.1
208
+ # via agent-cli
209
+ tqdm==4.67.1
210
+ # via
211
+ # huggingface-hub
212
+ # transformers
213
+ transformers==4.57.5
214
+ # via agent-cli
215
+ triton==3.5.1 ; platform_machine == 'x86_64' and sys_platform == 'linux'
216
+ # via torch
217
+ typer==0.21.1
218
+ # via
219
+ # agent-cli
220
+ # fastapi-cli
221
+ # fastapi-cloud-cli
222
+ typer-slim==0.21.1
223
+ # via agent-cli
224
+ typing-extensions==4.15.0
225
+ # via
226
+ # anyio
227
+ # fastapi
228
+ # huggingface-hub
229
+ # pydantic
230
+ # pydantic-core
231
+ # pydantic-extra-types
232
+ # rich-toolkit
233
+ # starlette
234
+ # torch
235
+ # typer
236
+ # typer-slim
237
+ # typing-inspection
238
+ typing-inspection==0.4.2
239
+ # via
240
+ # pydantic
241
+ # pydantic-settings
242
+ urllib3==2.3.0
243
+ # via
244
+ # requests
245
+ # sentry-sdk
246
+ uvicorn==0.40.0
247
+ # via
248
+ # fastapi
249
+ # fastapi-cli
250
+ # fastapi-cloud-cli
251
+ uvloop==0.22.1 ; platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32'
252
+ # via uvicorn
253
+ watchfiles==1.1.1
254
+ # via uvicorn
255
+ websockets==15.0.1
256
+ # via uvicorn
@@ -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)
@@ -13,7 +13,10 @@
13
13
  [defaults]
14
14
 
15
15
  # --- Provider Selection ---
16
- # Select the default provider for each service ("ollama"/"openai"/"gemini" for LLM, "wyoming"/"openai" for ASR).
16
+ # Select the default provider for each service.
17
+ # LLM: "ollama", "openai", or "gemini"
18
+ # ASR: "wyoming", "openai", or "gemini"
19
+ # TTS: "wyoming", "openai", "kokoro", or "gemini"
17
20
  llm-provider = "ollama" # "local" still works as a deprecated alias
18
21
  tts-provider = "wyoming"
19
22