[build-system] requires = ["setuptools>=77.0.3", "wheel"] build-backend = "setuptools.build_meta" [project] name = "speech-to-speech" version = "0.2.11" description = "Low-latency speech-to-speech pipeline" readme = "README.md" requires-python = ">=3.10" license = "Apache-2.0" license-files = ["LICENSE"] authors = [ { name = "Hugging Face" }, ] keywords = ["speech-to-speech", "voice-agents", "speech-recognition", "text-to-speech", "openai"] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Multimedia :: Sound/Audio :: Speech", "Topic :: Scientific/Engineering :: Artificial Intelligence", ] dependencies = [ "fastapi>=0.115.0", "httpx>=0.28.0", "nltk==3.10.0", "numpy>=1.26.0,<2.4.4; platform_system == 'Darwin'", "numpy>=1.26.0; platform_system != 'Darwin'", "openai==2.28.0", "pillow>=10.0.0", "pydantic>=2.0", "rich>=13.0", "scipy>=1.10.0", "sounddevice==0.5.3; platform_system == 'Darwin'", "sounddevice>=0.5.0; platform_system != 'Darwin'", "soundfile>=0.13.0; platform_system == 'Darwin'", "torch==2.11.0; platform_system == 'Darwin'", "torch>=2.4.0; platform_system != 'Darwin'", "torchaudio==2.11.0; platform_system == 'Darwin'", "torchaudio>=2.4.0; platform_system != 'Darwin'", "transformers==5.6.2; platform_system == 'Darwin'", "transformers>=4.57.0; platform_system != 'Darwin'", "uvicorn>=0.30.0", "websockets>=12.0", "nano-parakeet>=0.2.0; platform_system != 'Darwin'", "faster-qwen3-tts[ggml]>=0.3.2; platform_system != 'Darwin' and platform_system != 'Windows'", "faster-qwen3-tts>=0.3.2; platform_system == 'Windows'", "lingua-language-detector>=2.0.2", "miniaudio==1.61; platform_system == 'Darwin'", "mlx==0.31.1; platform_system == 'Darwin'", "mlx-audio==0.4.2; platform_system == 'Darwin'", "mlx-lm==0.31.1; platform_system == 'Darwin'", "mlx-metal==0.31.1; platform_system == 'Darwin'", "misaki>=0.9.4; platform_system == 'Darwin'", "espeakng-loader>=0.2.4; platform_system == 'Darwin'", "spacy>=3.8.4; platform_system == 'Darwin'", "phonemizer-fork>=3.3.2; platform_system == 'Darwin'", ] [project.optional-dependencies] chattts = [ "ChatTTS>=0.1.1", ] facebook-mms = [ "transformers>=4.57.0", ] faster-whisper = [ "faster-whisper>=1.0.3", ] kokoro = [ "kokoro>=0.9.2; platform_system != 'Darwin'", ] language-detection = [ "lingua-language-detector>=2.0.2", ] mlx-lm = [ "mlx-lm==0.31.1; platform_system == 'Darwin'", "mlx-vlm==0.4.1; platform_system == 'Darwin'", ] paraformer = [ "funasr>=1.1.6", "modelscope>=1.17.1", "onnxruntime<1.24; python_version < '3.11'", ] pocket = [ "pocket-tts>=0.1.0", ] webrtc = [ "aiortc>=1.9.0", ] websocket = [ "websockets>=12.0", ] whisper-mlx = [ "lightning-whisper-mlx>=0.0.10; platform_system == 'Darwin'", ] [project.urls] Homepage = "https://github.com/huggingface/speech-to-speech" Repository = "https://github.com/huggingface/speech-to-speech" Issues = "https://github.com/huggingface/speech-to-speech/issues" [project.scripts] speech-to-speech = "speech_to_speech.s2s_pipeline:main" [dependency-groups] dev = [ "ruff", "mypy", "pytest", "pytest-asyncio", "websockets>=12.0", "aiortc>=1.9.0", ] [tool.pytest.ini_options] asyncio_mode = "auto" [tool.uv] package = true prerelease = "allow" [tool.setuptools.packages.find] where = ["src"] include = ["speech_to_speech*"] exclude = ["tests*"] [tool.setuptools.package-data] speech_to_speech = ["TTS/*.wav"] [tool.ruff] src = ["src"] line-length = 120 [tool.ruff.lint] select = ["E", "F", "I", "W"] ignore = ["E501"] [tool.mypy] python_version = "3.10" ignore_missing_imports = true warn_unused_configs = true check_untyped_defs = false