Spaces:
Sleeping
Sleeping
File size: 2,229 Bytes
b42a9c7 0242288 c21d719 b42a9c7 0242288 aa87011 b42a9c7 3a78a97 aa87011 3a78a97 a30208d 4d2f91b c21d719 0242288 0b137ef aa87011 0b137ef aa87011 b33151f aa87011 4cccf90 aa87011 3a78a97 b33151f 0b137ef 3a78a97 b33151f aa87011 0242288 0b137ef 3a78a97 0b137ef 3a78a97 aa87011 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | import os
import tempfile
from gtts import gTTS
from pydub import AudioSegment
import moviepy.editor as mp
from pocketsphinx import AudioFile
def merge_video_audio(video_file, audio_file, output_file):
video_clip = mp.VideoFileClip(video_file)
if audio_file is not None:
audio_clip = AudioSegment.from_wav(audio_file)
if audio_clip.duration < video_clip.duration:
audio_clip = audio_clip.set_duration(video_clip.duration)
else:
audio_clip = audio_clip.subclip(0, video_clip.duration)
video_clip = video_clip.set_audio(audio_clip)
video_clip.write_videofile(output_file, codec="libx264", audio_codec="aac", verbose=False)
def text_to_speech(text, lang='es'):
tts = gTTS(text=text, lang=lang, slow=False)
with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as temp_file:
tts.save(temp_file.name)
return temp_file.name
def transcribe_and_dub(video_file):
temp_folder = tempfile.mkdtemp()
try:
with mp.VideoFileClip(video_file) as video:
audio_file = os.path.join(temp_folder, "audio.wav")
video.audio.write_audiofile(audio_file, codec='pcm_s16le')
audio_transcription = []
with AudioFile(audio_file) as source:
audio_transcription = source.hypothesize()
text = " ".join(audio_transcription)
print(f"Texto reconocido: {text}")
dubbed_audio_file = text_to_speech(text)
print(f"Archivo de audio doblado: {dubbed_audio_file}")
original_audio = AudioSegment.from_wav(audio_file)
dubbed_audio = AudioSegment.from_mp3(dubbed_audio_file)
final_audio = original_audio.overlay(dubbed_audio)
video_with_dubbed_audio = mp.VideoFileClip(video_file).set_audio(final_audio)
dubbed_video_file = os.path.join(temp_folder, "dubbed_video.mp4")
video_with_dubbed_audio.write_videofile(dubbed_video_file, codec="libx264", audio_codec="aac", verbose=False)
print(f"Archivo de video doblado: {dubbed_video_file}")
return dubbed_video_file
except Exception as e:
print(f"Error durante la transcripción y el doblaje: {str(e)}")
return None
|