| |
| import sys |
| import requests |
|
|
| |
| BASE_URL = "http://172.21.207.14:5000/" |
|
|
| def check_api_health(): |
| """Call the /api/health endpoint and display the result.""" |
| try: |
| response = requests.get(f"{BASE_URL}/api/health") |
| if response.status_code == 200: |
| data = response.json() |
| print("API Health:", data) |
| else: |
| print("Error:", response.text) |
| except Exception as e: |
| print("Error connecting to API Health endpoint:", e) |
|
|
| def check_voices(): |
| """Call the /api/voices endpoint and list available voices.""" |
| try: |
| response = requests.get(f"{BASE_URL}/api/voices") |
| if response.status_code == 200: |
| data = response.json() |
| voices = data.get("voices", []) |
| default_voice = data.get("default", "None") |
| print("\nDefault Voice:", default_voice) |
| print("Available Voices:") |
| for voice in voices: |
| print(" -", voice) |
| else: |
| print("Error:", response.text) |
| except Exception as e: |
| print("Error connecting to API Voices endpoint:", e) |
|
|
| def generate_speech(): |
| """Prompt for text and parameters, call the /api/tts endpoint, and save the generated audio.""" |
| text = input("Enter text to convert to speech: ").strip() |
| if not text: |
| print("Error: Text cannot be empty.") |
| return |
|
|
| voice = input("Enter voice to use (leave blank for default): ").strip() |
| if voice == "": |
| |
| try: |
| response = requests.get(f"{BASE_URL}/api/voices") |
| if response.status_code == 200: |
| voice = response.json().get("default", "") |
| print(f"Using default voice: {voice}") |
| else: |
| print("Unable to get default voice. Using empty voice name.") |
| except Exception as e: |
| print("Error getting default voice:", e) |
|
|
| output_format = input("Enter output format (wav/mp3/aac, default: wav): ").strip().lower() or "wav" |
| try: |
| speed = float(input("Enter speech speed (default: 1.0): ").strip() or 1.0) |
| except ValueError: |
| print("Invalid speed input. Using default speed 1.0.") |
| speed = 1.0 |
|
|
| payload = { |
| "text": text, |
| "voice": voice, |
| "format": output_format, |
| "speed": speed |
| } |
|
|
| print("\nGenerating speech...") |
| try: |
| response = requests.post(f"{BASE_URL}/api/tts", json=payload) |
| if response.status_code == 200: |
| content_type = response.headers.get("Content-Type", "") |
| filename = f"output.{output_format}" |
| with open(filename, "wb") as f: |
| f.write(response.content) |
| print(f"Audio generated and saved as '{filename}' (Content-Type: {content_type})") |
| else: |
| print("Error generating speech:", response.text) |
| except Exception as e: |
| print("Error connecting to API TTS endpoint:", e) |
|
|
| def main(): |
| while True: |
| print("\n==== Kokoro-TTS CLI Test ====") |
| print("1. Check API Health") |
| print("2. Check Voices") |
| print("3. Generate Speech") |
| print("4. Quit") |
| choice = input("Select an option (1-4): ").strip() |
|
|
| if choice == "1": |
| check_api_health() |
| elif choice == "2": |
| check_voices() |
| elif choice == "3": |
| generate_speech() |
| elif choice == "4": |
| print("Exiting.") |
| sys.exit(0) |
| else: |
| print("Invalid option. Please choose a number between 1 and 4.") |
|
|
| if __name__ == "__main__": |
| main() |
|
|