AI Prompt Engineering · Lekcja

Wzorce promptów TTS dla naturalnej mowy

Struktura zdań, interpunkcja i wskazówki dotyczące tempa, które poprawiają wynik TTS.

Lekcja 1 z 413 kroki

Wzorce promptów TTS dla naturalnej mowy to bezpłatna lekcja AI Prompt Engineering na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Prompt Engineering, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Prompt Engineering zawiera 4 lekcji w sumie.

Dlaczego promptowanie TTS wygląda inaczej

Systemy zamiany tekstu na mowę dosłownie przekształcają tekst na dźwięk. W przeciwieństwie do tekstu oglądanego, w którym czytelnicy mogą ponownie przeczytać niezrozumiałe fragmenty, słuchacze odbierają dźwięk linearnie i nie mogą zatrzymać się, aby rozszyfrować niejednoznaczne zdanie.

Tworzenie tekstu dla TTS wymaga zwrócenia uwagi na to, jak słowa brzmią — na rytm, długość zdań, niejednoznaczności wymowy oraz brak wizualnego formatowania, takiego jak pogrubienie czy wypunktowanie.

Długość zdań: krócej znaczy lepiej

Długie, złożone zdania z wieloma zdaniami podrzędnymi są trudne do śledzenia w nagraniu audio. Systemy TTS często przerywają rytm w punktach poprawnych gramatycznie, lecz niezręcznych akustycznie. Aby uzyskać mowę brzmiącą naturalnie, należy dążyć do zdań o długości od 10 do 20 słów.

# 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.'
)

Interpunkcja jako wskazówka dźwiękowa

Silniki TTS używają interpunkcji do kontrolowania tempa:

  • Kropka (.): pełne zakończenie, dłuższa pauza
  • Przecinek (,): krótka pauza
  • Znak zapytania (?): intonacja wznosząca
  • Wykrzyknik (!): akcent i energia
  • Średnik (;): działanie zależy od silnika — często jest ignorowany
  • Myślnik em (—): często powoduje niezręczne pauzy — należy go unikać

Aby niezawodnie kontrolować tempo, należy używać jawnych kropek zamiast myślników em lub średników.

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)

Unikanie niejednoznacznych skrótów

Skróty, które czytelnicy odczytują wzrokowo, mogą prowadzić do błędnej wymowy w TTS. Różne silniki TTS różnie radzą sobie ze skrótami.

  • Dr. → może zostać odczytane jako „Doctor” lub „Drive”
  • St. → „Saint” lub „Street”?
  • vs. → „versus” lub „vs”?
  • etc. → „et cetera” lub „etcee”?

Aby zapewnić prawidłową wymowę, należy zapisywać skróty w tekście TTS w pełnej formie.

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)

Słowa powodujące błędną wymowę

Niektóre słowa lub wzorce regularnie sprawiają trudności silnikom TTS. Należy je znać i stosować zamienniki:

  • Homonimy graficzne: „read” (czas teraźniejszy i przeszły), „lead” (metal i prowadzenie), „wind” — TTS wybiera jedną wymowę
  • Rzadkie nazwy własne: terminy techniczne, nazwy marek, słowa obcojęzyczne
  • Liczby w nietypowych kontekstach: wersje API, formaty dat, jednostki miary
# 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')

Liczby i daty w TTS

Liczby są jednym z głównych źródeł niezręczności w TTS. Należy zapisywać je w sposób, który nie pozostawia wątpliwości co do ich wymowy.

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
)

Usuwanie formatowania wizualnego

Formatowanie Markdown i HTML jest niewidoczne dla oka, ale niektóre silniki TTS odczytują je na głos. Gwiazdki, znaki hash i nawiasy ostre należy usunąć lub zastąpić ich odpowiednikami przeznaczonymi do odczytania.

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)

Sterowanie tempem za pomocą fraz przejściowych

