fix: improved TTS requests

fixes #64
pull/418/head
Jason 3 years ago
parent bff0881b80
commit 174df19be7

@ -15,7 +15,7 @@ THEME="LIGHT"
TIMES_TO_RUN="" TIMES_TO_RUN=""
MAX_COMMENT_LENGTH="500" MAX_COMMENT_LENGTH="500"
# Range is 0 -> 1 recommended around 0.8-0.9 # Range is 0 -> 1 recommended around 0.8-0.9
OPACITY="" OPACITY="1"
# see TTSwrapper.py for all valid options # see TTSwrapper.py for all valid options
VOICE="en_us_001" # e.g. en_us_002 VOICE="en_us_001" # e.g. en_us_002

@ -56,7 +56,7 @@ def run_many(times):
if __name__ == "__main__": if __name__ == "__main__":
try: try:
if getenv("TIMES_TO_RUN"): if getenv("TIMES_TO_RUN") and isinstance(int(getenv("TIMES_TO_RUN")), int):
run_many(int(getenv("TIMES_TO_RUN"))) run_many(int(getenv("TIMES_TO_RUN")))
else: else:
main() main()

@ -1,10 +1,11 @@
import re
import base64 import base64
import os import os
import random import random
import re
import requests import requests
from moviepy.editor import AudioFileClip, concatenate_audioclips, CompositeAudioClip from moviepy.editor import AudioFileClip, concatenate_audioclips, CompositeAudioClip
from requests.adapters import HTTPAdapter, Retry
# from profanity_filter import ProfanityFilter # from profanity_filter import ProfanityFilter
# pf = ProfanityFilter() # pf = ProfanityFilter()
@ -66,11 +67,11 @@ class TTTTSWrapper: # TikTok Text-to-Speech Wrapper
self.URI_BASE = "https://api16-normal-useast5.us.tiktokv.com/media/api/text/speech/invoke/?text_speaker=" self.URI_BASE = "https://api16-normal-useast5.us.tiktokv.com/media/api/text/speech/invoke/?text_speaker="
def tts( def tts(
self, self,
req_text: str = "TikTok Text To Speech", req_text: str = "TikTok Text To Speech",
filename: str = "title.mp3", filename: str = "title.mp3",
random_speaker: bool = False, random_speaker: bool = False,
censer=False, censer=False,
): ):
req_text = req_text.replace("+", "plus").replace(" ", "+").replace("&", "and") req_text = req_text.replace("+", "plus").replace(" ", "+").replace("&", "and")
if censer: if censer:
@ -90,9 +91,18 @@ class TTTTSWrapper: # TikTok Text-to-Speech Wrapper
chunkId = 0 chunkId = 0
for chunk in chunks: for chunk in chunks:
r = requests.post( try:
f"{self.URI_BASE}{voice}&req_text={chunk}&speaker_map_type=0" r = requests.post(
) f"{self.URI_BASE}{voice}&req_text={chunk}&speaker_map_type=0"
)
except requests.exceptions.SSLError:
# https://stackoverflow.com/a/47475019/18516611
session = requests.Session()
retry = Retry(connect=3, backoff_factor=0.5)
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)
r = session.post(f"{self.URI_BASE}{voice}&req_text={chunk}&speaker_map_type=0")
vstr = [r.json()["data"]["v_str"]][0] vstr = [r.json()["data"]["v_str"]][0]
b64d = base64.b64decode(vstr) b64d = base64.b64decode(vstr)

@ -43,7 +43,7 @@ def make_final_video(number_of_clips, length):
# Gather all images # Gather all images
image_clips = [] image_clips = []
for i in range(0, number_of_clips): for i in range(0, number_of_clips):
if opacity is None or int(opacity) >= 1: # opacity not set or is set to one OR MORE if opacity is None or float(opacity) >= 1: # opacity not set or is set to one OR MORE
image_clips.append( image_clips.append(
ImageClip(f"assets/temp/png/comment_{i}.png") ImageClip(f"assets/temp/png/comment_{i}.png")
.set_duration(audio_clips[i + 1].duration) .set_duration(audio_clips[i + 1].duration)
@ -58,7 +58,7 @@ def make_final_video(number_of_clips, length):
.resize(width=W - 100) .resize(width=W - 100)
.set_opacity(float(opacity)), .set_opacity(float(opacity)),
) )
if opacity is None or int(opacity) >= 1: # opacity not set or is set to one OR MORE if opacity is None or float(opacity) >= 1: # opacity not set or is set to one OR MORE
image_clips.insert( image_clips.insert(
0, 0,
ImageClip(f"assets/temp/png/title.png") ImageClip(f"assets/temp/png/title.png")

Loading…
Cancel
Save