papayaga's picture
voice generation and first story working
49a7070
raw
history blame
1.3 kB
'''
generates voice using play.ht api
returns a url of the generated mp3
'''
import requests
import sseclient
from loguru import logger
import os
import helpers
from pprint import pprint
import json
from tenacity import retry, wait_random_exponential, stop_after_attempt
url = "https://play.ht/api/v2/tts"
user_id = os.environ["PLAYHT_USERID"]
api_key = os.environ["PLAYHT_SECRETKEY"]
headers = {
"accept": "text/event-stream",
"content-type": "application/json",
"AUTHORIZATION": f"Bearer {api_key}",
"X-USER-ID": user_id
}
valid_voices = ["dylan"]
'''
generate new saying with play.ht
'''
def say_new(text, voice="dylan"):
payload = {
"quality": "medium",
"output_format": "mp3",
"speed": 1,
"sample_rate": 24000,
"text": text,
"voice": voice
}
response = requests.post(url, stream=True, headers=headers, json=payload)
stream_url = response.headers["content-location"]
resp = requests.get(stream_url, stream=True, headers=headers)
client = sseclient.SSEClient(resp)
for event in client.events():
if event.data:
#pprint(event.data)
if helpers.is_valid_json(event.data): # play.ht api is unrealiable
e = json.loads(event.data)
if e["stage"] == "complete":
return(e["url"])