Overview
Kotoba TTS delivers production-grade, low-latency Japanese speech synthesis for conversational AI, content localization, and accessibility products.
Key capabilities:
- Real-time bidirectional streaming over SageMaker HTTP/2, with sub-second time-to-first-audio.
- Production-tuned Japanese voice for natural-sounding conversational speech. 24 kHz mono PCM output in pcm_f32 / pcm16 / float32 codecs.
- Cancel mid-stream with response.cancel; reuse a single session for many response.create turns.
Typical use cases: conversational agents, call-center voicebots, audiobook narration, real-time translation output, and voice-driven UX.
Highlights
- Real-time streaming synthesis with sub-second time-to-first-audio by bidirectional streaming.
Details
Introducing multi-product solutions
You can now purchase comprehensive solutions tailored to use cases and industries.
Features and programs
Financing for AWS Marketplace purchases
Pricing
Free trial
Dimension | Description | Cost/host/hour |
|---|---|---|
ml.c4.2xlarge Inference (Batch) Recommended | Model inference on the ml.c4.2xlarge instance type, batch mode | $0.00 |
ml.g6e.8xlarge Inference (Real-Time) Recommended | Model inference on the ml.g6e.8xlarge instance type, real-time mode | $96.00 |
ml.g6e.xlarge Inference (Real-Time) | Model inference on the ml.g6e.xlarge instance type, real-time mode | $96.00 |
ml.g6e.2xlarge Inference (Real-Time) | Model inference on the ml.g6e.2xlarge instance type, real-time mode | $96.00 |
ml.g6e.4xlarge Inference (Real-Time) | Model inference on the ml.g6e.4xlarge instance type, real-time mode | $96.00 |
ml.g6e.16xlarge Inference (Real-Time) | Model inference on the ml.g6e.16xlarge instance type, real-time mode | $96.00 |
ml.g6.xlarge Inference (Real-Time) | Model inference on the ml.g6.xlarge instance type, real-time mode | $48.00 |
ml.g6.2xlarge Inference (Real-Time) | Model inference on the ml.g6.2xlarge instance type, real-time mode | $48.00 |
ml.g6.4xlarge Inference (Real-Time) | Model inference on the ml.g6.4xlarge instance type, real-time mode | $48.00 |
ml.g6.8xlarge Inference (Real-Time) | Model inference on the ml.g6.8xlarge instance type, real-time mode | $48.00 |
Vendor refund policy
n/a
How can we make this page better?
Legal
Vendor terms and conditions
Content disclaimer
Delivery details
Amazon SageMaker model
An Amazon SageMaker model package is a pre-trained machine learning model ready to use without additional training. Use the model package to create a model on Amazon SageMaker for real-time inference or batch processing. Amazon SageMaker is a fully managed platform for building, training, and deploying machine learning models at scale.
Version release notes
v1.9 Update
More voices, pitch and volume control, more natural speech, and lower latency
- Fully backward compatible with v1.8: existing v1.8 clients work unchanged after switching to the v1.9 model package, with the same events, fields, voice ids, and audio formats. Two limits differ: max_length on response.create is accepted but ignored, and with_timestamps accepts text of up to 400 characters.
- More voices: male-01 and female-01 to female-04. male-01 is the same voice as default and man-1, and female-01 the same as woman-1. man-1 and woman-1 will be removed in a future version; please switch to male-01 and female-01.
- Improved readings of numbers, addresses, and similar text, and more natural speech overall.
- Improved audio quality.
- Lower latency and faster synthesis. Measured on ml.g6.4xlarge with 32
concurrent sessions, against v1.8 on the same instance:
- Time to first audio (p90): 103 ms (v1.8: 187 ms); with with_timestamps: 105 ms (v1.8: 192 ms).
- Real-time factor (p90, lower is faster): 0.47 (v1.8: 0.55); with with_timestamps: 0.48 (v1.8: 0.69).
- Pitch and volume control: besides speed, voice_settings now takes pitch (-4 to +4 semitones, default 0) and volume (0.0 to 2.0, default 1.0). voice_settings can also be set on open as the session default.
All v1.4 - v1.8 features are retained.
Additional details
Inputs
- Summary
Kotoba TTS v1.9 accepts text input via SageMaker bidirectional streaming (HTTP/2) at the path /invocations-bidirectional-stream. Standard POST /invocations and batch transform jobs are NOT supported.
A synthesis session is a sequence of JSON events sent over the bidirectional stream:
-
open (required, first event)
- language (string, optional, default ja): ISO-639-1 language code.
- speaker_id (string, optional, default default): preset voice. Male: male-01 (default and man-1 are the same voice). Female: female-01 (woman-1 is the same voice), female-02, female-03, female-04. man-1 and woman-1 are deprecated and will be removed in a future version.
- voice_settings (object, optional): the session's default voice controls (speed, pitch, volume; see response.create). Each response.create may override them field by field.
- format (string, optional, default float32): output audio format. One of float32 (little-endian float32), pcm16 (little-endian signed 16-bit), mulaw (8-bit G.711 mu-law), or opus (Ogg/Opus). The former spellings pcm_f32 and pcm_16 are still accepted.
- sample_rate (integer, optional, default 24000): output sample rate in Hz. PCM formats (float32, pcm16) accept 8000, 16000, or 24000. mulaw is always emitted at 8000 and opus at 24000, so this field is ignored for them. The negotiated format and sample_rate are echoed on session.created.
- spk_ref_audio_tokens (optional): speaker reference tokens for the requested voice.
-
response.create (one synthesis turn; repeatable, and may be sent without waiting for the previous response.done — see Pipelining below)
- text (string, required): the full text to synthesize. The model is one-shot, so the text is not streamed in chunks.
- response_id (string, optional): client-supplied correlation id; echoed on response.queued / response.created / audio.chunk / response.done. Must be unique among outstanding (active or queued) responses, and reusable once its response.done has been delivered. When omitted the server assigns a UUID.
- with_timestamps (boolean, optional, default false): when true, audio.chunk events for this response carry alignments records mapping spans of the request text to times in the output audio (see Model output details).
- voice_settings (object, optional): voice controls for this
response. Fields left out keep the session default from open.
- speed (number, optional, default 1.0): speaking rate from 0.7 to 1.5 without changing the pitch; 1.5 is 1.5x faster.
- pitch (number, optional, default 0): pitch shift in semitones from -4 to +4 without changing the speaking rate.
- volume (number, optional, default 1.0): loudness multiplier from 0.0 to 2.0; 0.0 is silent. Above 1.0 the audio is limited at full scale, so the loudest passages may clip slightly.
- max_length (integer, optional): accepted for compatibility with earlier versions and ignored; the output length follows the text.
-
response.cancel (optional)
- response_id (string, optional): cancel the response with this id, whether it is the active response or one still queued. Without it, the active response is cancelled.
Pipelining: while a response is active, additional response.create events are accepted with a response.queued event (carrying the same response.id) and synthesized one at a time in FIFO order. The pending queue holds at most 15 responses; exceeding it yields a non-fatal error (too many queued responses).
Each JSON event must be sent as a UTF-8 text frame. With the SageMaker HTTP/2 SDK, construct RequestPayloadPart with data_type="UTF8" so the payload is forwarded as text.
-
- Limitations for input type
- - `open` must arrive within 10 s of connection (`WS_OPEN_TIMEOUT`). Sessions idle for 60 s are closed (`WS_IDLE_TIMEOUT`). - `response.create.text` must be a non-empty string. - `voice_settings`: `speed` 0.7 to 1.5, `pitch` -4 to 4, `volume` 0.0 to 2.0. Other values return a non-fatal `error` on `response.create` and a fatal one on `open`. - With `with_timestamps: true`, `text` is limited to 400 characters; longer text returns a non-fatal `error`. Without timestamps, text beyond the model's input limit is cut. - One response is synthesized at a time; up to 15 more can queue, beyond which a non-fatal `error` is returned. - Only bidirectional streaming over HTTP/2 is supported, not `POST /invocations` or batch transform. Python clients require Python 3.12+ and `aws-sdk-python[sagemaker-runtime-http2]`.
- Input MIME type
- application/json
Support
Vendor support
For support, contact: kotoba_product+marketplace@kotoba.tech
AWS infrastructure support
AWS Support is a one-on-one, fast-response support channel that is staffed 24x7x365 with experienced and technical support engineers. The service helps customers of all sizes and technical abilities to successfully utilize the products and features provided by Amazon Web Services.