Changelog
View Source0.5.0
- Add Soniox as a fourth provider (
:soniox), using thetts-rt-v2model - Soniox: 70 built-in voices and 63 languages, every voice speaks every language
- Soniox:
:languageis required by the API; locale-style values ("tr-TR","tr_TR") are normalized to the bare ISO code, with a configurabledefault_languagefallback - Soniox:
speedis validated against the model's 0.7-1.3 range before the request is sent - Soniox: package formats are mapped onto Soniox
audio_formatvalues;ogg_vorbisis rejected at validation - Soniox: the schema's default
sample_rateof 22050 (which Soniox accepts for no format) is omitted rather than forwarded - Soniox: forward
reduce_silenceandbitrateviaprovider_opts, with validation —bitrateis rejected for lossless formats (Soniox returns a 400) and checked against the per-codec list - Soniox: document the expressive layer (audio tags, written emphasis, punctuation), which needs no code since it travels inside
:text - Soniox:
max_text_lengthdefaults to 1100 characters to stay under the API's 2-minute audio cap, and is configurable viaconfig :hipcall_tts, :soniox_max_text_lengthfor denser scripts HipcallTts.Schema::providernow accepts:soniox; documented that the acceptedspeedrange is provider-specific- Docs: add a "parameter support by provider" matrix — the schema accepts every parameter for every provider, but
languageandsample_rateonly reach Soniox,speedis ignored by Polly, andpitchis not implemented by any provider - Docs: add the credential-override parameters (
api_organization,access_key_id,secret_access_key,session_token,region) that were missing from the parameter table - Docs: add a minimal working request per provider, and guidance on top-level parameters vs
provider_opts - Docs: refresh the provider comparison table against the values the package actually reports
- Docs: add a "working with the returned audio" section — writing to a file with the right extension, format/MIME table, serving over HTTP, Base64, and the headerless raw-PCM caveat
- Docs: record two pre-existing gotchas found while verifying the above — Polly with
format: "pcm"fails unlesssample_rateis set to 8000/16000 (the schema default of 22050 is invalid for PCM on AWS), and ElevenLabs'"ulaw_8000"is reported bycapabilities/1but rejected by the schema's:formatenum, so it is only reachable viaprovider_opts
0.4.0
- Add voice-model compatibility: each voice now declares its
supported_modelsfield - Add
supported_modelsfield to thevoicetype inHipcallTts.Provider - Add
compatible_models/1callback toHipcallTts.Providerbehaviour - Add
HipcallTts.compatible_models/2to query compatible models for a given voice - All providers:
validate_params/1now rejects invalid voice-model combinations with a clear error message
0.3.0
Update voice
languagefield to support arrays for multilingual voices (String.t() | [String.t()])- ElevenLabs: Add per-voice multilingual language support (Alice, Brian, Callum, Belma, Doga)
- OpenAI: Add 7 new voices (Ash, Ballad, Coral, Sage, Verse, Marin, Cedar) for a total of 13
- OpenAI: Expand supported languages from 11 to 57 (full Whisper language set)
- Polly: Add all English (US), English (UK), and German voices from AWS docs
0.2.1
- Remove Meloxia voice from ElevenLabs provider (discontinued by ElevenLabs)
0.1.0
- Initial release.
- Providers:
- OpenAI (request/response mode)
- AWS Polly
- ElevenLabs
- Unified API:
- Introspection API:
- Features:
- Automatic text splitting based on provider limits
- Audio concatenation for multi-part results
- Configurable retries with exponential backoff
- Telemetry events for generate/http/retry/split