> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cekura.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Accent Testing

> Test your voice AI agent against regional and non-native accent variations to surface speech recognition and comprehension failures.

export const CopyPageButton = () => {
  if (typeof window !== 'undefined') {
    setTimeout(function () {
      if (document.getElementById('ck-tools')) return;
      var anchor = document.getElementById('content-area') || document.querySelector('.mdx-content');
      if (!anchor) return;
      if (!document.getElementById('ck-style')) {
        var s = document.createElement('style');
        s.id = 'ck-style';
        s.textContent = '#ck-tools{position:absolute;top:6px;right:0;z-index:100;font-family:inherit;}' + '.ck-row{display:inline-flex;align-items:stretch;border:1px solid rgba(0,0,0,0.15);border-radius:8px;overflow:hidden;background:#fff;}' + ':root.dark .ck-row{background:rgba(255,255,255,0.06);border-color:rgba(255,255,255,0.12);}' + '.ck-btn{padding:5px 12px;border:none;background:none;cursor:pointer;font-size:13px;font-weight:500;font-family:inherit;color:#374151;}' + ':root.dark .ck-btn{color:#d1d5db;}' + '.ck-btn:hover{background:rgba(0,0,0,0.04);}' + ':root.dark .ck-btn:hover{background:rgba(255,255,255,0.06);}' + '.ck-chevron{padding:5px 8px;border:none;background:none;cursor:pointer;font-size:14px;font-family:inherit;color:#374151;}' + ':root.dark .ck-chevron{color:#d1d5db;}' + '.ck-chevron:hover{background:rgba(0,0,0,0.04);}' + ':root.dark .ck-chevron:hover{background:rgba(255,255,255,0.06);}' + '.ck-divider{width:1px;background:rgba(0,0,0,0.12);flex-shrink:0;}' + ':root.dark .ck-divider{background:rgba(255,255,255,0.12);}' + '.ck-dd{position:absolute;top:calc(100% + 4px);right:0;min-width:180px;background:#fff;border:1px solid rgba(0,0,0,0.12);border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,0.1);padding:4px;display:none;z-index:200;}' + ':root.dark .ck-dd{background:#1f2937;border-color:rgba(255,255,255,0.1);box-shadow:0 4px 16px rgba(0,0,0,0.35);}' + '.ck-item{display:block;width:100%;padding:7px 12px;border:none;background:none;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit;text-align:left;color:#374151;}' + ':root.dark .ck-item{color:#d1d5db;}' + '.ck-item:hover{background:rgba(0,0,0,0.05);}' + ':root.dark .ck-item:hover{background:rgba(255,255,255,0.07);}';
        document.head.appendChild(s);
      }
      var wrap = document.createElement('div');
      wrap.id = 'ck-tools';
      var row = document.createElement('div');
      row.className = 'ck-row';
      var mainBtn = document.createElement('button');
      mainBtn.className = 'ck-btn';
      mainBtn.textContent = 'Copy page';
      var divider = document.createElement('span');
      divider.className = 'ck-divider';
      var chevron = document.createElement('button');
      chevron.className = 'ck-chevron';
      chevron.textContent = '▾';
      var dd = document.createElement('div');
      dd.className = 'ck-dd';
      function closeDD() {
        dd.style.display = 'none';
      }
      function openDD() {
        dd.style.display = 'block';
      }
      chevron.onclick = function (e) {
        e.stopPropagation();
        if (dd.style.display === 'block') {
          closeDD();
        } else {
          openDD();
        }
      };
      document.addEventListener('click', function (e) {
        if (!e.target.closest('#ck-tools')) {
          closeDD();
        }
      });
      document.addEventListener('keydown', function (e) {
        if (e.key === 'Escape') {
          closeDD();
        }
      });
      function makeItem(label, fn) {
        var b = document.createElement('button');
        b.className = 'ck-item';
        b.textContent = label;
        b.onclick = function () {
          fn();
          closeDD();
        };
        return b;
      }
      function getMarkdown() {
        var walk = function (node) {
          if (!node) return '';
          if (node.nodeType === 3) return node.textContent || '';
          if (node.nodeType !== 1) return '';
          var tag = node.tagName.toLowerCase();
          var skip = ['script', 'style', 'svg', 'noscript', 'button', 'iframe'];
          if (skip.indexOf(tag) !== -1) return '';
          if (node.id === 'ck-tools') return '';
          var ch = Array.from(node.childNodes).map(walk).join('');
          if (tag === 'h1') return '\n# ' + ch.trim() + '\n\n';
          if (tag === 'h2') return '\n## ' + ch.trim() + '\n\n';
          if (tag === 'h3') return '\n### ' + ch.trim() + '\n\n';
          if (tag === 'p') return '\n' + ch.trim() + '\n\n';
          if (tag === 'pre') return '\n```\n' + node.textContent.trim() + '\n```\n\n';
          if (tag === 'li') return '- ' + ch.trim() + '\n';
          if (tag === 'code') return '`' + ch.trim() + '`';
          return ch;
        };
        var content = document.querySelector('.mdx-content') || document.getElementById('content-area') || document.body;
        return walk(content).replace(/\n\n\n+/g, '\n\n').trim();
      }
      function copyMd() {
        var md = getMarkdown();
        navigator.clipboard.writeText(md).then(function () {
          mainBtn.textContent = 'Copied!';
          setTimeout(function () {
            mainBtn.textContent = 'Copy page';
          }, 2000);
        });
      }
      function viewMd() {
        var md = getMarkdown();
        var safe = md.split('&').join('&amp;').split('<').join('&lt;').split('>').join('&gt;');
        var html = '<!DOCTYPE html><html><head><meta charset="utf-8"><style>body{font-family:monospace;max-width:860px;margin:40px auto;padding:0 24px;line-height:1.7;white-space:pre-wrap;word-wrap:break-word}</style></head><body>' + safe + '</body></html>';
        window.open(URL.createObjectURL(new Blob([html], {
          type: 'text/html'
        })), '_blank');
      }
      function openClaude() {
        var prompt = 'Can you read this Cekura docs page ' + window.location.href + ' so I can ask you questions?';
        window.open('https://claude.ai/new?q=' + encodeURIComponent(prompt), '_blank');
      }
      mainBtn.onclick = copyMd;
      dd.appendChild(makeItem('Copy page', copyMd));
      dd.appendChild(makeItem('View as Markdown', viewMd));
      dd.appendChild(makeItem('Open in Claude', openClaude));
      row.appendChild(mainBtn);
      row.appendChild(divider);
      row.appendChild(chevron);
      wrap.appendChild(row);
      wrap.appendChild(dd);
      anchor.style.position = 'relative';
      anchor.insertBefore(wrap, anchor.firstChild);
    }, 50);
  }
  return null;
};

