AI-prompt engineering · leksjon

TTS-promptmønstre for naturlig tale

Setningsstruktur, tegnsetting og tempoanvisninger som forbedrer TTS-utdata.

Leksjon 1 av 413 trinn

TTS-promptmønstre for naturlig tale er en gratis leksjon i AI-prompt engineering på CoddyKit. Dette er leksjon 1 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i AI-prompt engineering, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i AI-prompt engineering inneholder totalt 4 leksjoner.

Hvorfor prompting for TTS er annerledes

Tekst-til-tale-systemer konverterer teksten direkte til lyd. I motsetning til visuell tekst, der leseren kan lese uklare deler på nytt, opplever lytteren lyden lineært og kan ikke stoppe for å tolke en tvetydig setning.

Å skrive for TTS innebærer å tenke på hvordan ordene høres ut: rytme, setningslengde, tvetydig uttale og fraværet av visuell formatering som fet skrift eller punktlister.

Setningslengde: Kortere er bedre

Lange og komplekse setninger med flere ledd er vanskelige å følge i lyd. TTS-systemer bryter ofte rytmen på grammatisk korrekte, men lydmessig unaturlige steder. Sikt mot setninger på 10–20 ord for tale som høres naturlig ut.

# Prompt a model to generate TTS-optimized text
TTS_SYSTEM_PROMPT = (
    'You are writing text that will be read aloud by a text-to-speech system.\n\n'
    'Rules:\n'
    '- Use short, clear sentences (10-20 words each).\n'
    '- Avoid complex nested clauses.\n'
    '- End each sentence with a period for clear pause signals.\n'
    '- Avoid parenthetical asides in the middle of sentences.\n'
    '- Use conversational vocabulary — write as you would speak.\n'
    '- Never use bullet points, headers, or markdown formatting.'
)

# Bad (long, nested):
BAD = (
    'The transformer architecture, which was introduced in the landmark 2017 paper '
    '"Attention is All You Need" by Vaswani et al. at Google, fundamentally changed '
    'natural language processing by replacing recurrence with self-attention.'
)

# Good (TTS-friendly):
GOOD = (
    'The transformer architecture changed natural language processing. '
    'It was introduced in 2017 by researchers at Google. '
    'Their key innovation was replacing recurrence with self-attention.'
)

Tegnsetting som lydsignaler

TTS-motorer bruker tegnsetting til å styre tempoet:

  • Punktum (.): Avslutning, lengre pause
  • Komma (,): Kort pause
  • Spørsmålstegn (?): Stigende intonasjon
  • Utropstegn (!): Trykk og energi
  • Semikolon (;): Oppførselen varierer mellom motorer og ignoreres ofte
  • Lang tankestrek (—): Forårsaker ofte unaturlige pauser og bør unngås

Bruk eksplisitte punktum i stedet for lange tankestreker eller semikolon for å styre tempoet på en pålitelig måte.

TTS_PUNCTUATION_PROMPT = (
    'Write the following content for text-to-speech narration. '
    'Use only periods, commas, and question marks for punctuation. '
    'Avoid em dashes, semicolons, colons, and parentheses. '
    'Break complex thoughts into multiple short sentences.\n\n'
    'Content to rewrite: {content}'
)

# Example transformation
original = (
    'There are three main factors to consider: cost, quality, and speed — '
    'and often, you can only optimize for two of them (this is sometimes '
    'called the project management triangle).'
)

for_tts = (
    'There are three main factors to consider. The first is cost. '
    'The second is quality. The third is speed. '
    'Usually, you can only optimize for two of these at once. '
    'This is sometimes called the project management triangle.'
)
print(for_tts)

Unngå tvetydige forkortelser

Forkortelser som lesere tolker visuelt, kan føre til feiluttale i TTS. Ulike TTS-motorer håndterer forkortelser på forskjellige måter.

  • Dr. → kan uttales som «Doctor» eller «Drive»
  • St. → «Saint» eller «Street»?
  • vs. → «versus» eller «vs»?
  • etc. → «et cetera» eller «etcee»?

Skriv forkortelser helt ut i TTS-tekst for å sikre riktig uttale.

TTS_ABBREVIATION_RULES = (
    'When writing for text-to-speech:\n'
    '- Write "Doctor" not "Dr."\n'
    '- Write "Street" or "Saint" not "St."\n'
    '- Write "versus" not "vs."\n'
    '- Write "et cetera" not "etc."\n'
    '- Write "for example" not "e.g."\n'
    '- Write "that is" not "i.e."\n'
    '- Write out years: "twenty twenty-five" not "2025" when narrated in prose\n'
    '- Write out numbers under 10: "three" not "3" in conversational text\n'
    '- Spell out acronyms on first use: '
    '"Application Programming Interface, or API"\n'
)
print(TTS_ABBREVIATION_RULES)

Ord som fører til feiluttale

