# Speech technology built for AI voice agents

Source: https://speechmatics-website-git-preview-speechmatics.vercel.app/voice-agents

Build AI voice agents with sub-second, speaker-aware speech-to-text in 56+ languages, custom dictionaries, and flexible deployment.

## AI voice agents that hear every word

Sub-second, speaker-aware speech-to-text across 56+ languages, with a flexible API and native integrations for LiveKit, Pipecat, and Vapi to power AI voice agents.

**Start with $100 in free credit.**

- [Get your free API key](https://portal.speechmatics.com/signup/)
- [View Docs](https://docs.speechmatics.com/)

- [AI Media](https://www.speechmatics.com/product/case-studies/transforming-live-captioning-how-ai-media-are-advancing-real-time) — Delivering 120X more with voice AI
- Pipecat
- mediQuo
- [LiveKit](https://www.speechmatics.com/company/articles-and-news/build-ai-agents-that-understand-who-said-what-livekit) — Enabling 100,000+ developers with leading speech recognition
- Adobe
- NVidia Inception Program
- Vapi
- Humetrix
- [NCI](https://www.speechmatics.com/product/case-studies/nci) — Redefining real-time captioning
- Veritone
- [Media Track](https://www.speechmatics.com/product/case-studies/media-track-enhances-global-media-monitoring-with-speechmatics) — Delivering a 20% leap in accuracy improvements
- Content Guru
- Docbuddy
- Cekura
- Jambonz
- Zylinc
- [Prosodica](https://www.speechmatics.com/product/case-studies/vail-systems-prosodica) — Driving better conversations at scale
- Ubisoft
- Edvak
- ACA Group
- Stenoly
- Nabla
- Speech Intelligence - 3playmedia
- Vodex

## AI voice agents that understand every voice in real time

Give your agent a stronger foundation: accurate, sub-second transcription that holds up in noise and overlap, across 56+ languages.

- [Try the API](https://portal.speechmatics.com/signup/)

Try the API

- G2 HighPerformer Summer 2024
- G2 HighPerformer Fall 2024
- [G2 Highest Adoption Fall 2024](https://www.g2.com/products/speechmatics/reviews)
- G2 Fall 2025 best users
- [G2 HighPerfomer Spring 2025](https://www.g2.com/products/speechmatics/reviews)
- [G2 HighPerformer Winter 2025](https://www.g2.com/products/speechmatics/reviews)
- [G2 Most likely to recommend Winter 2025](https://www.g2.com/products/speechmatics/reviews)
- G2 Users Love Us

## Why builders choose Speechmatics

### Accuracy — Capture what's actually said

Capture what users actually say, even with accents, background noise, or overlapping speech.

### Low-latency transcription — Keep conversations moving

Keep conversations moving with speech-to-text that supports fast, natural responses.

### Speaker diarization — Know who's talking

Know who's talking, live, so your agent can act on the right speaker instead of the loudest one.

- [Speaker diarization docs link](https://docs.speechmatics.com/speech-to-text/features/diarization)

Speaker diarization docs

### End-of-turn detection — Final transcripts in ~250ms

With ForceEndOfUtterance, your agent gets a final transcript in roughly 250ms from the moment it signals the turn has ended.

- [Turn detection docs](https://docs.speechmatics.com/speech-to-text/realtime/end-of-turn)

Turn detection docs

- [You can't hurry love article](https://www.speechmatics.com/company/articles-and-news/you-cant-hurry-love-but-you-can-hurry-final-transcripts)

### 56+ languages — One model, not a per-language swap

Serve international users without changing providers.

- [Languages](https://speechmatics-website-git-preview-speechmatics.vercel.app/languages)

Languages

### Custom vocabulary — Names, addresses, and account numbers

Names, addresses, and account numbers, captured accurately with Custom Dictionary.

- [Custom Dictionary docs](https://docs.speechmatics.com/speech-to-text/features/custom-dictionary)

Custom Dictionary docs

- [Alphanumeric SKU accuracy article](https://www.speechmatics.com/company/articles-and-news/alphanumeric-speech-recognition-why-voice-assistants-mangle-skus-and-how-to-fix-it)

### Secure deployment — Match your compliance needs

Build for privacy-sensitive use cases with deployment options that match your compliance needs.

- [Features and deployments](https://speechmatics-website-git-preview-speechmatics.vercel.app/product/features-and-deployments)

Features and deployments

- [Deployment options](https://docs.speechmatics.com/deployments)

### Flexible deployment — Cloud, on-prem, or on-device

Deploy where your data needs to stay, without losing accuracy or the features you rely on.

- [Features and deployments](https://speechmatics-website-git-preview-speechmatics.vercel.app/product/features-and-deployments)

Features and deployments

## Build AI voice agents faster with a flexible API

Build AI voice agents without rebuilding the speech layer from scratch. Speechmatics gives teams a flexible API for accurate, low-latency transcription. Developers can focus on the agent experience, workflow logic, and what happens after the conversation.

**Or build on the voice agent frameworks you already use ->**

- docsUrl: https://docs.speechmatics.com/integrations-and-sdks
- docsLabel: Full documentation
- cards:
  - [Vapi integration](https://docs.speechmatics.com/integrations-and-sdks/vapi)
  - [Pipecat integration](https://docs.speechmatics.com/integrations-and-sdks/pipecat/)
  - [LiveKit integration](https://docs.speechmatics.com/integrations-and-sdks/livekit)
  - [Zapier integration](https://docs.speechmatics.com/integrations-and-sdks/zapier)
- snippets:
```python
# Install the speechmatics package using the command "pip install speechmatics-rt"

#!/usr/bin/env python3
"""Real-time transcription with microphone."""

import asyncio
import os
from dotenv import load_dotenv
from speechmatics.rt import (
    AsyncClient,
    ServerMessageType,
    TranscriptionConfig,
    TranscriptResult,
    OperatingPoint,
    AudioFormat,
    AudioEncoding,
    Microphone,
    AuthenticationError,
)

load_dotenv()

async def main():
    api_key = os.getenv("SPEECHMATICS_API_KEY")

    transcript_parts = []

    audio_format = AudioFormat(
        encoding=AudioEncoding.PCM_S16LE,
        chunk_size=4096,
        sample_rate=16000,
    )

    transcription_config = TranscriptionConfig(
        language="en",
        enable_partials=True,
        operating_point=OperatingPoint.ENHANCED,
    )

    mic = Microphone(
        sample_rate=audio_format.sample_rate,
        chunk_size=audio_format.chunk_size,
    )

    if not mic.start():
        print("PyAudio not installed. Install: pip install pyaudio")
        return

    try:
        async with AsyncClient(api_key=api_key) as client:
            @client.on(ServerMessageType.ADD_TRANSCRIPT)
            def handle_final_transcript(message):
                result = TranscriptResult.from_message(message)
                transcript = result.metadata.transcript
                if transcript:
                    print(f"[final]: {transcript}")
                    transcript_parts.append(transcript)

            @client.on(ServerMessageType.ADD_PARTIAL_TRANSCRIPT)
            def handle_partial_transcript(message):
                result = TranscriptResult.from_message(message)
                transcript = result.metadata.transcript
                if transcript:
                    print(f"[partial]: {transcript}")

            try:
                print("Connected! Start speaking (Ctrl+C to stop)...\n")

                await client.start_session(
                    transcription_config=transcription_config,
                    audio_format=audio_format,
                )

                while True:
                    frame = await mic.read(audio_format.chunk_size)
                    await client.send_audio(frame)

            except KeyboardInterrupt:
                pass
            finally:
                mic.stop()
                print(f"\n\nFull transcript: {' '.join(transcript_parts)}")

    except (AuthenticationError, ValueError) as e:
        print(f"\nAuthentication Error: {e}")

if __name__ == "__main__":
    asyncio.run(main())
```
```javascript
// npm install @speechmatics/real-time-client @speechmatics/auth

// Paste your API key into YOUR_API_KEY in the code.

import https from "node:https";
import { createSpeechmaticsJWT } from "@speechmatics/auth";
import { RealtimeClient } from "@speechmatics/real-time-client";

const apiKey = "YOUR_API_KEY";
const client = new RealtimeClient();
const streamURL = "https://media-ice.musicradio.com/LBCUKMP3";

async function transcribe() {
  // Print transcript as we receive it
  client.addEventListener("receiveMessage", ({ data }) => {
    if (data.message === "AddTranscript") {
      for (const result of data.results) {
        if (result.type === "word") {
          process.stdout.write(" ");
        }
        process.stdout.write(`${result.alternatives?.[0].content}`);
        if (result.is_eos) {
          process.stdout.write("\n");
        }
      }
    } else if (data.message === "EndOfTranscript") {
      process.stdout.write("\n");
      process.exit(0);
    } else if (data.message === "Error") {
      process.stdout.write(`\n${JSON.stringify(data)}\n`);
      process.exit(1);
    }
  });

  const jwt = await createSpeechmaticsJWT({
    type: "rt",
    apiKey,
    ttl: 60, // 1 minute
  });

  await client.start(jwt, {
    transcription_config: {
      language: "en",
      operating_point: "enhanced",
      max_delay: 1.0,
      transcript_filtering_config: {
        remove_disfluencies: true,
      },
    },
  });

  const stream = https.get(streamURL, (response) => {
    // Handle the response stream
    response.on("data", (chunk) => {
      client.sendAudio(chunk);
    });

    response.on("end", () => {
      console.log("Stream ended");
      client.stopRecognition({ noTimeout: true });
    });

    response.on("error", (error) => {
      console.error("Stream error:", error);
      client.stopRecognition();
    });
  });

  stream.on("error", (error) => {
    console.error("Request error:", error);
    client.stopRecognition();
  });
}

transcribe();
```
```csharp
// Install-Package Speechmatics

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Text;
using Speechmatics.Realtime.Client;
using Newtonsoft.Json;
using Speechmatics.Realtime.Client.Config;

namespace DemoApp
{
    public class Program
    {
        private const string SampleAudio = "2013-8-british-soccer-football-commentary-alex-warner.mp3";

        private static string ToJson(object obj)
        {
            return JsonConvert.SerializeObject(obj);
        }

        private static string RtUrl
        {
            get
            {
                var host = Environment.GetEnvironmentVariable("TEST_HOST") ?? "wss://api.rt.speechmatics.io";
                // Port 9000 for Speechmatics docker containers
                return host.StartsWith("wss://") ? host : $"wss://{host}:9000/";
            }
        }

        public static void Main(string[] args)
        {
            var start = DateTime.Now;
            Debug.WriteLine("Starting at {0}", start);
            var builder = new StringBuilder();
            var language = Environment.GetEnvironmentVariable("LANG") ?? "en";
            Console.WriteLine(language);

            using (var stream = File.Open(SampleAudio, FileMode.Open, FileAccess.Read))
            {
                try
                {

                    var config = new SmRtApiConfig(language)
                    {
                        AuthToken= Environment.GetEnvironmentVariable("AUTH_TOKEN"),
                        // GenerateTempToken = True <- set this to True for accounts from portal.speechmatics.com
                        OutputLocale = "en-GB",
                        AddTranscriptCallback = s => builder.Append(s),
                        AddTranscriptMessageCallback = s => Console.WriteLine(ToJson(s)),
                        AddTranslationMessageCallback = s => Console.WriteLine(ToJson(s)),
                        AddPartialTranscriptMessageCallback = s => Console.WriteLine(ToJson(s)),
                        ErrorMessageCallback = s => Console.WriteLine(ToJson(s)),
                        WarningMessageCallback = s => Console.WriteLine(ToJson(s)),
                        CustomDictionaryPlainWords = new[] {"speechmagic"},
                        CustomDictionarySoundsLikes = new Dictionary<string, IEnumerable<string>>(),
                        Insecure = true,
                        EnablePartials=true,
                        TranslationConfig = new TranslationConfig() {
                            TargetLanguages = new [] {"de"},
                            EnablePartials = true
                        }
                    };

                    // We can do this here, or earlier. It's not used until .Run() is called on the API object.
                    config.CustomDictionarySoundsLikes["gnocchi"] = new[] {"nokey", "noki"};

                    var api = new SmRtApi(RtUrl,
                        stream,
                        config
                    );
                    // Run() will block until the transcription is complete.
                    Console.WriteLine($"Connecting to {RtUrl}");
                    api.Run();
                    Console.WriteLine(builder.ToString());
                }
                catch (AggregateException e)
                {
                    Console.WriteLine(e);
                }
            }

            var finish = DateTime.Now;
            Debug.WriteLine("Starting at {0} -- {1}", finish, finish-start);
            Console.ReadLine();
        }
    }
}
```

## Should you build or buy AI voice agents?

Whether you build a voice agent from scratch or buy a hosted one, Speechmatics sits underneath as the speech-to-text layer. How you integrate it depends on how much of the pipeline you want to control.

| **Path** | **Best for** | **How it works** |
| --- | --- | --- |
| Hosted platforms | Fastest to launch | Use Speechmatics through providers like [Vapi](https://docs.speechmatics.com/integrations-and-sdks/), Telnyx, and LiveKit Inference. You trade some control for build speed. |
| Open-source frameworks | Standard workflows, community support | Pre-built integrations for [LiveKit Agents and Pipecat](https://docs.speechmatics.com/integrations-and-sdks/). Proven patterns, no build from scratch. |
| Custom pipeline | Maximum control | Integrate directly through our [SDKs](https://docs.speechmatics.com/voice-agents/voice-sdk) into your own STT, LLM, and TTS pipeline. For builders who need customization and low-latency transcription. |

Not sure which path fits? [Talk to our team](https://www.speechmatics.com/speak-to-sales).

## Resources for AI Voice Agents

### Voice Agents — Vapi and Speechmatics: Build agents that understand every voice

- [Vapi and Speechmatics build better agents](https://www.speechmatics.com/company/articles-and-news/vapi-and-speechmatics-build-agents-that-understand-every-voice)

Ship Voice AI agents that stay readable in real time, even in noisy, multi-speaker calls.

- Speechmatics — Editorial Team

### Voice Agents — Introducing real-time, speaker-aware Voice Agents with LiveKit + Speechmatics

- [Introducing real-time, speaker-aware Voice Agents with LiveKit + Speechmatics](https://www.speechmatics.com/company/articles-and-news/build-ai-agents-that-understand-who-said-what-livekit)

Speechmatics brings speaker diarization to LiveKit agents - enabling them to understand not just _what_ was said, but _who_ said it.

- Anthony Perera — Product Marketing Manager

### Voice Agents — Pipecat and Speechmatics: Building Voice Agents that know exactly ‘Who’ said ‘What’

- [Pipecat and Speechmatics: Building Voice Agents that know exactly 'Who' said 'What'](https://www.speechmatics.com/company/articles-and-news/pipecat-and-speechmatics-building-voice-agents-that-know-exactly-who-said-what)

Build smarter voice agents on Pipecat with Speechmatics speech-to-text, now with powerful speaker diarization for real-world, multi-speaker conversations.

- Speechmatics — Editorial Team

### AI Agent Builder — How to build a conversational agent in less time than Cupid’s arrow takes to strike

- [Eros blog](https://www.speechmatics.com/company/articles-and-news/how-to-build-a-conversational-agent-in-less-time-than-cupids-arrow-takes-to-strike)

What happens when you set out to build a fully functioning AI love guru with very little turnaround time?  Let's find out...

- Farah Gouda — Data Engineer

## Build AI voice agents: Frequently asked questions

### What do I need to build AI voice agents from scratch?

To build AI voice agents from scratch, you need speech recognition, a language model, conversation logic, [text-to-speech](https://www.speechmatics.com/text-to-speech), integrations, and secure deployment. Speechmatics provides the speech-to-text layer, helping your agent understand users clearly before it decides what to do next.

### Should I build or buy AI voice agents for my business?

The choice depends on how much control, speed, and customization you need. Many teams use a hybrid approach: buy specialist components like [speech recognition](https://www.speechmatics.com/speech-to-text), then build the agent experience, workflows, and integrations around their own users.

### What are the best tools to build AI voice agents in 2026?

The best tools to build AI voice agents in 2026 usually include [speech-to-text](https://www.speechmatics.com/speech-to-text), [text-to-speech](https://www.speechmatics.com/text-to-speech), an LLM, orchestration, analytics, and secure deployment. Speechmatics supports the speech layer with real-time, speaker-aware transcription across 56+ languages.

### How does speech-to-text accuracy affect AI voice agent performance?

Speech-to-text accuracy affects what the AI voice agent understands, remembers, and does next. Better transcription helps agents capture names, numbers, intent, and context, so users get more relevant responses with fewer repeat questions.

In independent testing by Pipecat (as of August 2026), Speechmatics returned a 1.07% pooled word error rate on real-time streaming audio, the lowest of the 12 services benchmarked, including Deepgram, AWS, and Azure. Read more in [Speed you can trust: the STT metrics that matter for voice agents](https://www.speechmatics.com/company/articles-and-news/speed-you-can-trust-the-stt-metrics-that-matter-for-voice-agents).

### Can I build voice agents that support multiple languages?

Yes. You can build voice agents that support multiple languages when your speech-to-text layer can handle global language coverage, accents, and dialects. Speechmatics supports [56+ languages](https://www.speechmatics.com/languages), helping teams serve users across international markets.

### How do I get started building AI voice agents with Speechmatics?

Start by getting a Speechmatics API key, reviewing the docs, and testing real-time speech-to-text with your own audio. From there, you can connect Speechmatics into your agent stack and build AI voice agents with faster, more accurate listening.

## **Voice agents that listen. Conversations that work.**

Start with $100 in free credit.

- [Get started in the API](https://portal.speechmatics.com/signup/)
