DEV Community

harshit-lyzr
harshit-lyzr

Posted on

Revolutionize Your Movie Script Translation with AI

In the digital age, creating multilingual content is essential to reach a broader audience. However, translating movie scripts while preserving their tone, style, and cultural context is a significant challenge. Our new AI Movie Script Autodubbing app, powered by Lyzr Automata and Streamlit, aims to simplify this process, making it seamless and efficient.

What is AI Movie Script Autodubbing?
AI Movie Script Autodubbing is an advanced application designed to translate movie scripts from one language to another while maintaining the original essence of the content. It leverages the powerful capabilities of the OpenAI Model and Lyzr Automata’s sophisticated pipelines to deliver accurate and culturally relevant translations.

How Does It Work?
User-Friendly Interface: Built using Streamlit, the app offers an intuitive interface where users can easily input their script and select the source and target languages.
Secure API Integration: Users can securely enter their OpenAI API key to access the GPT-4 Turbo model, ensuring privacy and data protection.
Advanced Translation Pipeline: Utilizing Lyzr Automata’s LinearSyncPipeline, the app follows a structured process to translate scripts accurately, maintaining the tone and style of the original content.

Key Features

Accurate Translations: The app ensures that translations are not only accurate but also convey the original meaning and emotions of the dialogues and descriptions.
Cultural Adaptation: It adapts cultural references appropriately, making sense to the target language audience.
Consistency: The app maintains the characters’ personalities and voices consistent with the original script.
Formatting Preservation: It preserves the formatting of the script, including scene headings, action lines, and dialogues.
Why Choose AI Movie Script Autodubbing?
AI Content Detector: Our app uses advanced AI technology similar to content detectors to ensure high-quality translations.
AI Content Generator: Leveraging capabilities akin to AI content generators, the app produces natural and fluent translations.

Setting Up the Environment
Imports:

Imports necessary libraries: streamlit, libraries from lyzr_automata

pip install lyzr_automata streamlit
Enter fullscreen mode Exit fullscreen mode
import streamlit as st
from lyzr_automata.ai_models.openai import OpenAIModel
from lyzr_automata import Agent,Task
from lyzr_automata.pipelines.linear_sync_pipeline import LinearSyncPipeline
from PIL import Image
Enter fullscreen mode Exit fullscreen mode

Sidebar Configuration
We create a sidebar for user inputs, including an API key input for accessing the OpenAI GPT-4 model. This ensures that the API key remains secure.

api = st.sidebar.text_input("Enter our OPENAI API KEY Here", type="password")
if api:
    openai_model = OpenAIModel(
        api_key=api,
        parameters={
            "model": "gpt-4-turbo-preview",
            "temperature": 0.2,
            "max_tokens": 1500,
        },
    )
else:
    st.sidebar.error("Please Enter Your OPENAI API KEY")
Enter fullscreen mode Exit fullscreen mode

api_documentation Function:

def script_translator(lang1, lang2, script):
    translator_agent = Agent(
        prompt_persona=f"You are a Script translator with over 10 years of experience in the film industry.You have a deep understanding of both {lang1} and {lang2} languages and is well-versed in the nuances of movie scripts.",
        role="Script Translation",
    )

    translation_task = Task(
        name="Script Translation Task",
        output_type=OutputType.TEXT,
        input_type=InputType.TEXT,
        model=openai_model,
        agent=translator_agent,
        log_output=True,
        instructions=f"""Translate the provided movie script from {lang1} to {lang2} while maintaining the original tone, style, and cultural context.
        Follow Below Instructions:
            - Ensure that the translation is accurate and conveys the original meaning and emotions of the dialogues and descriptions.
            - Adapt cultural references appropriately to make sense to a {lang2}-speaking audience.
            - Maintain the natural flow of conversations and descriptions, ensuring that the translated text sounds natural to native {lang2} speakers.
            - Keep the characters' personalities and voices consistent with the original script.
            - Preserve the formatting of the script, including scene headings, action lines, and dialogues.

        Script: {script}

        """,
    )

    output = LinearSyncPipeline(
        name="Script Translation",
        completion_message="Script Translation Done!",
        tasks=[
            translation_task
        ],
    ).run()
    return output[0]['task_output']
Enter fullscreen mode Exit fullscreen mode

def script_translator(lang1, lang2, script):: Defines a function named script_translator that takes three arguments:
lang1: The source language of the script.
lang2: The target language for translation.
script: The script content to be translated.
translator_agent = Agent(...): Creates an Agent object defining the prompt persona and role for the AI model. The persona describes the agent as a script translator with expertise in the source and target languages.
translation_task = Task(...): Creates a Task object defining the translation task. This includes the task name, output and input types, the AI model to be used, the agent persona, logging configuration, and instructions for the model. The instructions specify the translation goals, cultural adaptation considerations, maintaining natural flow and character consistency, and preserving script formatting.
output = LinearSyncPipeline(...): Creates a LinearSyncPipeline object specifying the pipeline name, completion message ("Script Translation Done!"), and the list of tasks to be executed (in this case, only the translation_task).
output.run(): This line executes the LinearSyncPipeline object. The run method likely triggers the translation task using the defined OpenAI model and agent.
return output[0]['task_output']: After running the pipeline, the code retrieves the output of the first task (the translation task) from the output list. The specific index ([0]) is used because there's only one task in this pipeline. The output likely contains the translated script text.

User Code Input:

language1 = st.text_input("Enter Your Script Language", placeholder="English")
language2 = st.text_input("Enter Translating language", placeholder="Hindi")
scripts = st.text_area("Enter Your Script", height=300)
Enter fullscreen mode Exit fullscreen mode

language1 = st.text_input(...): Creates a text input field in the app where users can enter the source language of their script.
language2 = st.text_input(...): Creates another text input field for users to specify the desired target language for translation.
scripts = st.text_area(...): Creates a text area where users can paste their script content.

Generate Button and Output Display:

if st.button("Translate"):
    solution = script_translator(language1, language2, scripts)
    st.markdown(solution)
Enter fullscreen mode Exit fullscreen mode

if st.button("Translate"):: Checks if the user clicks a button labeled "Translate".
solution = script_translator(...): If the button is clicked, calls the script_translator function with the user-provided languages and script content. The function presumably returns the translated script text.
st.markdown(solution): Displays the translated script text (stored in the solution variable) using markdown formatting.

Running the App
Finally, run the app using the following command in your terminal:

streamlit run app.py
Enter fullscreen mode Exit fullscreen mode

try it now: https://lyzr-script-translation.streamlit.app/

For more information explore the website: Lyzr

Top comments (0)