Spaces:
Sleeping
Sleeping
| import requests | |
| import json | |
| def test_kokoro_tts_api(): | |
| """Example of how to use the Kokoro TTS API""" | |
| # API endpoint | |
| url = "http://localhost:7860/tts" | |
| # Text to convert to speech (using the example from the user's request) | |
| text = """ | |
| [Kokoro](/kˈOkəɹO/) is an open-weight TTS model with 82 million parameters. Despite its lightweight architecture, it delivers comparable quality to larger models while being significantly faster and more cost-efficient. With Apache-licensed weights, [Kokoro](/kˈOkəɹO/) can be deployed anywhere from production environments to personal projects. | |
| """ | |
| # Prepare the request data | |
| data = { | |
| "text": text, | |
| "voice": "af_heart", # Available voices: af_heart, af_sky, af_bella, etc. | |
| "lang_code": "a" # 'a' for auto-detect | |
| } | |
| try: | |
| print("Sending request to Kokoro TTS API...") | |
| response = requests.post(url, data=data) | |
| if response.status_code == 200: | |
| # Save the generated audio | |
| output_filename = "kokoro_generated_speech.wav" | |
| with open(output_filename, "wb") as f: | |
| f.write(response.content) | |
| print(f"Success! Generated speech saved as {output_filename}") | |
| else: | |
| print(f"Error: {response.status_code}") | |
| print(response.text) | |
| except requests.exceptions.ConnectionError: | |
| print("Error: Could not connect to the API. Make sure the server is running on http://localhost:7860") | |
| except Exception as e: | |
| print(f"Error: {e}") | |
| def test_kokoro_tts_json_api(): | |
| """Example of using the JSON endpoint""" | |
| # API endpoint | |
| url = "http://localhost:7860/tts-json" | |
| # Text to convert to speech | |
| text = "Hello, this is a test of the Kokoro TTS system using the JSON API endpoint." | |
| # Prepare the JSON request | |
| data = { | |
| "text": text, | |
| "voice": "af_bella", | |
| "lang_code": "a" | |
| } | |
| headers = { | |
| "Content-Type": "application/json" | |
| } | |
| try: | |
| print("Sending JSON request to Kokoro TTS API...") | |
| response = requests.post(url, json=data, headers=headers) | |
| if response.status_code == 200: | |
| # Save the generated audio | |
| output_filename = "kokoro_json_speech.wav" | |
| with open(output_filename, "wb") as f: | |
| f.write(response.content) | |
| print(f"Success! Generated speech saved as {output_filename}") | |
| else: | |
| print(f"Error: {response.status_code}") | |
| print(response.text) | |
| except requests.exceptions.ConnectionError: | |
| print("Error: Could not connect to the API. Make sure the server is running on http://localhost:7860") | |
| except Exception as e: | |
| print(f"Error: {e}") | |
| def get_available_voices(): | |
| """Get list of available voices""" | |
| try: | |
| response = requests.get("http://localhost:7860/voices") | |
| if response.status_code == 200: | |
| voices = response.json() | |
| print("Available voices:", voices["voices"]) | |
| return voices["voices"] | |
| else: | |
| print("Failed to get voices:", response.status_code) | |
| return [] | |
| except requests.exceptions.ConnectionError: | |
| print("API is not running. Start it with: uvicorn app:app --host 0.0.0.0 --port 7860") | |
| return [] | |
| def check_api_health(): | |
| """Check if the API is running""" | |
| try: | |
| response = requests.get("http://localhost:7860/health") | |
| if response.status_code == 200: | |
| print("API is healthy:", response.json()) | |
| return True | |
| else: | |
| print("API health check failed:", response.status_code) | |
| return False | |
| except requests.exceptions.ConnectionError: | |
| print("API is not running. Start it with: uvicorn app:app --host 0.0.0.0 --port 7860") | |
| return False | |
| if __name__ == "__main__": | |
| print("Kokoro TTS API Client Example") | |
| print("=" * 35) | |
| # First check if API is running | |
| if check_api_health(): | |
| print() | |
| # Get available voices | |
| voices = get_available_voices() | |
| print() | |
| # Test the TTS functionality with form data | |
| print("Testing form-data endpoint...") | |
| test_kokoro_tts_api() | |
| print() | |
| # Test the TTS functionality with JSON | |
| print("Testing JSON endpoint...") | |
| test_kokoro_tts_json_api() | |
| else: | |
| print("\nPlease start the API server first:") | |
| print("uvicorn app:app --host 0.0.0.0 --port 7860") |