> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pictory.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# PowerPoint to Video with Speaker Notes

> Convert PowerPoint presentations into videos using speaker notes for voice-over narration

This guide shows you how to create videos from PowerPoint files using speaker notes for voice-over narration instead of slide text. Perfect when your slides contain minimal text or visual-heavy designs, but you have detailed explanations in the speaker notes.

## What You'll Learn

<CardGroup cols={2}>
  <Card title="PPT to Video" icon="presentation">
    Convert PowerPoint files to video automatically
  </Card>

  <Card title="Speaker Notes" icon="note-sticky">
    Use speaker notes for voice-over narration
  </Card>

  <Card title="AI Voice-Over" icon="microphone">
    Generate professional narration from notes
  </Card>

  <Card title="Flexible Narration" icon="toggle-on">
    Choose between slide text or speaker notes
  </Card>
</CardGroup>

## Before You Begin

Make sure you have:

* A [Pictory API key](https://app.pictory.ai/api-access)
* Node.js or Python installed on your machine
* PowerPoint file with speaker notes accessible via public URL
* Basic understanding of PowerPoint speaker notes

<CodeGroup>
  ```bash npm theme={null}
  npm install axios
  ```

  ```bash pip theme={null}
  pip install requests
  ```
</CodeGroup>

## How Speaker Notes Narration Works

When you use speaker notes for narration:

1. **File Processing** - Your PPT file is accessed and parsed
2. **Slide Extraction** - Each slide becomes a video scene
3. **Notes Extraction** - Speaker notes are extracted from each slide
4. **Visual Preservation** - Slide designs remain intact as scene backgrounds
5. **Voice Generation** - AI creates narration from speaker notes, not slide text
6. **Video Rendering** - Final video combines slides with notes-based narration

<Note>
  Speaker notes provide more natural, conversational narration compared to reading slide bullet points. This is ideal for presentations designed for visual impact where notes contain the full explanation.
</Note>

## Complete Example

<CodeGroup>
  ```javascript Node.js theme={null}
  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_with_notes.pptx";

  async function createPptToVideoWithSpeakerNotes() {
    try {
      console.log("Creating video from PowerPoint with speaker notes...");

      const response = await axios.post(
        `${API_BASE_URL}/v2/video/storyboard/render`,
        {
          videoName: "ppt_to_video_speaker_notes",
          scenes: [
            {
              pptUrl: PPT_URL,               // PowerPoint file URL at scene level
              useSpeakerNotes: true,         // Use speaker notes for narration
            }
          ],

          // 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 with speaker notes 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;
    }
  }

  createPptToVideoWithSpeakerNotes();
  ```

  ```python Python theme={null}
  import requests
  import time
  import json

  API_BASE_URL = 'https://api.pictory.ai/pictoryapis'
  API_KEY = 'YOUR_API_KEY'

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

  def create_ppt_to_video_with_speaker_notes():
      try:
          print("Creating video from PowerPoint with speaker notes...")

          response = requests.post(
              f'{API_BASE_URL}/v2/video/storyboard/render',
              json={
                  'videoName': 'ppt_to_video_speaker_notes',
                  'scenes': [
                      {
                          'pptUrl': PPT_URL,           # PowerPoint file URL at scene level
                          'useSpeakerNotes': True      # Use speaker notes for narration
                      }
                  ],

                  # 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
              }
          )
          response.raise_for_status()

          job_id = response.json()['data']['jobId']
          print("✓ Video creation started!")
          print(f"Job ID: {job_id}")

          # Monitor progress
          print("\nMonitoring video creation...")
          job_completed = False
          job_result = None

          while not job_completed:
              status_response = requests.get(
                  f'{API_BASE_URL}/v1/jobs/{job_id}',
                  headers={'Authorization': API_KEY}
              )
              status_response.raise_for_status()

              status = status_response.json()['data']['status']
              print(f"Status: {status}")

              if status == 'completed':
                  job_completed = True
                  job_result = status_response.json()
                  print("\n✓ Video from PowerPoint with speaker notes is ready!")
                  print(f"Video URL: {job_result['data']['videoURL']}")
              elif status == 'failed':
                  raise Exception(f"Video creation failed: {status_response.json()}")

              time.sleep(5)

          return job_result

      except requests.exceptions.RequestException as error:
          print(f"Error: {error}")
          raise

  if __name__ == '__main__':
      create_ppt_to_video_with_speaker_notes()
  ```
</CodeGroup>

## Understanding the Parameters

### Main Request Parameters

| Parameter   | Type   | Required | Description                                                                                                                                     |
| ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `videoName` | string | Yes      | A descriptive name for your video project                                                                                                       |
| `language`  | string | No       | Language for AI-generated narration. Default: `en`. Options: `zh`, `nl`, `en`, `fr`, `de`, `hi`, `it`, `ja`, `ko`, `mr`, `pt`, `ru`, `es`, `ta` |
| `scenes`    | array  | Yes      | Array of scene objects                                                                                                                          |
| `voiceOver` | object | No       | Voice-over configuration                                                                                                                        |

### Scene Parameters

| Parameter         | Type    | Required | Description                                                                                                                  |
| ----------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `pptUrl`          | string  | Yes      | Public URL to the PowerPoint file                                                                                            |
| `useSpeakerNotes` | boolean | No       | Set to `true` to use speaker notes for narration (default: `false` = uses slide text). Only valid when `pptUrl` is provided. |
| `animatePPT`      | boolean | No       | Enable AI-generated slide animations. Only valid with `pptUrl`.                                                              |

### Voice-Over Configuration

| Parameter            | Type    | Required | Description                        |
| -------------------- | ------- | -------- | ---------------------------------- |
| `enabled`            | boolean | Yes      | Set to `true` to enable voice-over |
| `aiVoices`           | array   | Yes      | Array of AI voice configurations   |
| `speaker`            | string  | Yes      | AI voice name                      |
| `speed`              | number  | No       | Voice speed 50-200 (default: 100)  |
| `amplificationLevel` | number  | No       | Volume level -1 to 1 (default: 0)  |

## Speaker Notes vs Slide Text

| Configuration                      | Narration Source   | Best Used For                                                     |
| ---------------------------------- | ------------------ | ----------------------------------------------------------------- |
| `useSpeakerNotes: false` (default) | Visible slide text | Slides with complete sentences, text-heavy presentations          |
| `useSpeakerNotes: true`            | Speaker notes      | Visual-heavy slides, bullet points only, conversational narration |

<Warning>
  **Important:** If a slide has no speaker notes and `useSpeakerNotes` is set to `true`, that slide will have no voice-over narration. Ensure all slides have speaker notes before using this feature.
</Warning>

## Render in a Different Language Than Your Speaker Notes

<Note>
  **You do not need to translate your speaker notes before submitting them.** Pass the top-level `language` field with a target language code, and Pictory generates the narration directly in that language while reading your original speaker notes. One source deck, with notes in your authoring language, can ship as videos in 14 different languages without you maintaining translated copies.
</Note>

Supported `language` values: `zh, nl, en, fr, de, hi, it, ja, ko, mr, pt, ru, es, ta`. See the [PowerPoint Animated Slides guide](/guides/presentation-to-video/powerpoint-animated-slides#multilingual-ppt-video-translate-decks-at-render-time) for a working multilingual example and the [End-to-End Recipes](/guides/recipes/end-to-end-recipes#recipe-2-multilingual-video-generate-narration-in-a-target-language) for the language → default voice mapping.

## Common Use Cases

### Training Videos with Detailed Explanations

```javascript theme={null}
{
  videoName: "training_with_notes",
  scenes: [{
    pptUrl: "https://storage.example.com/training-deck.pptx",
    useSpeakerNotes: true
  }],
  voiceOver: {
    enabled: true,
    aiVoices: [{
      speaker: "Emma",
      speed: 95,              // Slower for training
      amplificationLevel: 0
    }]
  }
}
```

**Result:** Slides show bullet points while detailed explanations play as narration.

### Visual-Heavy Presentations

```javascript theme={null}
{
  videoName: "infographic_presentation",
  scenes: [{
    pptUrl: "https://storage.example.com/infographic-deck.pptx",
    useSpeakerNotes: true
  }],
  voiceOver: {
    enabled: true,
    aiVoices: [{
      speaker: "Brian",
      speed: 100,
      amplificationLevel: 0
    }]
  }
}
```

**Result:** Clean visual slides with comprehensive narration from notes.

### Webinar Content

```javascript theme={null}
{
  videoName: "webinar_with_notes",
  scenes: [{
    pptUrl: "https://storage.example.com/webinar-slides.pptx",
    useSpeakerNotes: true
  }],
  voiceOver: {
    enabled: true,
    aiVoices: [{
      speaker: "Matthew",
      speed: 105,             // Slightly faster for engagement
      amplificationLevel: 0.1
    }]
  }
}
```

**Result:** Professional webinar with presenter-style narration.

## Best Practices

<AccordionGroup>
  <Accordion title="When to Use Speaker Notes">
    Choose speaker notes narration when:

    * **Visual Slides**: Slides contain mainly images, charts, or diagrams
    * **Bullet Points**: Slides have brief bullet points needing elaboration
    * **Conversational Tone**: You want natural, flowing narration
    * **Detailed Explanations**: Notes contain the full explanation
    * **Professional Format**: Slides designed for visual impact, not reading
  </Accordion>

  <Accordion title="When to Use Slide Text">
    Use slide text narration (`useSpeakerNotes: false`) when:

    * **Complete Sentences**: Slides contain full text meant to be read
    * **No Notes**: Speaker notes are empty or minimal
    * **Simple Content**: Text on slides is self-explanatory
    * **Quote-Based**: Slides contain quotes or specific text to emphasize
  </Accordion>

  <Accordion title="Write Effective Speaker Notes">
    Optimize your speaker notes for AI narration:

    * **Conversational Style**: Write as you would speak, not formal bullets
    * **Complete Sentences**: Use full sentences with proper punctuation
    * **Natural Flow**: Ensure smooth transitions between ideas
    * **Appropriate Length**: 2-4 sentences per slide (30-60 seconds narration)
    * **Clear Pronunciation**: Spell out acronyms and difficult terms

    **Good Example:** "This chart shows our quarterly revenue growth. Notice how Q3 exceeded expectations by 25%, driven primarily by our new product launch. This trend is expected to continue through the end of the year."

    **Poor Example:** "Q3 rev up 25% - new prod launch - trend continues"
  </Accordion>

  <Accordion title="Prepare Your PowerPoint File">
    Set up your presentation for speaker notes conversion:

    * **Add Notes to All Slides**: Every slide should have speaker notes
    * **Consistent Length**: Keep notes roughly similar in length for pacing
    * **Test Notes**: Read notes aloud to ensure they sound natural
    * **Avoid Redundancy**: Do not repeat exactly what is on the slide
    * **Link Slides**: Notes should transition smoothly between slides
  </Accordion>

  <Accordion title="Balance Visual and Verbal Content">
    Create effective slide-notes combinations:

    * **Slides**: Show key points, visuals, data
    * **Notes**: Provide context, explanations, details
    * **Complement**: Notes should expand on visuals, not duplicate them
    * **Focus**: Keep slides visual, notes verbal
    * **Engagement**: Use notes to tell the story behind the visuals
  </Accordion>
</AccordionGroup>

## Troubleshooting

<AccordionGroup>
  <Accordion title="Some slides have no narration">
    **Problem:** Certain slides play with no voice-over.

    **Solution:**

    * Check that those slides have speaker notes in PowerPoint
    * Speaker notes must contain actual text (not be empty)
    * View → Notes Page in PowerPoint to verify notes exist
    * Add speaker notes to all slides before conversion
    * If you want some slides silent, add a note like "\[pause]" or "\[music only]"
  </Accordion>

  <Accordion title="Narration Does Not Match Speaker Notes">
    **Problem:** The voice-over seems different from your speaker notes.

    **Solution:**

    * Verify you set `useSpeakerNotes: true` in your request
    * Check that PowerPoint notes are in the Notes section, not text boxes on slides
    * Ensure notes were not accidentally placed in slide master or layout
    * Re-save PowerPoint file and try again
    * Use PowerPoint's Notes Page view to verify notes are properly saved
  </Accordion>

  <Accordion title="Speaker notes text is being cut off">
    **Problem:** Long speaker notes seem truncated in narration.

    **Solution:**

    * Very long notes (500+ words per slide) may be shortened
    * Break long presentations into multiple videos
    * Keep speaker notes to 30-60 seconds of narration per slide
    * Distribute content across more slides if needed
    * Aim for 50-150 words per slide's notes
  </Accordion>

  <Accordion title="Voice-over sounds unnatural">
    **Problem:** AI narration does not flow smoothly.

    **Solution:**

    * Write speaker notes in a conversational, natural tone
    * Use complete sentences with proper punctuation
    * Avoid abbreviations, acronyms, or technical shorthand
    * Read notes aloud before conversion to check flow
    * Adjust voice speed (95-105) for more natural pacing
    * Try different AI voices to find the best match
  </Accordion>

  <Accordion title="Can't find speaker notes in PowerPoint">
    **Problem:** Not sure how to add or view speaker notes.

    **Solution:**

    * **Add Notes**: In PowerPoint, click in the Notes section below each slide
    * **View Notes**: Go to View → Notes Page for full editor
    * **Normal View**: Notes appear in bottom panel in Normal view
    * **Slide Sorter**: Switch to Normal view to see/edit notes
    * **Mac Users**: View → Normal, notes panel is below slide
    * **Save**: Always save PowerPoint file after adding notes
  </Accordion>
</AccordionGroup>

## Next Steps

Enhance your speaker notes videos with these features:

<CardGroup cols={2}>
  <Card title="Standard PPT Narration" icon="microphone" href="/guides/presentation-to-video/powerpoint-ai-voiceover">
    Use slide text instead of speaker notes
  </Card>

  <Card title="Animated Slides" icon="wand-magic-sparkles" href="/guides/presentation-to-video/powerpoint-animated-slides">
    Add AI-generated animations and multilingual narration
  </Card>

  <Card title="Background Music" icon="music" href="/guides/advanced-features/background-music">
    Add music to complement narration
  </Card>

  <Card title="Brand Settings" icon="palette" href="/guides/branding-customization/brand-settings">
    Apply consistent branding to videos
  </Card>
</CardGroup>

## API Reference

For complete technical details, see:

* [Render Storyboard Video](/api-reference/videos/render-storyboard-video) - Full API specification
* [Get Voiceover Tracks](/api-reference/voiceovers/get-voiceover-tracks) - List available AI voices
* [Get Job Status](/api-reference/jobs/get-video-render-job-by-id) - Monitor job status and progress