Enkelte ord eller mønstre skaper jevnlig problemer for TTS-motorer. Kjenn dem igjen, og bruk alternativer:

  • Homografer: «read» i presens og preteritum, «lead» som metall og som verbet «lede», «wind». TTS velger én uttale
  • Sjeldne egennavn: Tekniske termer, merkenavn og fremmedord
  • Tall i uvanlige sammenhenger: API-versjoner, datoformater og måleenheter
# Prompting LLM to detect and fix TTS pronunciation issues
TTS_REVIEW_PROMPT = (
    'Review the following text for text-to-speech pronunciation issues.\n'
    'Identify words that might be mispronounced by a TTS engine because they:\n'
    '1. Are homographs with multiple pronunciations\n'
    '2. Are technical terms, brand names, or foreign words\n'
    '3. Are abbreviations or acronyms\n'
    '4. Are numbers in unusual formats\n\n'
    'For each issue, provide the original text and a TTS-safe replacement.\n\n'
    'Text to review: {text}'
)

# Example issues and fixes
ISSUES = {
    'She read the docs': 'She read (past tense - ambiguous) -> She finished reading the docs',
    'Lead developer': 'Lead (metal or guide?) -> Lead (rhymes with feed) developer',
    'API v2.3.1': 'v2.3.1 -> version 2 point 3 point 1',
    'The .env file': 'dot E N V file (may say .env) -> the environment config file',
    'Re-init': 'may say Ray-in-it -> reinitialize',
}
for problem, fix in ISSUES.items():
    print(f'Issue: {problem}\nFix: {fix}\n')

Tall og datoer for TTS

Tall er en viktig kilde til unaturlig TTS-uttale. Skriv dem på en måte som ikke etterlater tvil om hvordan de skal uttales.

NUMBER_TTS_RULES = (
    'When writing numbers for TTS narration:\n'
    '- Dates: write "January fifteenth, 2025" not "01/15/2025"\n'
    '- Time: write "3 in the afternoon" not "15:00" in casual speech\n'
    '- Percentages: write "forty-five percent" not "45%" in narration\n'
    '- Large numbers: write "one point two million" not "1.2M"\n'
    '- Phone numbers: spell with hyphens "555-123-4567" (TTS reads each digit)\n'
    '- Currency: write "twelve dollars and fifty cents" not "$12.50" in speech\n'
    '- Fractions: write "three quarters" not "3/4"\n'
    '- Ordinals: write "first" not "1st" (TTS may say "one S T")\n'
)

# Apply when prompting the LLM to generate TTS scripts
TTS_SCRIPT_PROMPT = (
    'Write a 30-second product announcement for text-to-speech.\n'
    'Product: TaskFlow Pro, $49/month, 10,000 users worldwide, '
    'launched January 2025.\n\n'
    + NUMBER_TTS_RULES
)

Fjern visuell formatering

Markdown- og HTML-formatering er stille for øyet, men leses opp av enkelte TTS-motorer. Asterisker, nummertegn og vinkelparenteser må fjernes eller erstattes med uttrykk som kan leses opp.

TTS_FORMAT_CONVERSION_PROMPT = (
    'Convert the following markdown text into plain prose suitable '
    'for text-to-speech narration.\n\n'
    'Rules:\n'
    '- Remove all markdown formatting (**, *, #, -, etc.)\n'
    '- Convert bullet lists into spoken sequences '
    '("First... Second... Third...")\n'
    '- Convert headers into topic introduction sentences\n'
    '- Remove any hyperlinks or URLs\n'
    '- Convert code snippets into descriptions '
    '("a Python function that...")\n\n'
    'Markdown text:\n'
    '{markdown_text}'
)

EXAMPLE_MARKDOWN = (
    '## Getting Started\n'
    '- Install the package with 'pip install mylib'\n'
    '- Set your **API key** in '.env'\n'
    '- Run 'python main.py' to start\n'
)

EXAMPLE_TTS = (
    'To get started, install the package using pip. '
    'Next, set your API key in your environment configuration file. '
    'Finally, run the main Python script to start.'
)
print(EXAMPLE_TTS)

Styring av tempo med overgangsfraser

I skriftlig tekst hjelper visuell struktur, som avsnitt og overskrifter, leseren. I TTS-lyd trengs verbale overgangsfraser for å hjelpe lytterne med å følge strukturen.

TRANSITION_PHRASES = {
    'starting_new_topic':    ['Let us now talk about', 'Moving on to', 'Next,'],
    'adding_information':    ['Additionally,', 'Also worth noting,', 'Furthermore,'],
    'contrasting':           ['However,', 'On the other hand,', 'That said,'],
    'concluding':            ['To summarize,', 'In short,', 'To wrap up,'],
    'sequencing':            ['First,', 'Second,', 'Then,', 'Finally,'],
    'emphasizing':           ['Importantly,', 'Keep in mind that', 'Note that'],
}

TTS_STRUCTURE_PROMPT = (
    'Write a two-minute explainer on {topic} for text-to-speech narration.\n'
    'Use verbal transition phrases to guide listeners through each point. '
    'Avoid headers or bullet points. '
    'Structure the content with clear spoken signposts '
    '("First...", "Moving on...", "To summarize...").'
)

