File size: 784 Bytes
0192a4b
17b81a5
0ed5ef4
 
0192a4b
 
 
 
0ed5ef4
 
0192a4b
 
 
 
 
 
 
 
 
0ed5ef4
0192a4b
0ed5ef4
0192a4b
 
 
 
 
 
 
 
0ed5ef4
17b81a5
0192a4b
0ed5ef4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import requests
import time
from functools import lru_cache


class StatusError(Exception):
    pass

@lru_cache(maxsize=None)
def synthesis(text, speaker):
    url = f"https://api.tts.quest/v3/voicevox/synthesis?text={text}&speaker={speaker}"
    resp = requests.get(url)
    resp.raise_for_status()
    data = resp.json()
    is_ready = check_audio_status(data["audioStatusUrl"])
    if not is_ready:
        raise StatusError("Unexpected status")

    resp = requests.get(data["mp3DownloadUrl"])
    return resp.content
    


def check_audio_status(url):
    is_ready = False
    while not is_ready:
        resp = requests.get(url)
        resp.raise_for_status()
        data = resp.json()
        is_ready = data["isAudioReady"]
        time.sleep(1)

    return is_ready