<CopyPageButton />

## Overview

When an agent serves users who speak the same language with different regional or non-native accents, accent variation becomes a distinct testing surface. Common failure modes that only surface under accent testing:

* ASR (speech-to-text) producing incorrect transcriptions for accented speech, causing downstream logic errors
* The agent failing to recognize words, names, or domain-specific terms when spoken with an unfamiliar accent
* Comprehension failures that appear to be logic bugs but are actually transcription errors

## How It Works

Accent testing uses **Custom Personalities** to simulate callers with specific accent profiles. You configure a personality's voice ID, pace, and behavior prompt to match the accent variant you want to test, then run your existing evaluators against it. The agent sees the same workflow and expected outcomes — only the voice input changes.

## Setting Up an Accent Test

<Steps>
  <Step title="Create a personality per accent variant">
    In the *Personalities* section, create a custom personality for each accent you want to test. Configure:

    * A voice ID with the target accent
    * Behavioral traits such as pace and interruption patterns
    * A personality prompt reflecting any dialect-specific phrasing if relevant

    See [Creating Custom Personalities](/documentation/advanced/creating-custom-personalities) for step-by-step instructions.
  </Step>

  <Step title="Run your evaluators against each accent">
    Use the **Override Personality** option when running evaluators to sweep the same workflow across all accent variants without duplicating evaluators. Select the evaluators you want to run and pick one or more accent personalities — Cekura executes each evaluator against every selected personality.

    Keep the scenario instructions and expected outcomes identical across accent runs so you're measuring the same workflow, not different prompts.
  </Step>

  <Step title="Enable the Transcription Accuracy metric">
    Add the *Transcription Accuracy* predefined metric to your evaluator. For simulation runs, this scores how many transcription errors the Testing Agent's speech-to-text makes — errors on names, nouns, and numbers carry the highest weight. A low Transcription Accuracy score under a specific accent personality is a direct signal that your agent's STT pipeline struggles with that accent.

    See [Pre-defined Metrics](/documentation/key-concepts/metrics/pre-defined-metrics) for the full scoring breakdown.
  </Step>

  <Step title="Compare results across accents">
    Use the [A/B Testing](/documentation/guides/testing-agents/ab-testing) compare view to diff pass rates for the same evaluator across different accent personalities. This surfaces which accent variants have the highest failure rates and makes prioritization straightforward.
  </Step>
</Steps>

## What to Watch For

| Symptom                                                                     | Likely Cause                                               |
| --------------------------------------------------------------------------- | ---------------------------------------------------------- |
| Expected outcome fails even though the workflow is simple                   | ASR transcription errors garbling key words or phrases     |
| Transcription Accuracy score is low for one personality but high for others | STT model not tuned for that accent variant                |
| Inconsistent pass rates across accent runs with identical logic             | ASR handling is accent-dependent; review STT configuration |
| Agent responds correctly in text but fails on voice input                   | Speech recognition issue, not a logic or prompt issue      |

## Best Practices

### Hold the Workflow Constant

Change only the personality between runs. If the scenario instructions differ across accent variants, you cannot tell whether a failure is caused by accent handling or a prompt difference.

### Target the Hard Words

Names, numbers, and domain-specific terms are where accent-driven ASR errors concentrate. Design evaluators that exercise these specifically so failures are easy to attribute to transcription.

### Review Your STT Configuration

ASR errors under accent testing often indicate the STT model is locked to a single locale. Review your agent's speech-to-text configuration to confirm it handles accent variation, and compare STT providers if failures are consistent across multiple accent personalities.

## Related Resources

* [Creating Custom Personalities](/documentation/advanced/creating-custom-personalities) — Set up voice profiles for specific accent variants
* [Pre-defined Metrics](/documentation/key-concepts/metrics/pre-defined-metrics) — Transcription Accuracy scoring details
* [A/B Testing](/documentation/guides/testing-agents/ab-testing) — Compare pass rates across accent variants
* [Multilingual Testing](/documentation/guides/testing-agents/multilingual-testing) — Testing across different languages