print('Available transitions:')
for category, phrases in TRANSITION_PHRASES.items():
    print(f'  {category}: {phrases[0]}')

Test TTS-teksten

Den eneste pålitelige testen av TTS-kvalitet er å lytte til resultatet. Bygg en løkke for testing og lytting: generer tekst → send den til TTS-API-et → lytt → gjenta. Ikke stol på å lese teksten visuelt.

import openai
import pathlib

client = openai.OpenAI(api_key='sk-...')

def generate_and_test_tts(text, output_file='test_audio.mp3'):
    """Generate TTS audio from text for auditory review."""
    response = client.audio.speech.create(
        model='tts-1-hd',
        voice='alloy',   # alloy, echo, fable, onyx, nova, shimmer
        input=text,
        speed=1.0        # 0.25 to 4.0
    )

    audio_path = pathlib.Path(output_file)
    response.stream_to_file(audio_path)
    print(f'Audio saved to {audio_path}')
    print(f'Text length: {len(text)} chars, {len(text.split())} words')
    return audio_path

# Generate and listen before shipping
tts_text = (
    'Welcome to our weekly update. '
    'This week, the engineering team shipped three major features. '
    'First, we improved search speed by forty percent. '
    'Second, we added support for twelve new languages. '
    'Third, we launched our new mobile application.'
)
path = generate_and_test_tts(tts_text)

Valg av stemme og tilpasning av prompt

Ulike TTS-stemmer har ulike styrker. Tilpass stemmen til innholdets tone:

  • Varm/fortellende: Historiefortelling og undervisningsinnhold
  • Profesjonell/nøytral: Forretningsrapporter og teknisk dokumentasjon
  • Energisk/lys: Markedsføring, produktdemonstrasjoner og varsler

Be LLM-en skrive innhold som passer til stemmens naturlige stilnivå.

VOICE_SPECIFIC_PROMPTS = {
    'professional': (
        'Write in a clear, neutral, professional tone. '
        'Use complete sentences. Avoid contractions. '
        'Suitable for business reports and documentation.'
    ),
    'warm_narrative': (
        'Write in a warm, engaging, conversational tone. '
        'Use contractions naturally. '
        'Speak directly to the listener using "you" and "we". '
        'Suitable for educational content and storytelling.'
    ),
    'energetic': (
        'Write in an upbeat, enthusiastic tone. '
        'Use shorter sentences for impact. '
        'Include emphasis words like "amazing", "incredible", "now". '
        'Suitable for marketing and product announcements.'
    ),
}

# Select based on use case
use_case = 'warm_narrative'
print(VOICE_SPECIFIC_PROMPTS[use_case])

Utforming av LLM-til-TTS-pipeline

I en produksjonspipeline genererer en LLM tekst som deretter sendes til en TTS-motor. De to må samordnes: LLM-en må vite at den genererer tekst for TTS, ikke for lesing, og systemprompten eller etterbehandlingen må håndheve TTS-vennlige regler før teksten når TTS-API-et.

Legg til et lett etterbehandlingstrinn mellom LLM-utdata og TTS-inndata: fjern eventuell markdown som har sluppet gjennom, skriv ut forkortelser og kontroller setningslengden. Dette fanger opp formateringsfeil fra LLM-en før de blir til lydartefakter.

Kunnskapssjekk: TTS-setningsstruktur

Hvilken av de følgende tekstene er best formatert for tekst-til-tale-narrasjon?

Oppsummering: TTS-mønstre for naturlig tale

TTS-tekst må skrives for øret, ikke øyet. Viktige regler: Hold setningene på 10–20 ord, bruk bare punktum og komma for å styre tempoet, skriv alle forkortelser og tall helt ut, fjern all markdown og visuell formatering, og bruk verbale overgangsfraser i stedet for visuell struktur. Homografer, tekniske termer og uvanlige tallformater kan føre til feiluttale. Oppdag og erstatt dem. Test alltid ved å lytte til den genererte lyden, ikke ved å lese teksten.

Gratis å komme i gang

Lær deg AI-prompt engineering med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
53
Leksjoner
199

Ofte stilte spørsmål

Er leksjonen «TTS-promptmønstre for naturlig tale» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien AI-prompt engineering, inkludert «TTS-promptmønstre for naturlig tale», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i AI-prompt engineering inneholder totalt 4 leksjoner.

Hva lærer jeg i «TTS-promptmønstre for naturlig tale»?

Setningsstruktur, tegnsetting og tempoanvisninger som forbedrer TTS-utdata. Du øver på AI-prompt engineering med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med AI-prompt engineering?

Ingen tidligere erfaring er nødvendig. AI-prompt engineering på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «TTS-promptmønstre for naturlig tale»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne AI-prompt engineering-leksjonen?

Ja. Alle AI-prompt engineering-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. TTS-promptmønstre for naturlig tale
  2. SSML og prosodikontroll
  3. Utforming av personaer for tale-AI
  4. Multimodale tale- og tekstagenter
← Tilbake til AI-prompt engineering