Skip to main content
This guide shows you how to convert PowerPoint presentations into engaging videos with professional AI-generated voice-over narration. Perfect for creating training videos, online courses, or shareable presentations from your existing slide decks.

What You’ll Learn

PPT to Video

Convert PowerPoint slides into video scenes

AI Voice-Over

Add professional narration automatically

Slide-by-Slide

Each slide becomes a scene with narration

Auto Processing

Automatic text extraction and voice generation

Before You Begin

Make sure you have:
  • A Pictory API key (get one here)
  • Node.js or Python installed on your machine
  • PowerPoint file accessible via public URL
  • Basic understanding of voice-over concepts
npm install axios

How PowerPoint-to-Video Works

When you convert a PowerPoint presentation to video:
  1. File Processing - Your PPT file is accessed and parsed
  2. Slide Extraction - Each slide becomes a separate video scene
  3. Text Extraction - Text content is extracted from slides for narration
  4. Visual Preservation - Slide designs and visuals are maintained
  5. Voice Generation - AI creates natural narration from extracted text
  6. Video Rendering - Final video is assembled with voice-over synchronized to slides
The PowerPoint file must be accessible via a public URL. Upload your file to cloud storage (Google Drive, Dropbox, AWS S3) and use the public share link.

Complete Example

import axios from "axios";

const API_BASE_URL = "https://api.pictory.ai/pictoryapis";
const API_KEY = "YOUR_API_KEY";

// Sample PPT URL - replace with your own PPT file URL
const PPT_URL = "https://pictory-static.pictorycontent.com/sample_ppt.pptx";

async function createPptToVideoWithVoiceOver() {
  try {
    console.log("Creating video from PowerPoint with AI voice-over...");

    const response = await axios.post(
      `${API_BASE_URL}/v2/video/storyboard/render`,
      {
        videoName: "ppt_to_video_with_voiceover",
        url: PPT_URL,                      // PowerPoint file URL

        // Voice-over configuration
        voiceOver: {
          enabled: true,                    // Enable voice-over
          aiVoices: [
            {
              speaker: "Brian",              // AI voice name
              speed: 100,                    // Normal speaking speed
              amplificationLevel: 0,         // Normal volume
            },
          ],
        },
      },
      {
        headers: {
          "Content-Type": "application/json",
          Authorization: API_KEY,
        },
      }
    );

    const jobId = response.data.data.jobId;
    console.log("✓ Video creation started!");
    console.log("Job ID:", jobId);

    // Monitor progress
    console.log("\nMonitoring video creation...");
    let jobCompleted = false;
    let jobResult = null;

    while (!jobCompleted) {
      const statusResponse = await axios.get(
        `${API_BASE_URL}/v1/jobs/${jobId}`,
        {
          headers: { Authorization: API_KEY },
        }
      );

      const status = statusResponse.data.data.status;
      console.log("Status:", status);

      if (status === "completed") {
        jobCompleted = true;
        jobResult = statusResponse.data;
        console.log("\n✓ Video from PowerPoint is ready!");
        console.log("Video URL:", jobResult.data.videoURL);
      } else if (status === "failed") {
        throw new Error("Video creation failed: " + JSON.stringify(statusResponse.data));
      }

      await new Promise(resolve => setTimeout(resolve, 5000));
    }

    return jobResult;
  } catch (error) {
    console.error("Error:", error.response?.data || error.message);
    throw error;
  }
}

createPptToVideoWithVoiceOver();

Understanding the Parameters

Main Request Parameters

ParameterTypeRequiredDescription
videoNamestringYesA descriptive name for your video project
urlstringYesPublic URL to the PowerPoint file (.ppt or .pptx)
voiceOverobjectNoVoice-over configuration (omit for video without narration)

Voice-Over Configuration

ParameterTypeRequiredDescription
enabledbooleanYesSet to true to enable voice-over
aiVoicesarrayYesArray of AI voice configurations
speakerstringYesAI voice name (e.g., “Brian”, “Emma”)
speednumberNoVoice speed 50-200 (default: 100 = normal)
amplificationLevelnumberNoVolume level -1 to 1 (default: 0 = normal)

Supported File Formats

FormatExtensionDescription
PowerPoint 2007+.pptxModern PowerPoint format (recommended)
PowerPoint 97-2003.pptLegacy PowerPoint format
For best compatibility and processing speed, use .pptx format. Convert older .ppt files to .pptx before uploading.

Common Use Cases

Training and Education

