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.5 Update
Pipelining and per-response cancellation
This release lets a session keep multiple synthesis requests in flight and adds id-targeted cancellation and correlated errors:
- Pipelining: clients may send the next response.create without waiting for the previous response.done. While a response is active, additional requests are accepted with a new response.queued event and drained in FIFO order. response.done(N) is always delivered before response.created(N+1). The pending queue is bounded by WS_MAX_PENDING_RESPONSES (default 15); exceeding it returns a non-fatal error.
- Cancellation by id: response.cancel now accepts an optional response_id and can cancel either the active response or one that is still queued. Cancelling a queued response drops it without ever emitting response.created (and without usage).
- Correlated, classified errors: request-scoped error events now carry the offending response_id and a fatal flag (true => the connection is closing; false => the session continues).
- Unique ids: each outstanding response_id must be unique; reusing one that is active or queued is rejected with a non-fatal error.
The selectable output format / sample rate introduced in v1.4 (pcm_f32, pcm_16, mulaw, opus) is retained.
Additional details
Inputs
- Summary
Kotoba TTS v1.5 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 identifier. default is always available; additional preset keys (e.g. man-1, woman-1) may also be shipped with the bundle.
- format (string, optional, default pcm_f32): output audio format. One of pcm_f32 (little-endian float32), pcm_16 (little-endian signed 16-bit), mulaw (8-bit G.711 mu-law), or opus (Ogg/Opus).
- sample_rate (integer, optional, default 24000): output sample rate in Hz. PCM formats (pcm_f32, pcm_16) 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.
- max_length (integer, optional): cap on the generated length for this response.
-
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 is bounded by WS_MAX_PENDING_RESPONSES (default 15); 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
- - The `open` event must be received within 10 seconds of the WebSocket connection (`WS_OPEN_TIMEOUT`). - Connections idle for more than 60 seconds without a client message are closed (`WS_IDLE_TIMEOUT`). The idle timer is reset by client messages and by major server events (response.created / queued / done / error), so draining a queue keeps the session alive. - `response.create.text` must be a non-empty UTF-8 string. - A session synthesizes one response at a time; additional requests are queued (up to `WS_MAX_PENDING_RESPONSES`, default 15) rather than rejected. Beyond that limit, `response.create` returns a non-fatal `error`. - Standard `POST /invocations` and batch transform jobs are not supported; only bidirectional streaming over HTTP/2 is available. - Python clients must use Python 3.12+ together with `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.