DEV Community

Leanvox
Leanvox

Posted on

AI Voice for Podcast Narration: Generate Professional Audio for $0.05/Episode

You don't need a recording booth, a microphone, or a consistent daily schedule to make a podcast anymore.

With a TTS API and a decent script, you can generate a 20-minute episode in under 60 seconds for about $0.05.

The use case

  • Solo narration podcasts — news roundups, book summaries, tech explainers, daily briefings
  • Multi-host formats — interview-style shows with two or more distinct voices
  • Branded audio content — consistent voice across hundreds of episodes
  • Translated episodes — same script, different language, same production cost

Picking a voice

LeanVox ships with 238+ pro voices organized by use case:

  • Podcast hosts — warm, conversational, sounds like someone you'd listen to for an hour
  • Narrators — authoritative, measured, great for explainer content
  • News anchors — crisp, professional, high credibility

Or clone your own voice. Record 30 seconds, upload it, and every episode sounds like you.

Single-host episode

from leanvox import Leanvox

client = Leanvox(api_key="lv_live_...")

result = client.generate(
    text=episode_script,
    model="pro",
    voice="podcast_conversational_female",
    speed=1.0,
)

print(result.audio_url)
Enter fullscreen mode Exit fullscreen mode

Long episodes: use async jobs

For episodes longer than 10,000 characters, use the CLI with async jobs — no manual chunking needed:

# Generate from a script file — handles any length automatically
lvox generate --use-async \
  --model pro \
  --voice podcast_conversational_female \
  --file episode_script.txt \
  --output episode_042.mp3
Enter fullscreen mode Exit fullscreen mode

Or via Python SDK:

import requests

job = client.generate_async(
    text=long_episode_script,
    model="pro",
    voice="podcast_conversational_female",
)

result = job.wait()  # polls until complete

audio = requests.get(result.audio_url).content
with open("episode_042.mp3", "wb") as f:
    f.write(audio)
Enter fullscreen mode Exit fullscreen mode

Two-host conversation format

episode = client.dialogue(
    model="pro",
    gap_ms=500,
    lines=[
        {"text": "Welcome back to Syntax Error. Today we're talking about LLM inference costs.", "voice": "podcast_conversational_female", "language": "en"},
        {"text": "GPU costs have dropped 70% in two years and nobody's passing that on to developers.", "voice": "podcast_casual_male", "language": "en", "exaggeration": 0.6},
        {"text": "Strong take. Let's break down the numbers.", "voice": "podcast_conversational_female", "language": "en"},
    ],
)
print(episode.audio_url)
Enter fullscreen mode Exit fullscreen mode

One call, one MP3, both voices.

Clone your voice for brand consistency

with open("my_voice_sample.wav", "rb") as f:
    voice = client.voices.clone(name="My Podcast Voice", audio=f)
    client.voices.unlock(voice.voice_id)

job = client.generate_async(text=episode_script, model="pro", voice=voice.voice_id)
result = job.wait()
Enter fullscreen mode Exit fullscreen mode

Automate the full pipeline

import anthropic
from leanvox import Leanvox

claude = anthropic.Anthropic()
leanvox = Leanvox(api_key="lv_live_...")

def generate_daily_briefing(topic: str) -> str:
    response = claude.messages.create(
        model="claude-opus-4-5",
        max_tokens=1024,
        messages=[{"role": "user", "content": f"Write a 2-minute podcast script about: {topic}. Professional, conversational tone."}]
    )
    script = response.content[0].text

    job = leanvox.generate_async(text=script, model="pro", voice="podcast_conversational_female")
    result = job.wait()
    return result.audio_url

url = generate_daily_briefing("The latest in open-source AI models")
Enter fullscreen mode Exit fullscreen mode

What does it cost?

For a 10-minute episode (~40,000 characters):

Tier Rate Episode cost 100 episodes/mo
Standard $0.005/1K chars $0.20 $20
Pro (with cloning) $0.01/1K chars $0.40 $40

A voice actor charges $200–$500/hr. A 10-minute episode = 30–60 min studio time.

Try it

Browse the voice library · Get your API key · Docs


Originally published at leanvox.com/blog

Top comments (0)