Real-time speech translation, tone analysis, voice cloning, and intent recognition. One API. Three lines of code. 97 languages.
import voicechat client = voicechat.Client("vc_live_...") # Browse voices and pick one voices = client.voices.list(category="iconic") freeman = voices[0] # → { voice_id: "vc_freeman_01", ... } # Translate using that voice result = client.translate( audio="meeting_clip.wav", source="en", target="ja", voice_id=freeman.id, # ← speak as Freeman detect_tone=True, ) # result.audio → translated WAV in Freeman's voice # result.transcript → "Q2にローンチを延期すべきです" # result.tone → { "label": "confident", "score": 0.94 }
{
"audio_url": "https://api.voice.chat/v1/audio/tx_8f3k...",
"transcript": "Q2にローンチを延期すべきです",
"voice": { "id": "vc_freeman_01", "name": "Morgan Freeman" },
"tone": { "label": "confident", "score": 0.94 },
"language_detected": "en",
"duration_ms": 3420
}
Everything you need to add real-time voice intelligence to your app. Browse voices, translate speech, analyze tone, and manage rooms. REST for one-off requests, WebSocket for streaming.
{
"audio": "base64_or_url",
"source_lang": "en",
"target_lang": "ja",
"voice_id": "vc_freeman_01", // or "self" for own voice
"detect_tone": true,
"detect_intent": true
}ws://api.voice.chat/v1/stream ?source=en &target=pt &mode=simultaneous &voice_id=vc_freeman_01 → Send: binary audio frames (PCM 16kHz) ← Recv: translated audio + JSON metadata
// Response
{
"tone": {
"primary": "confident",
"secondary": "warm",
"scores": { ... }
},
"intent": ["commitment", "action_item"],
"sentiment": 0.82
}GET /v1/voices?category=iconic&limit=5
// Response
{
"voices": [
{
"voice_id": "vc_freeman_01",
"name": "Morgan Freeman",
"category": "iconic",
"tags": ["narrator", "calm", "deep"],
"languages": ["en", "es", "fr", "de", "ja"],
"preview_url": "https://cdn.voice.chat/previews/freeman.mp3",
"popularity_rank": 1
},
{
"voice_id": "vc_attenborough_01",
"name": "David Attenborough",
...
}
],
"total": 142,
"categories": ["iconic", "political", "culture",
"fictional", "custom"]
}POST /v1/voices/vc_freeman_01/preview
{
"text": "Welcome to the meeting.",
"language": "en"
}
// Response
{
"audio_url": "https://cdn.voice.chat/prev/tx_p2k...",
"duration_ms": 1840,
"voice_id": "vc_freeman_01",
"voice_name": "Morgan Freeman"
}{
"audio": "base64_reference_clip",
"name": "Sarah - Sales Lead"
}
// Response
{
"voice_id": "vc_custom_9x2k...",
"quality_score": 0.96,
"ready": true
}POST /v1/rooms
{
"name": "daily-standup",
"max_participants": 12,
"auto_translate": true,
"recording": false
}
// Returns room_id + join tokensNot a wrapper around open source models. A purpose-built inference pipeline optimized for real-time voice.
Simultaneous translation starts before the speaker finishes. WebSocket-native architecture with chunked audio processing for sub-300ms latency.
Audio data is processed in memory and never stored. No logs, no recordings, no training on your data. SOC 2 Type II and HIPAA ready.
GPU nodes in 6 regions. Audio is processed at the nearest edge, not routed to a central data center. <40ms network hop for most users.
Clone any voice from 10 seconds of audio. Translated speech preserves the original speaker's pitch, cadence, and rhythm across every language.
Every utterance is tagged: question, commitment, concern, action item, agreement. Build smart meeting summaries and follow-up workflows automatically.
Detect confidence, hesitation, warmth, urgency, and frustration from vocal prosody. Feed emotional intelligence into your UX, CRM, or agent systems.
Official SDKs for every major platform. Install, authenticate, call. Full TypeScript definitions included.
import voicechat client = voicechat.Client("vc_live_sk_...") # Browse the voice library voices = client.voices.list(category="iconic", limit=10) for v in voices: print(v.name, v.voice_id) # "Morgan Freeman", "vc_freeman_01" # Preview a voice before using it preview = client.voices.preview("vc_freeman_01", text="Hello team") preview.play() # hear it locally # Translate with that voice result = client.translate( audio=open("input.wav", "rb"), target="es", voice_id="vc_freeman_01", # or "self" for your own voice ) result.save_audio("translated.wav") print(result.transcript) # "Deberíamos posponer el lanzamiento..." print(result.tone) # {"label": "confident", "score": 0.94} # Stream in real time with a voice async with client.stream(target="ja", voice_id="vc_freeman_01") as ws: async for chunk in mic_input(): translated = await ws.send(chunk) speaker.play(translated.audio)
import { VoiceChat } from '@voicechat/sdk'; const client = new VoiceChat('vc_live_sk_...'); // Browse and pick a voice const voices = await client.voices.list({ category: 'iconic' }); const freeman = voices.find(v => v.name === 'Morgan Freeman'); // Preview it const preview = await client.voices.preview(freeman.voiceId, { text: 'Welcome to the meeting.' }); console.log(preview.audioUrl); // play this for the user // Translate with that voice const result = await client.translate({ audio: fs.readFileSync('input.wav'), target: 'es', voiceId: freeman.voiceId, detectTone: true, }); // Stream with a voice const stream = client.createStream({ target: 'pt', voiceId: 'vc_freeman_01' }); stream.on('translated', (chunk) => { speaker.write(chunk.audio); }); micStream.pipe(stream);
import "github.com/voicechat/go-sdk" client := voicechat.NewClient("vc_live_sk_...") // List voices voices, _ := client.Voices.List(ctx, &voicechat.VoiceFilter{ Category: "iconic", }) freeman := voices[0] // { VoiceID: "vc_freeman_01", Name: "Morgan Freeman" } // Preview preview, _ := client.Voices.Preview(ctx, freeman.VoiceID, "Hello team") fmt.Println(preview.AudioURL) // Translate with that voice result, _ := client.Translate(ctx, &voicechat.TranslateRequest{ Audio: audioBytes, TargetLang: "de", VoiceID: freeman.VoiceID, DetectTone: true, }) fmt.Println(result.Transcript) // "Wir sollten den Start verschieben..." // Stream with a voice stream, _ := client.Stream(ctx, &voicechat.StreamOpts{ Target: "ja", VoiceID: "vc_freeman_01", Mode: voicechat.Simultaneous, }) for chunk := range micInput { translated, _ := stream.Send(chunk) speaker.Play(translated.Audio) }
# List available voices curl https://api.voice.chat/v1/voices?category=iconic \ -H "Authorization: Bearer vc_live_sk_..." # Preview a voice curl -X POST https://api.voice.chat/v1/voices/vc_freeman_01/preview \ -H "Authorization: Bearer vc_live_sk_..." \ -H "Content-Type: application/json" \ -d '{"text": "Hello team", "language": "en"}' # Translate with a voice curl -X POST https://api.voice.chat/v1/translate \ -H "Authorization: Bearer vc_live_sk_..." \ -F "audio=@input.wav" \ -F "target_lang=es" \ -F "voice_id=vc_freeman_01" \ -F "detect_tone=true" # Clone a custom voice (returns a voice_id you can reuse) curl -X POST https://api.voice.chat/v1/voice/clone \ -H "Authorization: Bearer vc_live_sk_..." \ -F "audio=@reference.wav" \ -F "name=My Custom Voice"
No minimums. No contracts. Free tier to get started. Scale when you're ready.
Test the translate endpoint right here. No API key required for the playground.
// Response will appear here
// Click "Send Request" to test
{
"status": "waiting",
"hint": "Record or upload audio first"
}Get your API key in 30 seconds. First 100 minutes free every month. No credit card required.