diff --git a/TTS/TikTok.py b/TTS/TikTok.py index 743118c..b771fec 100644 --- a/TTS/TikTok.py +++ b/TTS/TikTok.py @@ -2,6 +2,7 @@ import base64 from utils import settings import random import requests +import json from requests.adapters import HTTPAdapter, Retry # from profanity_filter import ProfanityFilter @@ -63,7 +64,8 @@ noneng = [ class TikTok: # TikTok Text-to-Speech Wrapper def __init__(self): self.URI_BASE = ( - "https://api16-normal-useast5.us.tiktokv.com/media/api/text/speech/invoke/?text_speaker=" + #"https://api16-normal-useast5.us.tiktokv.com/media/api/text/speech/invoke/?text_speaker=" + "https://tiktok-tts.weilnet.workers.dev/api/generation" ) self.max_chars = 300 self.voices = {"human": human, "nonhuman": nonhuman, "noneng": noneng} @@ -81,7 +83,21 @@ class TikTok: # TikTok Text-to-Speech Wrapper ) ) try: - r = requests.post(f"{self.URI_BASE}{voice}&req_text={text}&speaker_map_type=0") + payload = json.dumps({ + "text": text, + "voice": voice + }) + + headers = { + 'authority': 'tiktok-tts.weilnet.workers.dev', + 'accept': '*/*', + 'content-type': 'application/json', + } + + #r = requests.post(f"{self.URI_BASE}{voice}&req_text={text}&speaker_map_type=0") + r = requests.post(self.URI_BASE, headers=headers, data=payload) + #print(r.text) + except requests.exceptions.SSLError: # https://stackoverflow.com/a/47475019/18516611 session = requests.Session() @@ -89,9 +105,12 @@ class TikTok: # TikTok Text-to-Speech Wrapper adapter = HTTPAdapter(max_retries=retry) session.mount("http://", adapter) session.mount("https://", adapter) - r = session.post(f"{self.URI_BASE}{voice}&req_text={text}&speaker_map_type=0") + r = requests.post(self.URI_BASE, headers=headers, data=payload) + + except Exception as e: + print(e) # print(r.text) - vstr = [r.json()["data"]["v_str"]][0] + vstr = r.json()["data"] b64d = base64.b64decode(vstr) with open(filepath, "wb") as out: