|
|
|
@ -3,8 +3,8 @@ import os
|
|
|
|
|
import random
|
|
|
|
|
import re
|
|
|
|
|
|
|
|
|
|
import sox
|
|
|
|
|
import requests
|
|
|
|
|
from moviepy.editor import AudioFileClip, concatenate_audioclips, CompositeAudioClip
|
|
|
|
|
from requests.adapters import HTTPAdapter, Retry
|
|
|
|
|
|
|
|
|
|
# from profanity_filter import ProfanityFilter
|
|
|
|
@ -88,6 +88,7 @@ class TTTTSWrapper: # TikTok Text-to-Speech Wrapper
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
audio_clips = []
|
|
|
|
|
cbn = sox.Combiner()
|
|
|
|
|
|
|
|
|
|
chunkId = 0
|
|
|
|
|
for chunk in chunks:
|
|
|
|
@ -108,16 +109,20 @@ class TTTTSWrapper: # TikTok Text-to-Speech Wrapper
|
|
|
|
|
vstr = [r.json()["data"]["v_str"]][0]
|
|
|
|
|
b64d = base64.b64decode(vstr)
|
|
|
|
|
|
|
|
|
|
with open(f"{filename}-{chunkId}", "wb") as out:
|
|
|
|
|
with open(filename.replace(".mp3", f"-{chunkId}.mp3"), "wb") as out:
|
|
|
|
|
out.write(b64d)
|
|
|
|
|
|
|
|
|
|
audio_clips.append(AudioFileClip(f"{filename}-{chunkId}"))
|
|
|
|
|
audio_clips.append(filename.replace(".mp3", f"-{chunkId}.mp3"))
|
|
|
|
|
|
|
|
|
|
chunkId = chunkId + 1
|
|
|
|
|
|
|
|
|
|
audio_concat = concatenate_audioclips(audio_clips)
|
|
|
|
|
audio_composite = CompositeAudioClip([audio_concat])
|
|
|
|
|
audio_composite.write_audiofile(filename, 44100, 2, 2000, None)
|
|
|
|
|
if(len(audio_clips) > 1):
|
|
|
|
|
cbn.convert(samplerate=44100, n_channels=2)
|
|
|
|
|
cbn.build(
|
|
|
|
|
audio_clips, filename, 'concatenate'
|
|
|
|
|
)
|
|
|
|
|
else:
|
|
|
|
|
os.rename(audio_clips[0], filename)
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def randomvoice():
|
|
|
|
|