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:
2024-02-15 12:27:13 +01:00
parent 9f88e6d069
commit 57bcf0af8e
7 changed files with 73 additions and 9 deletions

View File

@@ -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()