Real-Time Speech to Speech Translator API

Palabra.ai gives you an out-of-the-box two-way speech-to-speech translation API. Powered by our own models, it delivers human-level accuracy with <1s latency.

Trusted by top teams worldwide
DHL
Agora
Unicef
Paramount
Hundai
BCG
Docusign
Etoro
Fujitsu
Sapienza
Itu
Deloitte
DHL
Agora
Unicef
Paramount
Hundai
BCG
Docusign
Etoro
Fujitsu
Sapienza
Itu
Deloitte
Let your users speak without language barriers with our
speech translation API
With higher accuracy. Faster. Easier. At scale.
Access 60+ languages
Translate between more than 60 languages. Couldn’t find your language? Reach out, and we’ll talk about adding it.
Arabic
Bulgarian
Chinese
Czech
Danish
Dutch
English
Finnish
French
German
Greek
Hebrew
Hindi
Hungarian
Indonesian
Italian
Japanese
Korean
Polish
Portuguese
Portuguese (Brazilian)
Romanian
Russian
Slovak
Spanish
Swedish
Turkish
Ukrainian

Language auto-detection

Palabra automatically detects and switches between languages in real time, even if a single speaker code-switches mid-conversation.
Access 60+ languages

Tone and context conveyed

By controlling the entire translation pipeline, Palabra can carry over key data from the original speech into the translated output. This preserves tone and conversational context throughout the process, with emotion delivery coming soon.
Interpret tone and meaning

Voice cloning out of the box

With Palabra, you can automatically generate synthetic voices for each speaker. No manual setup needed.
Translate speech from noisy environments

Speaker diarization (coming soon)

Palabra uses diarization to identify each speaker and assign a unique or cloned voice, so every translated speaker sounds distinct.
Use human voices

Ultra-low latency

Palabra delivers speech-to-speech translation in real time with less than a second delay. Predictive models tailored to each language pair cut lag, while full-stack control from ASR to TTS keeps every stage fast and efficient.
One subscription for the  organizer

Custom glossaries

Palabra lets you define custom terminology to keep translations accurate and consistent. In real-time sessions, the speech-to-speech translation API applies your glossary rules so key terms are recognized and translated exactly as defined.
Interpret tone and meaning

Enterprise-grade security

We encrypt all conversations and do not store voice data. For customers with advanced data security needs, Palabra supports deployments in private clouds or on-premises.
Keep your data secure

Feedback on our real-time
translation services

Saptarshi Chakraborty
Co-Founder & Product Owner at EventLabs

“At EventLabs, we rely on Palabra for real-time translation during conferences and live events. Among all the solutions we’ve tested, Palabra stands out with the highest translation quality and the lowest latency by a significant margin. The platform’s speaker autodetection, differentiating between male and female voices and adapting translations in real time, has noticeably improved the listener experience. For us, Palabra is setting the benchmark for event translation technology.”

Anton Selikhov
CEO at Talo AI

“We built our product entirely on the Palabra API and it’s been an incredible foundation for what we do at Talo. The API’s natural language processing capabilities are reliable and accurate, which allowed us to bring real-time translations and captions to our users without starting from scratch.”

Designed for what you build

Impress your speakers and guests with Live Translation powered by Palabra’s very own language models, offering state-of-the-art accuracy and small latency

Tech stack support
Real time speech-to-speech translation streaming API for speech interpretation.
Scalable for any use case
Translate your online streams into multiple languages in real-time.
Accurate in noisy environments
Create and manage custom voices for your Voices Collection.
Flexible deployment
Ensure accuracy for your industry with Palabra's
custom glossaries.

What teams build with the Palabra.ai real-time voice translation API

Communication & Collaboration Platforms
to strengthen global reach with seamless multilingual interaction and higher user satisfaction. 
Global Call Centers & Customer Support Platforms
to scale multilingual support and win clients who serve global user bases. 
Entertainment & Streaming Platforms
to expand global audiences, drive engagement, and reduce translation or interpreter costs. 
Social Commerce Platforms
to increase sales conversion and global reach.

Integrate real-time speech translation with just a few lines of code

Real-time speech translation
Add Palabra's world-class translation to your app in minutes with our intuitive API and ready-made client libraries

