Skip to content

feat: Add ModelsLab TTS engine support#66

Merged
willwade merged 3 commits into
willwade:mainfrom
adhikjoshi:feature/add-modelslab-engine
Feb 20, 2026
Merged

feat: Add ModelsLab TTS engine support#66
willwade merged 3 commits into
willwade:mainfrom
adhikjoshi:feature/add-modelslab-engine

Conversation

@adhikjoshi
Copy link
Copy Markdown

Summary

This PR adds ModelsLab as a new TTS engine to tts-wrapper.

Changes

  • Added class in
  • Added SSML handler (strips tags - ModelsLab doesn't support SSML natively)
  • Updated to export ModelsLabClient
  • Updated with modelslab optional dependency
  • Added test integration in

Features

  • Multiple voice options (madison, tara, leah, jess, mia, zoe, leo, dan, zac)
  • Language support (american english, etc.)
  • Speed control
  • Async polling for longer audio generation
  • Full implementation of AbstractTTS interface

Example Usage

Motivation

ModelsLab provides affordable TTS APIs with multiple voice options. Adding support for it gives users another cost-effective option alongside existing engines like ElevenLabs, OpenAI, and PlayHT.


Get your API key at: https://modelslab.com/dashboard/api-keys

- Added ModelsLabClient class in tts_wrapper/engines/modelslab/
- Added SSML handler (strips tags since no native SSML support)
- Updated engines/__init__.py to export ModelsLabClient
- Updated pyproject.toml with modelslab optional dependency
- Added tests/test_tts_engines.py integration

Features:
- Multiple voice options (madison, tara, leah, jess, mia, zoe, leo, dan, zac)
- Language support
- Speed control
- Async polling for audio generation
- Full implementation of AbstractTTS interface
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4966439d8a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread tts_wrapper/engines/modelslab/client.py Outdated
Comment thread tts_wrapper/engines/modelslab/client.py Outdated
- P1: Fix ValueError when rate property is empty string (base class default).
  Use truthy check instead of is-not-None so float() is only called with
  an actual numeric string value.
- P2: Fix SSML stripping being a no-op. Use re.sub to actually remove
  XML/SSML tags before sending plain text to ModelsLab API.
@willwade
Copy link
Copy Markdown
Owner

Going to merge this. Failiures aer due to keys not in the fork..

@willwade willwade merged commit ecf8e22 into willwade:main Feb 20, 2026
2 of 11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants