1 parent
bff0881b80
commit
174df19be7
4 files changed
+24
-14
No files matched your search
+1
-1
@@ -15,7 +15,7 @@ THEME="LIGHT"
|
||||
TIMES_TO_RUN=""
|
||||
MAX_COMMENT_LENGTH="500"
|
||||
# Range is 0 -> 1 recommended around 0.8-0.9
|
||||
OPACITY=""
|
||||
OPACITY="1"
|
||||
|
||||
# see TTSwrapper.py for all valid options
|
||||
VOICE="en_us_001" # e.g. en_us_002
|
||||
|
||||
@@ -56,7 +56,7 @@ def run_many(times):
|
||||
|
||||
if __name__ == "__main__":
|
||||
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")))
|
||||
else:
|
||||
main()
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import re
|
||||
|
||||
import base64
|
||||
import os
|
||||
import random
|
||||
import re
|
||||
|
||||
import requests
|
||||
from moviepy.editor import AudioFileClip, concatenate_audioclips, CompositeAudioClip
|
||||
from requests.adapters import HTTPAdapter, Retry
|
||||
|
||||
# from profanity_filter import 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="
|
||||
|
||||
def tts(
|
||||
self,
|
||||
req_text: str = "TikTok Text To Speech",
|
||||
filename: str = "title.mp3",
|
||||
random_speaker: bool = False,
|
||||
censer=False,
|
||||
self,
|
||||
req_text: str = "TikTok Text To Speech",
|
||||
filename: str = "title.mp3",
|
||||
random_speaker: bool = False,
|
||||
censer=False,
|
||||
):
|
||||
req_text = req_text.replace("+", "plus").replace(" ", "+").replace("&", "and")
|
||||
if censer:
|
||||
@@ -90,9 +91,18 @@ class TTTTSWrapper: # TikTok Text-to-Speech Wrapper
|
||||
|
||||
chunkId = 0
|
||||
for chunk in chunks:
|
||||
r = requests.post(
|
||||
f"{self.URI_BASE}{voice}&req_text={chunk}&speaker_map_type=0"
|
||||
)
|
||||
try:
|
||||
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]
|
||||
b64d = base64.b64decode(vstr)
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ def make_final_video(number_of_clips, length):
|
||||
# Gather all images
|
||||
image_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(
|
||||
ImageClip(f"assets/temp/png/comment_{i}.png")
|
||||
.set_duration(audio_clips[i + 1].duration)
|
||||
@@ -58,7 +58,7 @@ def make_final_video(number_of_clips, length):
|
||||
.resize(width=W - 100)
|
||||
.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(
|
||||
0,
|
||||
ImageClip(f"assets/temp/png/title.png")
|
||||
|
||||
Reference in new issue
Block a user