from palabra_ai import (PalabraAI, Config,
 SourceLang, TargetLang, EN, ES, DeviceManager)

palabra = PalabraAI('<API_CLIENT_ID>', '<API_CLIENT_SECRET>')
dm = DeviceManager()
mic, speaker = dm.select_devices_interactive()
cfg = Config(SourceLang(EN, mic), [TargetLang(ES, speaker)])
palabra.run(cfg)

Python Palabra SDK

import { PalabraClient, getLocalAudioTrack } from '@palabra-ai/translator';

const client = new PalabraClient({
 auth: {
   clientId: 'YOUR_CLIENT_ID',
   clientSecret: 'YOUR_CLIENT_SECRET',
 },
 translateFrom: 'en', // Source language code
 translateTo: 'es',   // Target language code  handleOriginalTrack: getLocalAudioTrack, // Func returning a MediaStreamTrack
});

JavaScript Palabra API Client

import ai.palabra.*;
import ai.palabra.adapter.*;

public class TranslationExample {
   public static void main(String[] args) {
       // Initialize client with credentials
       String clientId = System.getenv("PALABRA_CLIENT_ID");
       String clientSecret = System.getenv("PALABRA_CLIENT_SECRET");

       PalabraAI client = new PalabraAI(clientId, clientSecret);

       // Configure translation
       Config config = Config.builder()
           .sourceLang(Language.EN_US)
           .targetLang(Language.ES_MX)
           .reader(new FileReader("input.wav"))
           .writer(new FileWriter("output.wav"))
           .build();

       // Run translation
       client.run(config);
   }
}

Java Palabra API Client

Palabra API is compatible with any programming language that supports WebSockets or WebRTC protocols. Use our API Direct Integration solutuon to create integration with your server-side or client-side applications.

Learn more

Try it in your code in 4 steps
with Palabra voice translation API

HTML

1
2
3
4
5
6
7
8

<div class="app">
  <div class="transcription" />
  <div class="controls">
     <button id="start">Start</button>
     <button id="start">Stop</button>
  </div>
  <div class="translations" />
</div>

JavaScript

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

import { PalabraClient, getMicAudioTrack }
  from "palabra";

const client = new PalabraClient({
//   clientId: "<API_CLIENT_ID>",
//   clientSecret: "<API_CLIENT_SECRET>",
//   originalTrack: getMicAudioTrack(),
//   translateFrom: "en",
//   translateTo: "fr"

});

//   document.getElementById('start')
//     .addEventListener('click', () => {
//        client.startTranslation();
//        client.playTranslationTrack();
//   });

//   document.getElementById('stop')
//     .addEventListener('click', () => {
//        client.stopTranslation();
//    });

HTML

1
2
3
4
5
6
7
8

<div class="app">
  <div class="transcription" />
  <div class="controls">
     <button id="start">Start</button>
     <button id="start">Stop</button>
  </div>
  <div class="translations" />
</div>

JavaScript

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

import { PalabraClient, getMicAudioTrack }
  from "palabra";

const client = new PalabraClient({
      clientId: "<API_CLIENT_ID>",
    
  clientSecret: "<API_CLIENT_SECRET>",
//   originalTrack: getMicAudioTrack(),
//   translateFrom: "en",
//   translateTo: "fr"

});

//   document.getElementById('start')
//     .addEventListener('click', () => {
//        client.startTranslation();
//        client.playTranslationTrack();
//   });

//   document.getElementById('stop')
//     .addEventListener('click', () => {
//        client.stopTranslation();
//    });

HTML

1
2
3
4
5
6
7
8

<div class="app">
  <div class="transcription" />
  <div class="controls">
     <button id="start">Start</button>
     <button id="start">Stop</button>
  </div>
  <div class="translations" />
</div>

JavaScript

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

import { PalabraClient, getMicAudioTrack }
  from "palabra";

const client = new PalabraClient({
      clientId: "<API_CLIENT_ID>",
    
  clientSecret: "<API_CLIENT_SECRET>",
      
originalTrack: getMicAudioTrack(),
      
translateFrom: "en",
      
translateTo: "fr"
});

//   document.getElementById('start')
//     .addEventListener('click', () => {
//        client.startTranslation();
//        client.playTranslationTrack();
//   });

