Skip to main content
Article
video-editingpodcast-editingai-transcriptionvoice-cloningfiller-word-removaldescript-apicontent-creation

Edit Video and Audio by Editing Text with Descript

Use Descript's AI to edit video and podcasts as easily as editing a text document. This guide shows you how to transcribe, remove filler words, and fix mistakes with AI voice cloning, all within the Descript editor.

beginner30 min5 steps
The play
  1. Import and Transcribe Your Media
    Start by creating a new 'Video Project' or 'Audio Project' in the Descript desktop app. Drag and drop your media file into the project. Descript will automatically ask you to transcribe it. Select the language and number of speakers to get an accurate text transcript.
  2. Edit Media by Editing Text
    Once transcribed, your media is synced to the text. To remove a section of audio or video, simply highlight the corresponding text in the script editor and press 'Delete'. The underlying media is instantly cut. To fix transcription errors, use 'Correct text' mode (Cmd/Ctrl+E).
  3. Automatically Remove Filler Words
    Click the 'Actions' star icon in the toolbar and select 'Remove filler words'. Descript will find all instances of 'um', 'uh', 'you know', etc. You can review and delete them all in one click, instantly cleaning up your recording.
  4. Fix Mistakes with AI Overdub
    After training your voice model, you can use Overdub to fix misspoken words. Highlight the word you want to change, click 'Overdub', and type the correct word. Descript's AI will generate the new audio in your own voice, seamlessly patching the recording.
  5. Publish and Export
    When you're done editing, click the 'Publish' button. You can export the final product as a video (MP4), audio (MP3, WAV), or just the transcript (TXT, DOCX). You can also publish directly to platforms like YouTube and Wistia.
Starter code
import os
import requests

# Note: You need to generate an API key from your Descript account settings.
# This script demonstrates how to programmatically create a project and add a media file for transcription.

API_KEY = os.environ.get("DESCRIPT_API_KEY", "YOUR_API_KEY_HERE")
API_BASE_URL = "https://api.descript.com/v1"

HEADERS = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

def create_descript_project(project_name):
    """Creates a new project in Descript."""
    url = f"{API_BASE_URL}/projects"
    payload = {"name": project_name}
    try:
        response = requests.post(url, headers=HEADERS, json=payload)
        response.raise_for_status() # Raises an HTTPError for bad responses (4XX or 5XX)
        project_data = response.json()
        print(f"Successfully created project '{project_data['name']}' with ID: {project_data['id']}")
        return project_data
    except requests.exceptions.HTTPError as err:
        print(f"HTTP Error creating project: {err}")
        print(f"Response body: {err.response.text}")
        return None
    except Exception as e:
        print(f"An error occurred: {e}")
        return None

def add_media_to_project(project_id, media_url, media_name):
    """Adds a media file from a URL to a Descript project for automatic transcription."""
    url = f"{API_BASE_URL}/projects/{project_id}/media"
    payload = {"url": media_url, "name": media_name}
    try:
        response = requests.post(url, headers=HEADERS, json=payload)
        response.raise_for_status()
        media_data = response.json()
        print(f"Successfully added media '{media_data['name']}' to project.")
        print("Transcription will begin automatically in your Descript project.")
        return media_data
    except requests.exceptions.HTTPError as err:
        print(f"HTTP Error adding media: {err}")
        print(f"Response body: {err.response.text}")
        return None
    except Exception as e:
        print(f"An error occurred: {e}")
        return None

if __name__ == "__main__":
    if API_KEY == "YOUR_API_KEY_HERE":
        print("Please set your DESCRIPT_API_KEY environment variable or replace the placeholder in the script.")
    else:
        project = create_descript_project("My First API Project")
        if project:
            # Using a public domain audio file for demonstration
            audio_file_url = "https://archive.org/download/TaleOfTwoCities_1204_librivox/tale_of_two_cities_01_dickens.mp3"
            add_media_to_project(project['id'], audio_file_url, "A Tale of Two Cities - Chapter 1")
Edit Video and Audio by Editing Text with Descript — Action Pack