{
  url: "https://storage.example.com/employee-training.pptx",
  voiceOver: {
    enabled: true,
    aiVoices: [{
      speaker: "Emma",       // Clear female voice
      speed: 95,             // Slightly slower for learning
      amplificationLevel: 0
    }]
  }
}
Result: Educational video with clear, measured narration perfect for training.

Sales Presentations

{
  url: "https://storage.example.com/product-pitch.pptx",
  voiceOver: {
    enabled: true,
    aiVoices: [{
      speaker: "Matthew",    // Professional male voice
      speed: 105,            // Slightly faster for energy
      amplificationLevel: 0.2  // Louder for emphasis
    }]
  }
}
Result: Dynamic sales video with energetic, engaging narration.

Webinar Content

{
  url: "https://storage.example.com/webinar-slides.pptx",
  voiceOver: {
    enabled: true,
    aiVoices: [{
      speaker: "Joanna",     // Friendly female voice
      speed: 100,            // Normal pace
      amplificationLevel: 0
    }]
  }
}
Result: Professional webinar video with natural narration.

Best Practices

Optimize your slides for video conversion:
  • Clear Text: Use readable fonts and sufficient font size (24pt minimum)
  • Simple Layouts: Avoid overly complex slide designs
  • Concise Content: Keep text brief - narration works better with short phrases
  • Consistent Style: Use consistent formatting across all slides
  • High Quality Images: Use high-resolution images that look good in video
Ensure your PowerPoint file can be accessed:
  • Cloud Storage: Upload to Google Drive, Dropbox, OneDrive, or AWS S3
  • Public Link: Generate a public sharing link (no login required)
  • Direct URL: Use the direct file URL, not a preview or viewer link
  • Test Access: Open the URL in an incognito browser to verify public access
  • Stable URL: Ensure the link won’t expire during processing
Select voice settings that match your content:
  • Training/Education: Use slower speeds (90-100) for comprehension
  • Sales/Marketing: Use slightly faster speeds (105-115) for energy
  • Technical Content: Use clear voices like Brian or Emma
  • Consistency: Use the same voice across related presentations
  • Test First: Create a sample video to preview voice quality
Structure your slides for voice-over:
  • Full Sentences: Write complete sentences, not just bullet points
  • Natural Language: Text should sound natural when read aloud
  • Proper Punctuation: Use periods, commas for natural pauses
  • Avoid Abbreviations: Spell out acronyms on first use
  • Logical Flow: Ensure text flows naturally from slide to slide
Plan for appropriate video duration:
  • Short Presentations: 5-10 slides work well for social media
  • Medium Presentations: 15-25 slides for training or tutorials
  • Long Presentations: Break 30+ slide decks into multiple videos
  • Processing Time: More slides = longer processing time
  • Viewer Attention: Keep videos under 10 minutes for better engagement

Troubleshooting

Problem: The API cannot download or access your PPT file.Solution:
  • Verify the URL is publicly accessible (test in incognito browser)
  • Check that the URL is a direct file link, not a preview page
  • For Google Drive: Right-click → Share → “Anyone with the link”
  • For Dropbox: Use the direct download link, not the preview link
  • Ensure the file hasn’t expired or been deleted
  • Try re-uploading the file and generating a new link
Problem: Video doesn’t include all slides or they’re out of sequence.Solution:
  • Verify all slides are present in the original PowerPoint
  • Check for hidden slides in PowerPoint - unhide them before uploading
  • Ensure slide numbers are sequential
  • Re-save the PowerPoint file and upload again
  • Try exporting as .pptx if using an older .ppt format
Problem: Narration seems unrelated to what’s shown on slides.Solution:
  • The AI narrates visible text on slides
  • Check that slides contain actual text content (not just images)
  • If using images with embedded text, add actual text boxes
  • For slides with minimal text, consider using speaker notes instead
  • See the PowerPoint with Speaker Notes guide
Problem: Video plays slides with no voice-over.Solution:
  • Verify those slides contain text in PowerPoint
  • Text must be in actual text boxes, not part of images
  • Add descriptive text to image-only slides
  • Or use the useSpeakerNotes: true parameter with speaker notes
  • Check that text isn’t white-on-white or otherwise hidden
Problem: Job status shows “in-progress” for extended periods.Solution:
  • PowerPoint processing time depends on number of slides
  • Expected times:
    • 5-10 slides: 5-8 minutes
    • 15-20 slides: 10-15 minutes
    • 30+ slides: 20-30 minutes
  • Large file sizes (with many images) take longer
  • Check job status every 5-10 seconds (not more frequently)
  • If stuck for over an hour, contact support with job ID

Next Steps

Enhance your PowerPoint videos with these features:

API Reference

For complete technical details, see: