DeepSeek Opens TTS and ASR APIs at Half Price

Introduction
DeepSeek has opened the voice behind its chat app to developers. Its Full-Suite App API release, posted on November 13 at 22:24 Malaysia time (14:24 UTC), adds two standalone audio endpoints to the DeepSeek API: a Text to Speech (TTS) API and a Speech to Text (ASR) API. They ship alongside web search, file parsing, URL reading, OCR and safety checks.
Both are closed, cloud-only services. There are no weights, and DeepSeek doesn't name the speech models behind them. You can call them today with a normal DeepSeek API key, and both are listed at a limited-time 50% discount. TTS has two voices, 10 languages (including Malay), a full-text HTTP mode and a WebSocket streaming mode built for reading out LLM answers while they're still being generated.
What Shipped
Text to Speech (guide)
- Endpoint:
POST https://api.deepseek.com/v1/tools/ttsfor full text. Audio streams back in the response body while it's synthesized. - Streaming mode:
wss://api.deepseek.com/v1/tools/tts. You send text chunks as{"event": "text", ...}messages, then{"event": "finish_text"}, and audio comes back as binary frames. - Voices:
stella(female, the default) andtide(male). That's the whole list for now. - Languages: Mandarin, Cantonese, English, Japanese, Korean, Malay, Arabic, Indonesian, Thai and Vietnamese. There's no language parameter: the API detects the language from the text.
- Formats:
wav(the default over HTTP) or raw 16-bit mono PCM at 24 kHz. Over WebSocket you can also get headerless Opus packets. - Limits: up to 10,000 billed characters (and 64 KiB) per request or session, and at most 30 minutes of audio per request. A WebSocket session closes after 60 seconds without new text. Each account can have 50 requests in progress at once.
- Markdown filter:
filter_markdown(on by default) strips Markdown so asterisks and headings aren't read aloud. That makes it easy to pipe chatbot output straight in.
Speech to Text (guide)
- Endpoint:
POST https://api.deepseek.com/v1/tools/asr. You upload the file as multipart form data and get back the full transcript plusduration_ms. - Languages: 21, detected automatically: Chinese, Cantonese, English, Japanese, Korean, German, French, Spanish, Portuguese, Italian, Russian, Arabic, Hindi, Indonesian, Vietnamese, Thai, Turkish, Malay, Filipino, Polish and Hungarian.
- Input: 16-bit PCM WAV (8–48 kHz) or Ogg Opus, mono or stereo. For stereo files, only the left channel is transcribed.
- Limits: at most 120 seconds and 8 MiB per file. There's no streaming recognition, so this is built for voice input, not hour-long transcription.
Pricing (pricing page)
- TTS: $0.45 per 10,000 characters, discounted to $0.225 for now. A Chinese character counts as 2 characters. Anything else, including letters, digits and spaces, counts as 1.
- ASR: $0.116 per hour of audio, discounted to $0.058. It's billed per second, rounded up.
- Example: at the discounted rate, a million characters of English narration costs about $22.50 ($45 at list price).
Where to Run It Today
- Get a key on the DeepSeek Platform. The same key you use for
deepseek-flashworks for the voice endpoints. - Try the demo: DeepSeek's open-source chat-demo (MIT) and its hosted version show how to put these APIs together into a chat app.
- Quick TTS test:
curl https://api.deepseek.com/v1/tools/tts \
-H "Authorization: Bearer $DEEPSEEK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "Selamat malam! The late-night mix is ready.", "voice_id": "tide", "format": "wav"}' \
--output tide.wav- Quick ASR test:
curl https://api.deepseek.com/v1/tools/asr \
-H "Authorization: Bearer $DEEPSEEK_API_KEY" \
-F file="@voice-note.wav"- Streaming pattern: open the WebSocket with
voice_id=stella&format=pcmand forward each token chunk from yourdeepseek-flashstream as atextevent. Write the binary frames to your audio output as they arrive.
Caveats
- Closed and unnamed. DeepSeek hasn't released model names, sizes, papers or weights for the speech stack. It's an API product, not an open-model drop.
- Two voices, no cloning. There's no voice design, no cloning, no emotion or style controls, and the docs say speed control isn't supported. For character work or branded voices, a dedicated TTS vendor is still the better choice.
- No resume. If synthesis fails mid-stream, the response is simply cut off. The docs tell you to treat a short response as a failure and retry the whole request.
- Short ASR only. The 120-second, non-streaming cap rules out podcasts, meetings and live captions unless you chunk the audio yourself.
- Content review. Text that fails DeepSeek's content check returns
400(Content Exists Risk). Public-facing apps also have to turn on safety checks for the chat tools, and you're responsible for labelling AI-generated content. - Discount has no end date. The 50% price is marked "limited-time" without a date, so budget at the list price.
Conclusion
DeepSeek has turned its app's voice into two plain endpoints. TTS gives you two voices, 10 languages, 24 kHz output and WebSocket streaming that can keep up with a deepseek-flash stream. ASR handles 21 languages for clips up to two minutes. Both are cheap, especially during the 50% promo. They're closed and fairly bare: no cloning, no speed control, no long-form ASR. But if you already build on the DeepSeek API and want a spoken answer or a voice-note input without adding a second vendor, it's now one API key and a few lines of code.
—Anabel ♡