//   document.getElementById('stop')
//     .addEventListener('click', () => {
//        client.stopTranslation();
//    });

HTML

1
2
3
4
5
6
7
8

<div class="app">
  <div class="transcription" />
  <div class="controls">
     <button id="start">Start</button>
     <button id="start">Stop</button>
  </div>
  <div class="translations" />
</div>

JavaScript

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

import { PalabraClient, getMicAudioTrack }
  from "palabra";

const client = new PalabraClient({
      clientId: "<API_CLIENT_ID>",
    
  clientSecret: "<API_CLIENT_SECRET>",
      
originalTrack: getMicAudioTrack(),
      
translateFrom: "en",
      
translateTo: "fr"
});

document.getElementById('start')
      
.addEventListener('click', () => {
      
 client.startTranslation();
     
 client.playTranslationTrack();
    
});

‍document.getElementById('stop')
   
.addEventListener('click', () => {
       
client.stopTranslation();
   
 });

1
Import a read-made Palabra client.

HTML

1
2
3
4
5
6
7
8

<div class="app">
  <div class="transcription" />
  <div class="controls">
     <button id="start">Start</button>
     <button id="start">Stop</button>
  </div>
  <div class="translations" />
</div>

JavaScript

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

import { PalabraClient, getMicAudioTrack }
  from "palabra";

const client = new PalabraClient({
//   clientId: "<API_CLIENT_ID>",
//   clientSecret: "<API_CLIENT_SECRET>",
//   originalTrack: getMicAudioTrack(),
//   translateFrom: "en",
//   translateTo: "fr"

});

//   document.getElementById('start')
//     .addEventListener('click', () => {
//        client.startTranslation();
//        client.playTranslationTrack();
//   });

//   document.getElementById('stop')
//     .addEventListener('click', () => {
//        client.stopTranslation();
//    });

2
Drop your API keys.

HTML

1
2
3
4
5
6
7
8

<div class="app">
  <div class="transcription" />
  <div class="controls">
     <button id="start">Start</button>
     <button id="start">Stop</button>
  </div>
  <div class="translations" />
</div>

JavaScript

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

import { PalabraClient, getMicAudioTrack }
  from "palabra";

const client = new PalabraClient({
      clientId: "<API_CLIENT_ID>",
    
  clientSecret: "<API_CLIENT_SECRET>",
//   originalTrack: getMicAudioTrack(),
//   translateFrom: "en",
//   translateTo: "fr"

});

//   document.getElementById('start')
//     .addEventListener('click', () => {
//        client.startTranslation();
//        client.playTranslationTrack();
//   });

//   document.getElementById('stop')
//     .addEventListener('click', () => {
//        client.stopTranslation();
//    });

3
Pick your source and target languages.

HTML

1
2
3
4
5
6
7
8

<div class="app">
  <div class="transcription" />
  <div class="controls">
     <button id="start">Start</button>
     <button id="start">Stop</button>
  </div>
  <div class="translations" />
</div>

JavaScript

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

import { PalabraClient, getMicAudioTrack }
  from "palabra";

const client = new PalabraClient({
      clientId: "<API_CLIENT_ID>",
    
  clientSecret: "<API_CLIENT_SECRET>",
      
originalTrack: getMicAudioTrack(),
      
translateFrom: "en",
      
translateTo: "fr"
});

//   document.getElementById('start')
//     .addEventListener('click', () => {
//        client.startTranslation();
//        client.playTranslationTrack();
//   });

//   document.getElementById('stop')
//     .addEventListener('click', () => {
//        client.stopTranslation();
//    });

4
Wire up your UI (e.g., button click handlers).

HTML

1
2
3
4
5
6
7
8

<div class="app">
  <div class="transcription" />
  <div class="controls">
     <button id="start">Start</button>
     <button id="start">Stop</button>
  </div>
  <div class="translations" />
</div>

JavaScript

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

import { PalabraClient, getMicAudioTrack }
  from "palabra";

const client = new PalabraClient({
      clientId: "<API_CLIENT_ID>",
    
  clientSecret: "<API_CLIENT_SECRET>",
      
originalTrack: getMicAudioTrack(),
      
translateFrom: "en",
      
translateTo: "fr"
});

