# Audio & Video to Text Transcriber (Whisper, No API Key) (`tidyfold/audio-to-text`) Actor

- **URL**: https://apify.com/tidyfold/audio-to-text.md
- **Developed by:** [Tidyfold Tools](https://apify.com/tidyfold) (community)
- **Categories:** AI, Videos, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 audio minute transcribeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Audio & Video to Text Transcriber (Whisper, No API Key)

**Audio & Video to Text** transcribes **MP3, MP4, WAV, M4A, OGG, WEBM and podcast RSS feeds** to text with **OpenAI's open-source Whisper model running inside the Actor**, so you need **no API key**. You get the full transcript, **timestamped segments**, and ready-made **SRT and VTT subtitle files** in **90+ languages**, with optional **translation to English**. From **$0.004 per audio minute**.

### How to use it

1. Paste direct links to audio or video files into *Audio or video file URLs*, or add a podcast RSS feed to *Podcast RSS feeds*.
2. Pick a model (*Standard* is fastest and cheapest, *Accurate* handles accents, noise and non-English speech better) and, if you know it, the language.
3. Click **Start**. Each file becomes one row with the transcript and links to its .txt, .srt and .vtt files.

### Features

- **Whisper runs in the Actor:** no OpenAI key, no extra API bills, the price per minute is all-in
- **Two models:** Standard (Whisper base) and Accurate (Whisper small), both on the efficient faster-whisper engine with voice-activity detection
- **90+ languages** with auto-detection, or force a language for short clips
- **Translate to English** from any supported language (same price)
- **Subtitles:** SRT and VTT files saved for every file, plus a plain .txt transcript
- **Timestamped segments** (start and end in seconds) for search, chapters and clipping
- **Podcast feeds:** give an RSS feed and transcribe the newest N episodes; the episode title and publish date are added to each row
- **Bulk:** many files per run; works with MP3, M4A, AAC, WAV, FLAC, OGG, OPUS, MP4, MOV, WEBM, MKV and most other formats
- **Fair billing:** failed downloads, web pages instead of files and files with no speech are not charged

### Use cases

Transcribing podcasts for show notes, SEO and newsletters; meeting, interview and webinar recordings to text; subtitles for videos; feeding audio into AI, RAG and search pipelines; monitoring a podcast feed on a schedule; translating foreign-language audio to English.

### Input example

```json
{
  "mediaUrls": ["https://upload.wikimedia.org/wikipedia/commons/c/c4/GWBush_Oval_Office_Address_20010911-1-.ogg"],
  "podcastFeeds": ["https://www.nasa.gov/feeds/podcasts/houston-we-have-a-podcast"],
  "maxEpisodesPerFeed": 1,
  "model": "standard",
  "language": "auto"
}
```

### Output example

```json
{
  "source": "https://upload.wikimedia.org/wikipedia/commons/c/c4/GWBush_Oval_Office_Address_20010911-1-.ogg",
  "status": "ok",
  "model": "standard",
  "language": "en",
  "languageProbability": 0.992,
  "durationSec": 262.1,
  "minutesCharged": 5,
  "words": 592,
  "text": "Good evening. Today, our fellow citizens, our way of life, our very freedom, came under attack ...",
  "segments": [{"start": 0.0, "end": 8.72, "text": "Good evening. Today, our fellow citizens, our way of life, our very freedom, came under attack"}],
  "txtUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/<name>.txt",
  "srtUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/<name>.srt",
  "vttUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/<name>.vtt",
  "tookSec": 8.6
}
```

### How much does it cost to transcribe audio to text?

Pay per event: you pay only for audio that was transcribed.

- **$0.004 per audio minute** with the Standard model ($0.24 per hour)
- **$0.008 per audio minute** with the Accurate model ($0.48 per hour)

Minutes are rounded up per file. Translation to English costs the same. Files that fail to download, links that return a web page, files over your size or length limits and files with no speech are not charged.

**Example:** A 60-minute podcast episode costs **$0.24** with Standard or **$0.48** with Accurate. 100 five-minute voice notes cost **$2.00** with Standard.

Apify also charges its standard run-start fee of $0.00005 per GB of run memory (a fraction of a cent per run). The exact prices are always on the **Pricing** tab, and you can cap any run with *Maximum cost per run*: the run stops when the budget is reached and the last file is transcribed only up to the minutes your budget allows (that row says `"truncated": true`).

### FAQ

**Do I need an OpenAI or other API key?**
No. Whisper runs inside the Actor.

**How fast is it?**
In our tests a 60-minute podcast took about 3 minutes with the Standard model at the default 8 GB memory. The Accurate model is about 2-3 times slower.

**Which model should I choose?**
Standard is good for clear speech such as podcasts, talks and meetings in common languages. Choose Accurate for strong accents, background noise, several speakers talking over each other, or less common languages.

**Does it identify speakers?**
No, there is no speaker labelling (diarization). You get timestamped segments.

**Can I transcribe YouTube, TikTok or Instagram links?**
No. This Actor only downloads direct links to media files and podcast feed enclosures. Use a link that downloads the file itself.

**What are the limits?**
Up to 240 minutes and 1,000 MB per file by default (change *Max minutes per file* and *Max file size*).

### More Tidyfold tools

| Tool | Use it for |
|---|---|
| [PDF OCR: Scanned PDF to Text Extractor](https://apify.com/tidyfold/pdf-text-ocr) | PDF OCR |
| [Website Screenshot API: Bulk, Full-Page & Mobile](https://apify.com/tidyfold/website-screenshot) | website screenshot API |
| [HTML to PDF Converter API: URL & HTML to PDF](https://apify.com/tidyfold/web-to-pdf) | HTML to PDF |
| [PDF Table Extractor: PDF to Excel, CSV & JSON](https://apify.com/tidyfold/pdf-tables-to-csv) | PDF to Excel |
| [Invoice & Receipt Parser: PDF to JSON (No AI Key)](https://apify.com/tidyfold/invoice-pdf-to-json) | invoice parser |
| [Sitemap Extractor: Get All URLs from Any Website](https://apify.com/tidyfold/sitemap-url-extractor) | sitemap extractor |

### Use it from code or no-code tools

Every run can be started from the Apify API, the Apify Python/JS clients, or connected to n8n, Make, Zapier and Google Sheets through Apify integrations. Results download as JSON, CSV, Excel or XML.

```python
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("tidyfold/audio-to-text").call(run_input={"mediaUrls": ["https://example.com/episode.mp3"], "model": "standard"})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["text"])
```

### Notes

Only transcribe audio you have the right to use. Private and local network addresses are refused. Whisper is an open-source model (MIT licence) by OpenAI; this Actor is not affiliated with or endorsed by OpenAI. Transcripts can contain mistakes, so check anything important.

### Support

Found a bug or need an option added? Open an issue on the **Issues** tab. Tidyfold maintains these tools daily and usually replies within 1 business day.

# Actor input Schema

## `mediaUrls` (type: `array`):

Direct links to audio or video files (the link must download the file itself, not a web page): MP3, M4A, WAV, OGG, OPUS, FLAC, AAC, MP4, MOV, WEBM, MKV and more.

## `podcastFeeds` (type: `array`):

Podcast RSS feed URLs. The newest episodes are transcribed (see Episodes per feed).

## `maxEpisodesPerFeed` (type: `integer`):

How many of the newest episodes to transcribe from each feed.

## `model` (type: `string`):

Which Whisper model to run. Both run inside the Actor; no API key needed.

## `language` (type: `string`):

Spoken language. Auto-detect works for 90+ languages; picking it avoids rare misdetection on short clips.

## `translateToEnglish` (type: `boolean`):

Output an English translation instead of a transcript in the original language (same price).

## `includeSegments` (type: `boolean`):

Add a list of segments with start and end times (seconds) to each row.

## `saveSubtitles` (type: `boolean`):

Save .srt and .vtt subtitle files (and a .txt transcript) and link them in each row.

## `maxFileMinutes` (type: `integer`):

Files longer than this are skipped (not charged).

## `maxFileSizeMb` (type: `integer`):

Larger downloads are stopped and skipped (not charged).

## Actor input object example

```json
{
  "mediaUrls": [
    "https://upload.wikimedia.org/wikipedia/commons/c/c4/GWBush_Oval_Office_Address_20010911-1-.ogg"
  ],
  "maxEpisodesPerFeed": 1,
  "model": "standard",
  "language": "auto",
  "translateToEnglish": false,
  "includeSegments": true,
  "saveSubtitles": true,
  "maxFileMinutes": 240,
  "maxFileSizeMb": 1000
}
```

# Actor output Schema

## `results` (type: `string`):

One row per file with the transcript and links to TXT/SRT/VTT.

## `files` (type: `string`):

Key-value store holding .txt, .srt and .vtt files.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mediaUrls": [
        "https://upload.wikimedia.org/wikipedia/commons/c/c4/GWBush_Oval_Office_Address_20010911-1-.ogg"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tidyfold/audio-to-text").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "mediaUrls": ["https://upload.wikimedia.org/wikipedia/commons/c/c4/GWBush_Oval_Office_Address_20010911-1-.ogg"] }

# Run the Actor and wait for it to finish
run = client.actor("tidyfold/audio-to-text").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mediaUrls": [
    "https://upload.wikimedia.org/wikipedia/commons/c/c4/GWBush_Oval_Office_Address_20010911-1-.ogg"
  ]
}' |
apify call tidyfold/audio-to-text --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tidyfold/audio-to-text"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/c2cSxVG48XahkKxY5/builds/1CHKa8TXFybuUyjt9/openapi.json