W tekście pisanym struktura wizualna, czyli akapity i nagłówki, pomaga czytelnikowi. W nagraniu TTS potrzebne są werbalne frazy przejściowe, które ułatwiają słuchaczom śledzenie struktury.

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]}')

Testowanie tekstu TTS

Jedynym wiarygodnym testem jakości TTS jest odsłuchanie tekstu. Należy utworzyć pętlę testowania i odsłuchu: wygenerować tekst → wysłać go do API TTS → odsłuchać → wprowadzić poprawki. Nie należy polegać na wizualnym odczytywaniu tekstu.

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)

Dobór głosu i dopasowanie promptu

Różne głosy TTS mają różne zalety. Głos należy dopasować do tonu treści:

  • Ciepły i narracyjny: opowiadania, treści edukacyjne
  • Profesjonalny i neutralny: raporty biznesowe, dokumentacja techniczna
  • Energetyczny i jasny: marketing, demonstracje produktów, powiadomienia

Należy polecić LLM-owi tworzenie treści dopasowanej do naturalnego rejestru wybranego głosu.

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])

Projektowanie potoku LLM–TTS

W potoku produkcyjnym LLM generuje tekst, który następnie jest przekazywany do silnika TTS. Oba elementy muszą być skoordynowane: LLM musi wiedzieć, że generuje tekst przeznaczony dla TTS, a nie do czytania, natomiast prompt systemowy lub przetwarzanie końcowe musi wymuszać reguły przyjazne dla TTS, zanim tekst trafi do API TTS.

Między wynikiem LLM a danymi wejściowymi TTS należy dodać lekki etap przetwarzania końcowego: usunąć przejęte formatowanie Markdown, rozwinąć skróty i sprawdzić długość zdań. Pozwala to wychwycić błędy formatowania LLM, zanim staną się artefaktami dźwiękowymi.

Sprawdzenie wiedzy: struktura zdań w TTS

Który z poniższych tekstów jest najlepiej sformatowany do narracji zamiany tekstu na mowę?

Podsumowanie: wzorce promptów TTS dla naturalnej mowy

Tekst TTS należy pisać z myślą o słuchu, a nie o wzroku. Najważniejsze zasady to: ograniczać zdania do 10–20 słów, używać do sterowania tempem wyłącznie kropek i przecinków, zapisywać w pełnej formie wszystkie skróty i liczby, usuwać całe formatowanie Markdown oraz formatowanie wizualne, a także używać werbalnych fraz przejściowych zamiast struktury wizualnej. Homonimy graficzne, terminy techniczne i nietypowe formaty liczb mogą powodować błędną wymowę, dlatego należy je wykrywać i zastępować. Wygenerowany dźwięk należy zawsze testować przez odsłuchanie, a nie przez czytanie tekstu.

Bezpłatny start

Ucz się AI Prompt Engineering dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
53
Lekcje
199

Często zadawane pytania

Czy lekcja „Wzorce promptów TTS dla naturalnej mowy” jest bezpłatna?

Tak — pełny tekst „Wzorce promptów TTS dla naturalnej mowy” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Prompt Engineering, przejdź na CoddyKit PRO. Kurs AI Prompt Engineering zawiera 4 lekcji w sumie.

Co nauczysz się w „Wzorce promptów TTS dla naturalnej mowy”?

Struktura zdań, interpunkcja i wskazówki dotyczące tempa, które poprawiają wynik TTS. Ćwiczysz AI Prompt Engineering z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć AI Prompt Engineering?

Nie wymagamy żadnego doświadczenia. AI Prompt Engineering w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Wzorce promptów TTS dla naturalnej mowy”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji AI Prompt Engineering?

Tak. Każda lekcja AI Prompt Engineering zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Wzorce promptów TTS dla naturalnej mowy
  2. SSML i kontrola prozodii
  3. Projektowanie person głosowych AI
  4. Multimodalni agenci głosowi i tekstowi
← Powrót do AI Prompt Engineering