Skip to content

Conversation

jaswdr
Copy link

@jaswdr jaswdr commented Aug 7, 2025

Summary

This PR fixes installation issues with Python 3.13 by updating package dependencies and correcting version constraints that were preventing successful installation.

Changes

Python 3.13 Support

  • Added Python 3.13 to supported versions in setup.py classifier
  • Updated dependencies to versions compatible with Python 3.13

Dependency Fixes

  • spacy: Added version constraint >=3.8.0 for Python 3.13 compatibility
  • numpy: Added version constraint >=1.26.0 for Python 3.13 support
  • misaki: Fixed non-existent version >=0.9.4 → >=0.7.4 (latest available)
  • misaki: Removed [en] optional dependency to avoid conflicts
  • phonemizer: Added as explicit dependency (required by misaki for TTS functionality)

Project Maintenance

  • Added .gitignore file with common Python build artifacts
  • Synchronized dependency specifications across requirements.txt, setup.py, and pyproject.toml
  • Fixed formatting in pyproject.toml for better readability

Testing

Successfully tested with Python 3.13.3:

  • pip install -r requirements.txt - all dependencies install without errors
  • pip install . - package builds and installs successfully
  • python -c "import kittentts" - module imports without errors
  • Code example below is working and generating the output.wav file as expected
from kittentts import KittenTTS

m = KittenTTS("KittenML/kitten-tts-nano-0.1")

audio = m.generate(
    "This high quality TTS model works without a GPU", voice="expr-voice-2-f"
)

# available_voices : [  'expr-voice-2-m', 'expr-voice-2-f', 'expr-voice-3-m', 'expr-voice-3-f',  'expr-voice-4-m', 'expr-voice-4-f', 'expr-voice-5-m', 'expr-voice-5-f' ]

# Save the audio
import soundfile as sf

sf.write("output.wav", audio, 24000)

@akx
Copy link

akx commented Aug 7, 2025

phonemizer is the wrong dependency to install, as it doesn't support setting the espeak path, like phonemizer-fork does. See #25...

Btw, where are you getting that misaki 0.9.4 isn't a thing? 🤔 https://pypi.org/project/misaki/0.9.4/

Also, packaging is fixed by #24 😅

@seaver-olson
Copy link

seaver-olson commented Aug 8, 2025

ChatGPT what???
who??

While I do think you are write that 3.13 isn't compatible, I did notice that if I look up the error on chatgpt it says the exact same misaki version number error huh. I will let you know if I find any other reason why 3.13 isnt working

@jaswdr
Copy link
Author

jaswdr commented Aug 8, 2025

phonemizer is the wrong dependency to install, as it doesn't support setting the espeak path, like phonemizer-fork does. See #25...

Btw, where are you getting that misaki 0.9.4 isn't a thing? 🤔 https://pypi.org/project/misaki/0.9.4/

Also, packaging is fixed by #24 😅

OK that's weird, I probably have a typo when searching in pypi for the package because I remember to find only the 0.7.4 version... anyway I'll fix it together with using the phonemizer-fork package, specially because during testing I have to install espeak, if that package removes this need, is better to use it, and I'll apply this change based on #24.

@jaswdr
Copy link
Author

jaswdr commented Aug 8, 2025

ChatGPT what???

who??

While I do think you are write that 3.13 isn't compatible, I did notice that if I look up the error on chatgpt it says the exact same misaki version number error huh. I will let you know if I find any other reason why 3.13 isnt working

I've 3.13 locally and noticed it was failing, I'll add the error to the description for clarity.

@akx
Copy link

akx commented Aug 8, 2025

@jaswdr

specially because during testing I have to install espeak, if that package removes this need, is better to use it

Yes, the espeak_loader package has a bundled native espeak. As discussed here on HN, you can use my ref that merges all of my fix PRs to just go to town with uv:

uvx --from git+https://github.com/akx/KittenTTS.git@pr-21-22-24-25 kittentts --output output.wav --text "This high quality TTS model works without a GPU"

@jaswdr
Copy link
Author

jaswdr commented Aug 11, 2025

phonemizer is the wrong dependency to install, as it doesn't support setting the espeak path, like phonemizer-fork does. See #25...

Btw, where are you getting that misaki 0.9.4 isn't a thing? 🤔 https://pypi.org/project/misaki/0.9.4/

Also, packaging is fixed by #24 😅

0.9.4 explicitly requires Python < 3.13, so that's why it was failing to install, if I downgrade to 3.12 the latest commit in main branch works as expected. Version 0.7.4 worked because it was the first version before the restriction on 3.13 was introduced, which was in 0.7.5.

@jaswdr jaswdr closed this Aug 11, 2025
@reneleonhardt
Copy link

reneleonhardt commented Aug 13, 2025

Good example why upper limits should practically never be used.
Releasing new versions for Python < 3.13 when Python 3.14 is practically final...
https://iscinumpy.dev/post/bound-version-constraints/

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.

4 participants