Nero®

Voice

Spoken output, shaped by state.

voice.py adds text-to-speech using KittenTTS, an ~80M ONNX model that runs on CPU with no GPU required.

State affects delivery

The current emotional state adjusts the speaking rate. Positive states speed it up; negative states slow it down, so delivery reflects the system's state, not just the text.

One consistent voice

The system uses a single default voice as part of a consistent identity, but the voice can be changed at any time.

Speaks text, not markup

Code blocks, URLs, and markdown are stripped before speaking. If a reply contained code, the system says the code is shown on screen instead of reading it aloud.

Available voices

Switch at any time with voice Luna in the chat loop.

BellaJasperLunaBrunoRosieHugoKikiLeo

python

from voice import NeroVoice

v = NeroVoice(voice="Jasper")
v.speak("Hello. I am Nero.")     # play now
v.save("Hello.", "out.wav")      # write a wav file

Voice is optional. If the dependencies are not installed, the system prints a single warning and continues in text-only mode without interruption.