mirror of
https://github.com/Paillat-dev/viralfactory.git
synced 2026-01-02 09:16:19 +00:00
fix(GenerationContext.py): fix typo in variable name powerfulllmengine to powerfulllmengine for better readability
feat(GenerationContext.py): add setup_dir method to create a directory for output files with a timestamp feat(GenerationContext.py): call setup_dir method before generating script and synthesizing audio to ensure output directory exists feat(prompts/fix_captions.yaml): add a new prompt file to provide instructions for fixing captions fix(BaseTTSEngine.py): add force_duration method to adjust audio clip duration if it exceeds a specified duration feat(CoquiTTSEngine.py): add options for forcing duration and specifying duration in the UI feat(utils/prompting.py): add get_prompt function to load prompt files from a specified location fix(gradio_ui.py): set equal_height=True for engine_rows to ensure consistent height for engine options
This commit is contained in:
@@ -1,10 +1,23 @@
|
||||
import moviepy.editor as mp
|
||||
from abc import ABC, abstractmethod
|
||||
# Assuming BaseEngine is defined elsewhere in your project
|
||||
from ..BaseEngine import BaseEngine
|
||||
|
||||
|
||||
class BaseTTSEngine(BaseEngine):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def synthesize(self, text: str, path: str) -> str:
|
||||
pass
|
||||
|
||||
def force_duration(self, duration: float, path: str):
|
||||
audio_clip = mp.AudioFileClip(path)
|
||||
|
||||
if audio_clip.duration > duration:
|
||||
speed_factor = audio_clip.duration / duration
|
||||
|
||||
new_audio = audio_clip.fx(mp.vfx.speedx, speed_factor, final_duration=duration)
|
||||
|
||||
new_audio.write_audiofile(path, codec='libmp3lame')
|
||||
|
||||
audio_clip.close()
|
||||
Reference in New Issue
Block a user