Spaces:
Running on Zero
Running on Zero
| """Example client for the OmniVoice ZeroGPU batch endpoint (Gradio API). | |
| Usage: | |
| pip install gradio_client | |
| python client_example.py salmanbvps/omnivoice-batch-tts [ref.wav "ref transcript"] | |
| Sends a batch (auto + voice-design, and -- if a ref wav is given -- voice-clone) | |
| in a single API call and writes out_0.wav, out_1.wav, ... | |
| """ | |
| import base64 | |
| import json | |
| import sys | |
| from gradio_client import Client | |
| def b64_file(path: str) -> str: | |
| with open(path, "rb") as f: | |
| return base64.b64encode(f.read()).decode("ascii") | |
| def main(): | |
| if len(sys.argv) < 2: | |
| print(__doc__) | |
| sys.exit(1) | |
| space = sys.argv[1] # "owner/space" or full URL | |
| items = [ | |
| {"text": "Hello from OmniVoice, generated in a single batched call.", | |
| "language": "en"}, | |
| {"text": "This voice was designed from a text instruction.", | |
| "language": "en", "instruct": "female, british accent"}, | |
| ] | |
| if len(sys.argv) >= 3: | |
| items.append({ | |
| "text": "And this one is cloned from your reference audio.", | |
| "language": "en", | |
| "ref_audio_b64": b64_file(sys.argv[2]), | |
| "ref_text": sys.argv[3] if len(sys.argv) >= 4 else None, | |
| }) | |
| payload = {"items": items, "num_step": 32, "guidance_scale": 2.0, | |
| "audio_format": "wav"} | |
| client = Client(space) | |
| result = client.predict(json.dumps(payload), api_name="/batch") | |
| data = result if isinstance(result, dict) else json.loads(result) | |
| if "error" in data: | |
| print("Error:", data["error"]) | |
| sys.exit(1) | |
| for r in data["results"]: | |
| i = r["index"] | |
| if r["status"] != "success": | |
| print(f"[{i}] ERROR: {r.get('error')}") | |
| continue | |
| out = f"out_{i}.wav" | |
| with open(out, "wb") as f: | |
| f.write(base64.b64decode(r["audio_b64"])) | |
| print(f"[{i}] {r['duration']}s -> {out}") | |
| if __name__ == "__main__": | |
| main() | |