Шаблоны запросов TTS для естественной речи
Структура предложений, пунктуация и подсказки по темпу, улучшающие результат TTS.
«Шаблоны запросов TTS для естественной речи» — бесплатный урок AI Prompt Engineering на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Prompt Engineering, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Prompt Engineering содержит 4 уроков всего.
Чем отличается составление запросов для TTS
Системы преобразования текста в речь буквально преобразуют Ваш текст в аудио. В отличие от визуального текста, который читатель может перечитать, если что-то непонятно, аудио воспринимается линейно: слушатель не может остановиться, чтобы расшифровать неоднозначное предложение.
Написание текста для TTS означает, что нужно думать о том, как слова звучат: учитывать ритм, длину предложений, неоднозначность произношения и отсутствие визуального форматирования, например жирного шрифта или маркированных списков.
Длина предложений: чем короче, тем лучше
Длинные, сложные предложения с несколькими придаточными трудно воспринимать на слух. Системы TTS часто нарушают ритм в грамматически правильных, но акустически неудобных местах. Старайтесь использовать предложения длиной 10–20 слов, чтобы речь звучала естественно.
# 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.'
)Пунктуация как звуковые подсказки
Движки TTS используют знаки препинания для управления темпом:
- Точка (.): завершение фразы, длинная пауза
- Запятая (,): короткая пауза
- Вопросительный знак (?): восходящая интонация
- Восклицательный знак (!): акцент и энергия
- Точка с запятой (;): поведение зависит от движка и часто не учитывается
- Длинное тире (—): часто вызывает неестественные паузы — избегайте его
Для надёжного управления темпом используйте отдельные точки вместо длинных тире или точек с запятой.
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)Как избегать неоднозначных сокращений
Сокращения, которые читатели расшифровывают визуально, могут привести к неправильному произношению в TTS. Разные движки TTS обрабатывают сокращения по-разному.
Dr.→ может произнести «доктор» или «драйв»St.→ «святой» или «улица»?vs.→ «против» или «ви-эс»?etc.→ «и так далее» или «этси»?
Расписывайте сокращения в тексте для TTS, чтобы обеспечить правильное произношение.
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)Слова, вызывающие неправильное произношение
Некоторые слова или сочетания регулярно сбивают с толку движки TTS. Знайте о них и используйте альтернативы:
- Омографы: 'read' (настоящее и прошедшее время), слова со значениями «свинец» и «вести», а также «ветер» и «наматывать» — TTS выбирает одно произношение
- Редкие имена собственные: технические термины, названия брендов и иностранные слова
- Числа в необычных контекстах: версии программных интерфейсов, форматы дат и единицы измерения
# 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')Числа и даты для TTS
Числа — один из главных источников неестественного звучания TTS. Записывайте их так, чтобы не оставалось сомнений в том, как их произносить.
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
)Удаление визуального форматирования
Разметка и HTML-форматирование незаметны для глаза, но некоторые движки TTS произносят их вслух. Звёздочки, символы решётки и угловые скобки нужно удалять или заменять их произносимыми эквивалентами.
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)Управление темпом с помощью переходных фраз
В письменном тексте визуальная структура, например абзацы и заголовки, помогает читателю ориентироваться. В аудио TTS нужны словесные переходные фразы, которые помогают слушателям следить за структурой.
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]}')Проверка текста для TTS
Единственный надёжный способ проверить качество TTS — прослушать результат. Создайте цикл проверки: сгенерировать текст → передать его в интерфейс TTS → прослушать → повторить. Не полагайтесь на визуальное чтение текста.
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)Выбор голоса и согласование запроса
У разных голосов TTS разные сильные стороны. Подбирайте голос под тональность содержания:
- Тёплый, повествовательный: рассказы, образовательные материалы
- Профессиональный, нейтральный: деловые отчёты, техническая документация
- Энергичный, яркий: маркетинг, демонстрации продуктов, уведомления
Попросите LLM писать содержание в соответствии с естественной манерой выбранного голоса.
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])Проектирование конвейера LLM–TTS
В рабочем конвейере LLM создаёт текст, который затем передаётся движку TTS. Их нужно согласовать: LLM должна знать, что создаёт текст для TTS, а не для чтения, а системный запрос или последующая обработка должны обеспечивать соблюдение правил, удобных для TTS, до передачи текста в интерфейс TTS.
Добавьте лёгкий этап последующей обработки между выводом LLM и входными данными TTS: удалите просочившуюся разметку, раскройте сокращения и проверьте длину предложений. Это позволяет обнаружить ошибки форматирования LLM до того, как они превратятся в артефакты аудио.
Проверка знаний: структура предложений для TTS
Какой из следующих текстов лучше всего отформатирован для повествования с преобразованием текста в речь?
Итоги: шаблоны запросов TTS для естественной речи
Текст для TTS нужно писать для слуха, а не для зрения. Основные правила: ограничивайте предложения 10–20 словами, используйте для управления темпом только точки и запятые, полностью прописывайте все сокращения и числа, удаляйте всю разметку и визуальное форматирование, а для замены визуальной структуры используйте словесные переходные фразы. Омографы, технические термины и необычные форматы чисел вызывают неправильное произношение — обнаруживайте и заменяйте их. Всегда проверяйте результат, прослушивая созданное аудио, а не читая текст.
Часто задаваемые вопросы
Урок «Шаблоны запросов TTS для естественной речи» бесплатный?
Да — полный текст урока «Шаблоны запросов TTS для естественной речи» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Prompt Engineering, подпишись на CoddyKit PRO. Курс AI Prompt Engineering содержит 4 уроков всего.
Чему я научусь в уроке «Шаблоны запросов TTS для естественной речи»?
Структура предложений, пунктуация и подсказки по темпу, улучшающие результат TTS. Ты практикуешь AI Prompt Engineering с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать AI Prompt Engineering?
Предыдущий опыт не требуется. AI Prompt Engineering на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Шаблоны запросов TTS для естественной речи»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке AI Prompt Engineering?
Да. Каждый урок AI Prompt Engineering включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Шаблоны запросов TTS для естественной речи
- SSML и управление просодикой
- Проектирование персоны голосового искусственного интеллекта
- Мультимодальные голосовые и текстовые агенты