Source code for slashml.text_to_speech

import requests
import time

from enum import Enum
from .utils import generateURL, baseUrl, generateHeaders, formatResponse, getTaskStatus


[docs]class TextToSpeech: """Text To Speech Service """
[docs] class ServiceProvider(Enum): GOOGLE = "google" AWS = "aws"
[docs] @classmethod def choices(cls): return [key.value for key in cls]
_base_url = baseUrl("text-to-speech", "v1") _headers = None def __init__(self, api_key: str = None): self._headers = generateHeaders(api_key)
[docs] def submit_job(self, text: str, service_provider: ServiceProvider): """Submit Job to server""" url = generateURL(self._base_url, "jobs") payload = {"text": text, "service_provider": service_provider.value} response = requests.post(url, headers=self._headers, data=payload) return formatResponse(response)
[docs] def status(self, job_id: str, service_provider: ServiceProvider): """Check job status""" return getTaskStatus(self._base_url, self._headers, job_id, service_provider)
[docs] def execute(self, text: str, service_provider: ServiceProvider): """Waits for the job to be completed before returning a response""" url = generateURL(self._base_url, "jobs") payload = {"text": text, "service_provider": service_provider.value} response = requests.post(url, headers=self._headers, data=payload) job = formatResponse(response) assert job.status != "ERROR", f"{job}" print(f"Got Job ID: {job.id}") # check job status response = getTaskStatus(self._base_url, self._headers, job.id, service_provider) while response.status == "IN_PROGRESS": time.sleep(5) response = getTaskStatus(self._base_url, self._headers, job.id, service_provider) print(f"Response = {response}. Retrying in 5 seconds") return response