document.getElementById('start')
      
.addEventListener('click', () => {
      
 client.startTranslation();
     
 client.playTranslationTrack();
    
});

‍document.getElementById('stop')
   
.addEventListener('click', () => {
       
client.stopTranslation();
   
 });

Speak and hear translations in real time.
If you have any questions, please contact us
at [email protected] or book a demo call.

Choose your plan

Choose your plan

Yearly (2 months for free)

Pro
Ideal for individual creators and small teams entering the world of live speech translation
$150
/month
150 CREDITS /month
Voice-calls and Webinars
30 / HOUR
events
150 / HOUR
Broadcaster
80 / HOUR
API Speech-to-speech
30 / HOUR
API Translated captions
10 / HOUR
Get started
Scale
Designed for growing businesses and ambitious professionals who need increased capacity
$900
/month
900 CREDITS /month
Voice-calls and Webinars
25 / HOUR
events
130 / HOUR
Broadcaster
70 / HOUR
API Speech-to-speech
25 / HOUR
API Translated captions
7 / HOUR
Get started
Business
Tailored for established enterprises and large-scale operations requiring maximum capacity
$3,500
/month
3500 CREDITS /month
Voice-calls and Webinars
20 / HOUR
events
100 / HOUR
Broadcaster
60 / HOUR
API Speech-to-speech
20 / HOUR
API Translated captions
5 / HOUR
Dedicated account manager
Get started
2 months free
Pro
Ideal for individual creators and small teams entering the world of live speech translation
$150
/month
$125
/month
150 CREDITS /month
Voice-calls and Webinars
30 / HOUR
events
150 / HOUR
Broadcaster
80 / HOUR
API Speech-to-speech
30 / HOUR
API Translated captions
10 / HOUR
Get started
2 months free
Scale
Designed for growing businesses and ambitious professionals who need increased capacity
$900
/month
$750
/month
900 CREDITS /month
Voice-calls and Webinars
25 / HOUR
events
130 / HOUR
Broadcaster
70 / HOUR
API Speech-to-speech
25 / HOUR
API Translated captions
7 / HOUR
Get started
2 months free
Business
Tailored for established enterprises and large-scale operations requiring maximum capacity
$3,500
/month
$2,917
/month
3500 CREDITS /month
Voice-calls and Webinars
20 / HOUR
events
100 / HOUR
Broadcaster
60 / HOUR
API Speech-to-speech
20 / HOUR
API Translated captions
5 / HOUR
Dedicated account manager
Get started
Explore Enterprise for additional capabilities
Contact us

Answers you might need

What industries can benefit most from a real-time voice translation API?

Industries that benefit most include customer service, enterprise software and collaboration, media and entertainment, and consumer apps.

How do I integrate the API into my existing application?

You can integrate Palabra API into your application by using our SDKs or connecting directly via WebRTC (for browsers) or WebSockets (for servers).

Which programming languages and SDKs are supported?

Palabra provides SDKs and client libraries for Python and JavaScript. For other languages, Palabra integrates through WebRTC (frontend) and WebSockets (backend).

Is HTML & XML handling supported for translation?

As a real-time speech-to-speech translation solution, Palabra supports audio input only.

Can I customize translations with a glossary?

Yes. Glossaries let you define how Palabra translates specific terms. Once enabled, your glossary applies across all Palabra applications and sessions.

How is data secured during and after translation?

All conversations are encrypted in transit and processed entirely in memory. Palabra does not store voice data on its servers ー once audio is translated, it is deleted.

Does the API store or log voice data?

No. By default, Palabra does not store or log user data, nor is user data used to train models.

Can the API be deployed in a private cloud or on-premises environment?

Yes. The Palabra API can run in a private cloud or on-premises, fully under your own security and compliance controls.

What audio does Palabra.ai support?

Palabra.ai WebSocket integration supports these input audio formats: Opus, PCM_S16LE, and WAV. For output, it supports PCM_S16LE and ZLIB_PCM_S16LE.

What is the maximum audio length supported per request?

Palabra processes real-time audio streams, which by default can run indefinitely.

How does the API maintain accuracy in noisy environments?

Palabra includes integrated noise suppression, so speech remains accurate even in noisy conditions. No additional preprocessing is required.