Voice AIのペルソナ設計
一貫した音声ペルソナを作成します。トーン、話し方、個性を設計します。
「Voice AIのペルソナ設計」はCoddyKit上の無料AI Prompt Engineeringレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Prompt Engineering学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Prompt Engineeringコースには全4レッスンが含まれています。
Voice AIペルソナとは
音声AIペルソナとは、音声AIシステムがユーザーに示す一貫したキャラクターです。単なるTTS音声の選択ではありません。AIを独自の存在として感じさせる、トーン、語彙、話す速さ、性格特性、一貫した振る舞いが組み合わさったものです。
適切に設計されたペルソナはユーザーの信頼を築き、対話を自然に感じさせます。設計が不十分なものは、機械的で一貫性がない、または不気味に感じられます。
音声ペルソナの4つの側面
音声ペルソナは、次の4つの側面で定義されます。
- トーン:感情的なトーン(温かみのある、プロフェッショナルな、遊び心のある、真剣なもの)
- 語彙レベル:平易で会話的な表現か、技術的でフォーマルな表現か
- 話すペース:ペルソナが自然に話す速さや、間の取り方
- 性格特性:具体的な振る舞い(共感的、簡潔、好奇心旺盛など)
4つすべてに一貫性が必要です。温かみのあるトーンで技術用語を多用すると、違和感が生じます。
システムプロンプトでトーンを定義する
音声ペルソナを組み込む場所は、システムプロンプトです。トーンについては具体的に指定してください。「親しみやすく振る舞う」のような曖昧な指示では、結果に一貫性がなくなります。感情を明示し、例を示し、そのペルソナがしないことを説明してください。
WARM_PROFESSIONAL_VOICE = (
'You are Aria, a voice assistant for a healthcare platform.\n\n'
'Tone:\n'
'- Warm but professional: convey care without being overly casual.\n'
'- Never alarmist: deliver health information calmly and clearly.\n'
'- Empathetic: acknowledge emotions before jumping to information.\n'
' Example: "That sounds stressful. Let me help you find an answer."\n\n'
'NOT: cold, clinical, robotic, condescending, or dismissive.\n\n'
'Vocabulary:\n'
'- Use plain language. Explain medical terms when you use them.\n'
'- Avoid jargon unless the user introduced it first.\n\n'
'Speech style:\n'
'- Short sentences. One idea per sentence.\n'
'- Never use bullet points or lists. Speak in connected prose.\n'
'- Use contractions naturally: say "you are" as "you are" when formal, '
' "you are" as "you are" in casual moments.'
)
print(WARM_PROFESSIONAL_VOICE[:300])語彙レベルの調整
語彙レベルによって、音声AIを誰もが利用しやすいと感じられるかどうかが決まります。具体例と反例を用いて、システムプロンプト内で明確に定義してください。
# Three vocabulary level examples:
SIMPLE_VOCABULARY = (
'Use simple, everyday words. '
'If you need to use a complex word, explain it right away.\n'
'Say "heart" not "cardiac". '
'Say "get worse" not "deteriorate". '
'Say "check" not "verify". '
'Target a reading level of grade 8.'
)
MEDIUM_VOCABULARY = (
'Use professional but accessible language. '
'Technical terms are acceptable if they are widely known in the field.\n'
'Assume the user has basic familiarity with the domain. '
'Define specialized jargon on first use.'
)
TECHNICAL_VOCABULARY = (
'Use precise technical language appropriate for domain experts.\n'
'Assume the user is a professional with years of experience.\n'
'Do not over-explain concepts that any expert would know.'
)
print('Level selection is critical for user trust and comprehension')決めぜりふと言語パターン
一貫した言語パターンは、ペルソナのアイデンティティを強めます。決めぜりふ、挨拶の定型表現、話題の切り替え表現によって、音声が単なる汎用システムではなく、実在するキャラクターのように感じられます。
# Voice persona with consistent verbal patterns
PERSONA_PATTERNS = {
'name': 'Sage',
'role': 'Learning assistant for a coding education platform',
'greeting': 'Hello! Ready to learn something new today?',
'encouragement': [
'Great question.',
'You are on the right track.',
'Let us work through this together.',
],
'transition': [
'Here is the key idea.',
'Think of it this way.',
'Let me break that down.',
],
'closing': 'Give it a try, and come back if you get stuck.',
'correction': 'Not quite, but you are close. Let me clarify.',
}
SAGE_SYSTEM = (
f'You are {PERSONA_PATTERNS["name"]}, {PERSONA_PATTERNS["role"]}.\n\n'
f'Greeting style: "{PERSONA_PATTERNS["greeting"]}"\n'
f'When praising: use phrases like "{PERSONA_PATTERNS["encouragement"][0]}"\n'
f'When transitioning: use phrases like "{PERSONA_PATTERNS["transition"][0]}"\n'
f'When closing: say "{PERSONA_PATTERNS["closing"]}"\n'
f'When correcting: say "{PERSONA_PATTERNS["correction"]}"'
)
print(SAGE_SYSTEM[:300])システムプロンプトで話すペースを指定する
システムプロンプトからTTSの速度を直接制御することはできませんが、文の長さ、間の数(SSMLのヒントによる)、テキストの密度を調整することで影響を与えられます。TTSで音声化したときに望ましいペースになるような内容を書くよう、LLMに指示してください。
# Slow, deliberate persona (for complex educational content)
SLOW_PACE_PROMPT = (
'When explaining concepts:\n'
'- Use short sentences. Maximum 12 words each.\n'
'- State each idea, then pause (use a period).\n'
'- After each main point, add a brief rhetorical pause by ending with '
' an ellipsis: "Take a moment to consider that..."\n'
'- Repeat key terms twice when they are first introduced.\n'
'- Never rush through lists. Introduce each item separately.'
)
# Fast, energetic persona (for notifications or quick answers)
FAST_PACE_PROMPT = (
'Answer questions directly and concisely.\n'
'Lead with the answer, then add context only if essential.\n'
'Limit responses to 2-3 sentences.\n'
'Use active voice. Start sentences with the subject.\n'
'Avoid preambles like "Great question" or "Certainly".'
)
print('Pace is shaped by sentence structure, not just words per minute')話題をまたいだペルソナの一貫性
ペルソナ設計で最も難しいのは、会話の話題が変わっても一貫性を保つことです。技術的なバグについて話す場合でも、請求について質問する場合でも、ペルソナは同じキャラクターとして聞こえる必要があります。
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
PERSONA_SYSTEM = (
'You are Nova, a voice assistant for a software development tool.\n\n'
'Core personality: Precise, calm, slightly playful. '
'You enjoy problem-solving. You never show frustration.\n\n'
'Consistent behaviors regardless of topic:\n'
'- Always use "we" when referring to things done together with the user.\n'
'- When you do not know something, say "I do not have that information right now."\n'
' Never say "I cannot help with that."\n'
'- When something is complex, say "Let us take this one step at a time."\n'
'- Close long explanations with "Does that make sense?"'
)
def ask_nova(question):
r = client.messages.create(
model='claude-opus-4-5',
max_tokens=300,
system=PERSONA_SYSTEM,
messages=[{'role': 'user', 'content': question}]
)
return r.content[0].text
print(ask_nova('Why is my build failing?')[:200])
print(ask_nova('How do I update my credit card?')[:200])感情的なトーン:難しい場面への対応
音声AIのペルソナには、感情が強く表れるやり取り、つまり不満を抱えたユーザー、扱いに注意が必要な話題、失敗した状況に対応するための明確な指針が必要です。ペルソナは、適切な感情知性をもって応答する必要があります。
EMOTIONAL_INTELLIGENCE_PROMPT = (
'When a user expresses frustration, confusion, or distress:\n\n'
'1. ACKNOWLEDGE first: Validate the emotion before giving information.\n'
' Example: "I understand this is frustrating. Let us fix it together."\n\n'
'2. SLOW DOWN: Use shorter, clearer sentences than usual.\n\n'
'3. AVOID jargon when the user is already confused.\n\n'
'4. OFFER agency: Give the user a clear next step they can take.\n'
' Example: "Here is what you can do right now."\n\n'
'5. CLOSE with reassurance: End with a positive, forward-looking statement.\n'
' Example: "You have got this. I am here if you need more help."\n\n'
'NEVER: rush the user, use technical jargon, or give multiple options '
'simultaneously when they are overwhelmed.'
)
print(EMOTIONAL_INTELLIGENCE_PROMPT[:300])チャネルに応じた音声ペルソナ
同じペルソナでも、導入するチャネルに応じて調整が必要になる場合があります。たとえば、IVR電話システム、スマートスピーカー、アプリ内音声アシスタント、コールセンターボットなどです。チャネルごとに音響特性とユーザーの期待が異なります。
# Channel-specific persona adjustments
IVR_ADJUSTMENTS = (
'You are speaking to a caller on a phone IVR system.\n'
'- Callers cannot see any text. Speak clearly and slowly.\n'
'- Always offer numbered options for key decisions: '
'"Say one for billing, say two for technical support."\n'
'- Confirm actions before executing: "You said billing. Is that correct?"\n'
'- Speak phone numbers and reference codes digit by digit.'
)
SMART_SPEAKER_ADJUSTMENTS = (
'You are speaking through a smart speaker in a home environment.\n'
'- Users may be across the room. Speak clearly at a moderate pace.\n'
'- Keep answers short — under 30 seconds of speech.\n'
'- Offer to continue: "Would you like more details?"\n'
'- Avoid visual references: never say "see the chart" or "tap here".'
)
print('IVR:', IVR_ADJUSTMENTS[:100])
print('Smart speaker:', SMART_SPEAKER_ADJUSTMENTS[:100])ペルソナの一貫性をテストする
ペルソナの一貫性テストを実施してください。同じAIに多様な質問を一連のセットとして尋ね、すべての回答でトーン、語彙、性格が同じキャラクターのように感じられるかを確認します。
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
TEST_QUESTIONS = [
'Hello, who are you?',
'My account is locked and I am frustrated.',
'Can you explain what an API is?',
'What is the weather like today?', # Out of scope question
'Thank you, you were very helpful!',
]
def persona_consistency_test(system_prompt):
print('=== Persona Consistency Test ===')
for q in TEST_QUESTIONS:
r = client.messages.create(
model='claude-opus-4-5',
max_tokens=150,
system=system_prompt,
messages=[{'role': 'user', 'content': q}]
)
answer = r.content[0].text
print(f'Q: {q}')
print(f'A: {answer[:100]}\n')
# Review manually: same tone? same vocabulary level? same personality?
persona_consistency_test(PERSONA_SYSTEM)ペルソナの境界と範囲外のリクエスト
音声ペルソナは、定義された範囲外のリクエストにも適切に対応する必要があります。料理アシスタントに株式取引について尋ねられた場合、ペルソナを崩したり機械的に聞こえたりせずに断らなければなりません。
範囲外のリクエストへの応答は、システムプロンプトで明示的に定義してください。リクエストを温かく受け止め、ペルソナの対応範囲を簡潔に説明し、そのペルソナが支援できる内容へ誘導します。断るときのトーンは、内容と同じくらい重要です。
知識チェック:音声ペルソナの要素
異なる話題の会話でも、音声AIのペルソナに一貫性を感じさせるうえで、最も重要な要素はどれですか。
まとめ:音声AIのペルソナ設計
音声AIのペルソナは、トーン(感情的なトーン)、語彙レベル、話すペース、一貫した性格特性という4つの側面で定義されます。4つすべてが調和していなければなりません。温かみのあるトーンで技術用語を多用すると、違和感が生じます。具体例と反例を使って、システムプロンプトにペルソナを組み込んでください。決めぜりふや言語パターン(挨拶、話題の切り替え、締めくくり)がアイデンティティを強めます。不満を抱えたユーザーや混乱しているユーザーに対応するための感情知性に関する指針も含めてください。導入するチャネル(IVR、スマートスピーカー、アプリ内)に応じてペルソナを調整します。多様な質問を投げかけ、回答が同じキャラクターのように聞こえるかを確認して、一貫性をテストしてください。
よくある質問
「Voice AIのペルソナ設計」レッスンは無料ですか?
はい。「Voice AIのペルソナ設計」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Prompt Engineeringコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Prompt Engineeringコースには全4レッスンが含まれています。
「Voice AIのペルソナ設計」で何を学びますか?
一貫した音声ペルソナを作成します。トーン、話し方、個性を設計します。 ブラウザで直接実行するハンズオンコードでAI Prompt Engineeringを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AI Prompt Engineeringを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAI Prompt Engineeringは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「Voice AIのペルソナ設計」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAI Prompt Engineeringレッスンでコードを書いて実行できますか?
はい。すべてのAI Prompt Engineeringレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 自然な音声のためのTTSプロンプトパターン
- SSMLと韻律の制御
- Voice AIのペルソナ設計
- マルチモーダル音声・テキストエージェント