feat: scaffold stentor-gateway with FastAPI voice pipeline

Initialize the stentor-gateway project with WebSocket-based voice
pipeline orchestrating STT → Agent → TTS via OpenAI-compatible APIs.

- Add FastAPI app with WebSocket endpoint for audio streaming
- Add pipeline orchestration (stt_client, tts_client, agent_client)
- Add Pydantic Settings configuration and message models
- Add audio utilities for PCM/WAV conversion and resampling
- Add health check endpoints
- Add Dockerfile and pyproject.toml with dependencies
- Add initial test suite (pipeline, STT, TTS, WebSocket)
- Add comprehensive README covering gateway and ESP32 ear design
- Clean up .gitignore for Python/uv project
This commit is contained in:
2026-03-21 19:11:48 +00:00
parent 9ba9435883
commit 912593b796
27 changed files with 3985 additions and 138 deletions

View File

@@ -0,0 +1,45 @@
[project]
name = "stentor-gateway"
version = "0.1.0"
description = "Voice gateway connecting ESP32 audio hardware to AI agents via speech services"
requires-python = ">=3.12"
license = "MIT"
dependencies = [
"fastapi>=0.115",
"uvicorn[standard]>=0.34",
"websockets>=14.0",
"httpx>=0.28",
"pydantic>=2.10",
"pydantic-settings>=2.7",
"jinja2>=3.1",
"prometheus-client>=0.21",
]
[project.optional-dependencies]
dev = [
"pytest>=8.0",
"pytest-asyncio>=0.25",
"pytest-httpx>=0.35",
"ruff>=0.9",
]
[project.scripts]
stentor = "stentor.main:main"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src/stentor"]
[tool.ruff]
target-version = "py312"
line-length = 100
[tool.ruff.lint]
select = ["E", "F", "I", "N", "W", "UP", "B", "SIM", "RUF"]
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]