Todo#

  • add a UI to control which voice is used, volume, tempo, whether we want to repeat the last one, to expose a button to speak it aloud from the main shell

Bugs#

  1. RB freezes

    problem

    Occasionally, my Rhythmbox freezes up, and it’s probably due to this plugin, but I haven’t been able to trace the reason why.

    status

    Fixed.

    solution

    Perhaps it was a threading issue with Speech Dispatcher’s callbacks trying to control volume. Because of unreliability due to a race with it, anyway, I no longer use Speech Dispatcher’s callbacks and now calculate an estimate of the time it will take Speech Dispatcher to speak and restore volume after that point. Yay.
  2. Volume lowering/raising is timed poorly

    problem

    Since the python callbacks suffer races and cause RB to freeze as well (link relevant bugzilla entries here), DJAqua calculates how long it should remain lowered based on Flite’s rate of speech. This rate of speech does not apply to espeak, which has longer pauses. We either need to fix the callbacks in Speech Dispatcher’s python API, or we need engine-specific timings (which are imperfect anyway :|)

    status

    I'm lazy and don’t want to fix either :( One or the other will get fixed, though

    workaround

    Use flite or festival
  3. Festival server is running but it still doesn’t use that as an output module!

    problem

    https://bugzilla.redhat.com/show_bug.cgi?id=484577