| # --- Core app --- |
| # Keep gradio pinned to the README `sdk_version` so the Space runtime and pip agree. |
| # Must be >5.0.0 (fish-speech 2.0 requires it) but <5.28.0: the `mcp` extra that HF's |
| # builder auto-appends from 5.28 onward pulls pydantic>=2.11, which clashes with |
| # fish-speech's hard pin pydantic==2.9.2. 5.27.0 has no mcp extra, so the clash is avoided. |
| gradio==5.27.0 |
| spaces>=0.30.0 |
|
|
| # --- Phase 1: research / content generation --- |
| langgraph>=0.2.0 |
| langchain-core>=0.3.0 |
| huggingface_hub>=0.25.0 |
| ddgs>=6.0.0 |
|
|
| # --- Phase 2: Fish Audio (OpenAudio S1-mini) TTS --- |
| # fish-speech provides the inference engine + model code (no stable PyPI release). |
| # Pinned to the OpenAudio-S1 commit (781bf1c, 2025-10-20) whose FishTokenizer loads the |
| # model's tiktoken vocab directly. Do NOT bump to the S2-beta line (2026-03-10+): that |
| # refactor switched FishTokenizer to transformers AutoTokenizer, which can't read |
| # fishaudio/openaudio-s1-mini (it ships tokenizer.tiktoken + special_tokens.json, no |
| # tokenizer.json, with model_type=dual_ar) — yielding a None tokenizer and empty audio. |
| # This commit still exposes the dac decoder + TTSInferenceEngine + ServeTTSRequest API |
| # used in tts/engine.py, and keeps the same pydantic==2.9.2 pin (so gradio<5.28 holds). |
| fish-speech @ git+https://github.com/fishaudio/fish-speech.git@781bf1cd7afef831fc58928a6444a2161449dae5 |
|
|
| # Pin to 2.8.0 (matches fish-speech's torch<2.9.0). torchaudio 2.9 removed |
| # torchaudio.list_audio_backends() and migrated audio I/O to TorchCodec, which this |
| # S1-era fish-speech doesn't use — it calls list_audio_backends() in ReferenceLoader and |
| # torchaudio.load/save elsewhere. 2.8.0 is the version that loaded the models and reached |
| # generation on this ZeroGPU Space. torch and torchaudio versions must match exactly. |
| torch==2.8.0 |
| torchaudio==2.8.0 |
| numpy>=1.26.0 |
| soundfile>=0.12.1 |
|
|