Changelog for service.xbmc.tts
==============================

Authors: ruuk, pvagner

Translations (Thank you!): Polish - Piciok, Italian - falcon03, German - donkamillo

TODO:
-----
 Use Container(id).CurrentItem for I* to detect list item changes
 Format seek position to prevent engines (some) from speaking it as a clock time (ie blah past midnight)
 OSX VoiceOver via AppleScript
 Android backend
 Speech for more window types that isn't automatically handled
 Pageination for large texts?
 Subtitle speech? Maybe only possible with something like pysrt and a subtitle file. https://pypi.python.org/pypi/pysrt
 GwMicro Window Eyes backend?
 Dolphin API backend?


EXTERNAL TODO:
--------------
 OSX installer?
 Android TTS app for android backend

** 1.0.8 **

Now defaults to outputting direct through SAPI - was crashing on Windows when playing speech via XBMC
Add spanish translation - thanks to bcernesto

** 1.0.7 **

Add some fixes for the video info dialog
Add handlers for some new windows
Add verbose logging option
Remove defunct Google and speechutil.com backends
Issue #11: Fix voice selection on festival backend and allow for quotes in text
Issue #13: Revert OSXSay backend to old method to fix crashing on OSX

** 1.0.6 **

Fix bug on window where addon window names were being spoken as the path to the window file
Now puts the addon in first run state if a user installed version is removed when the addon is pre-installed
Now updates the keymap if the pre-installed version is removed

** 1.0.6b1 **

Add Dutch translation - thanks to leonardder
Automatically disable if pre-installed
Fix issues playing informational sounds when addon is pre-installed
Add ability do enable/disable addon when it's pre-installed

** 1.0.5 **

Add client=t to Google backend URL to fix 503 errors

** 1.0.4 **

Add German translation - thanks to donkamillo
Fix keymapeditor speech

** 1.0.3 **

Add Italian translation - thanks to falcon03

** 1.0.2 **

Install default keymap on first run

** 1.0.1 **

Change backend priorities

** 1.0.0 **

Official repository release

** 0.1.2b **

Fix for the addon speaking '32166' instead of 'Addons updated'
Now speaks selected status for items in multi-select dialogs
Add handling for subtitles dialog
Now speaks keyboard dialog again in nightlies and future 15.0 release

** 0.1.1b **

Improve reading of window extra texts, for example System Info now properly reads the Kodi build info
Fix for slideout menu boolean settings not reading properly
Fix for slideout menu not reading properly on all PVR windows

** 0.1.0b **

Changed name to "Kodi Screen Reader"
Removed NVDA library. To enable NVDA, install "NVDA Controller Client DLL" from the "Add-on libraries" category on my repository
Added Recite backend (it is awful - added for completeness plus it was easy)
Added handling for the PVR Guide Search dialog (Not very useful until a future Kodi version)

** 0.0.88b **

Fix for versions with letter suffixes causing errors :)

** 0.0.87b **

Helix fixes for PVR
Now handles all PVR views (Helix)
Better item extra info of PVR items (Helix)
Now reads item label instead of title in video/music views
Now reads watched and resumable on videos
Fix for left slideout menus not reading

** 0.0.86 **

Fix for video info window buttons not reading properly on Helix
Enhancements to video info reading
Added speaking of currently playing item on pause
Fix for some settings not working

** 0.0.85 **

Localize strings

** 0.0.84 **

Fix for Yes/No dialogs not reading buttons and other issues
Fix for Timeline: Now/Next extra info not reading
Fix for fadelabels not being read in window info and some text ordering issues

** 0.0.83 **

Fix for errors on platforms with Python 2.6

** 0.0.82 **

Added 'Speak Background Progress Updates' to Settings:Options (Default: False)
Added 'Minimum Progress Update Interval (Seconds)' as subsetting to 'Speak Background Progress Updates' (Default: 5)
Added 'Speak When Media Playing' as subsetting to 'Speak Background Progress Updates' (Default: False)

** 0.0.81 **

Module: sayText() now requires unicode and is safe for all unicode characters

** 0.0.80 **

Added 'Disable Interface Reader' to Settings:Options (Default=False)
Now provides a module for other addons to use

** 0.0.79 **

Better log error formatting
SAPI: Add ability to retry initialization on errors
SAPI: Improve error recovery
SAPI: More improved logging
Add ability to automatically reset the addon on SAPI failure

** 0.0.78 **

Added fix for select dialogs causing looping errors in skins other than Confluence
Added fix for COMError issues when stopping speech in SAPI
Added more informative SAPI COMError logging

** 0.0.77 **

Update comtypes to the latest dev version
SAPI: Clear generated files on startup: possibly fixes issues with Win 7/8

** 0.0.76 **

Will now speak version updates for addons even if they were updated while the TTS addon was disabled or not yet started
Added 'Keymap' category to settings and moved keymap options there
Added 'Install Default Keymap', 'Install Custom Keymap', 'Edit Custom Keymap', 'Reset Custom Keymap To Defaults' and 'Remove Installed Keymap' to Keymap category
XBMC no longer needs to be restarted on keymap install/update

** 0.0.75 **

Fix for speech-dispatcher eventually hanging on volume up/down
Change speech-dispatcher volume range in settings to 0-200% (was 0-100%, but 50% actually represented the real 100%)
Fix for sapi pitch, volume and rate not working on Windows 8

** 0.0.74 **

Fix for window xml parser failing on skins with non-standard folder paths
Now speaks new versions for all addon updates
Added the sub-setting 'Delay (seconds)' to the 'Speak Extra Item Information Automatically' setting
Now says 'sub-setting' before speaking a sub-setting's name
Now speaks the category description as extra info on the settings category selection window
Added the ability to change backend speech volume with ctrl-plus and ctrl-minus

** 0.0.73 **

JAWS and NVDA will now fallback to SAPI if not running
Added ability to speak text in the text viewer window using the future xbmc ability to get textbox text directly
Fix for some multiline texts not having formatting codes removed before being spoken

** 0.0.72 **

Update Comtypes to dev version to remove NumPy dependency
SAPI can now speak with XBMC audio which is now the default
Added SAPI setting 'Play Speech Via XBMC'

** 0.0.71 **

Now shows the busy dialog when waiting for the engines, voices or players list to display (useful on the Raspberry Pi, which can be slow to display)
Fixed a bug where changing from a player that could pipe to one that could not would cause speech to stop

** 0.0.70 **

Now speaks when video or music database scan has started or finished
Improved speaking of window names including speaking the addon name for addon windows
Added code to load snd-bcm2835 module for other Raspberry Pi distributions
Will now check for and load snd-bcm2835 module for all players/engines if needed
Fix for sound icons failing due to file paths with non-ascii characters

** 0.0.69 **

Startup beeps now happen before speech
Now speaks the new version on update
Fix for Flite player not changing when changed in settings
Fix for aplay not interrupting properly
Now enables alsa for aplay when aplay is selected as a player on on Raspberry Pi OpenElec
Added ability to pipe audio directly from engine to player
Added setting to eSpeak, Google and HTTP TTS Server: 'Pipe Audio To Player'
Updated comtypes to 1.1.0

** 0.0.68 **

Playing status now speaks on all views when media is playing
Playing status now speaks fast forward and rewind with 2x, 4x, 8x, 16x and 32x levels

** 0.0.67 **

Weather window now speaks automatically
Now speaks full screen video player status including pause, buffering (with percent) and seeking (with position)
HTTP speech server backend: fixed errors cause by connection issues
HTTP speech server backend: now gives an error reason when falling back
Fix for bug added in last version causing speech to not interrupt when changing controls

** 0.0.66 **

Added pitch to SAPI
Added pitch to eSpeak
Improvements to Festival that should improve responsiveness
Festival now outputs wavs and can be used on the speech server
Added pitch and player settings to Festival
Changed Speed to Server Speed on HTTP TTS
Added Server Pitch, Server Volume, Player Speed, Player Volume to HTTP TTS

** 0.0.65 **

Fix for PVR window being handled generically

** 0.0.64 **

Add afplay: wav and mp3 player for OSX
Fix bug causing errors on some backends
Modify Cepstral for slight performance improvement

** 0.0.63 **

Fixed context menu speaking extra texts for underlying window
Fixed View Options menu speaking the view texts rather that the selected item text
TV and Radio channel views now speak the number, channel name and then title for the selected item

** 0.0.62 **

Re-structure audio player backend in a more intelligent manner
Fix Windows audio player
Fix broken on and off sound effect wavs

** 0.0.61 **

Fix for error when using audio players without volume control
Fix for Speech Dispatcher settings not being honored

** 0.0.60 **

Added sound to indicate busy dialog is showing

** 0.0.59 **

Added ability to set volume with paplay
Added volume to pico2wave
Added volume to eSpeak
Added rate, pitch and volume to Cepstral
Added speed and volume to Festival
Added rate and volume to OSXSay
Added module, voice, speed, pitch and volume to Speech-Dispatcher
Added player, speed and volume to Flite

** 0.0.58 **

Fix for possible SAPI error on older windows versions

** 0.0.57 **

Fix error on Google backend on windows caused by speed and volume additions
Fix error on Google backend when language not set
Added volume on SAPI

** 0.0.56 **

Added support for playing MP3 based backends on windows internally
Google backend now works on windows
Added speechutil.com backend (Very slow but should work on all platforms)
OSXSay backend now accesses speech library directly instead of via subprocess
Added voice selection to OSXSay backend
Added language selection to Google backend
Added player selection to Google backend
Added volume selection to Google backend
Added player selection to pico2wave

** 0.0.55 **

Internal testing

** 0.0.54 **

Fix to allow addon changlogs to auto-read
Added mpg321 to available players
Fix for addon crashing on non-ascii characters for most backends on some platforms
Made enabling/disabling addon safer and more reliable
Added enable and disable sound effects
Workaround Google tts limit of 100 characters by speaking separate portions

** 0.0.53 **

Now repeats entire text/IP/numeric input dialog text after a delay
Fix for interface slowdown when automatically reading extra item info

** 0.0.52 **

Now speaks the PVR guide info that displays when clicking a show automatically
Added 'Speak Extra Item Information Automatically' to 'Settings:Options' which defaults to false

** 0.0.51 **

Fix for SAPI errors on '<'
PVR EPG now speaks each show when navigating grid
F3 on PVR EPG now speaks the channel number, name, show start time, show end time and plot summary

** 0.0.50 **

Fixes for Cepstral showing a terminal on windows (again)
Added some code to reset SAPI on error and LOG the occurrence
Disable speed setting on ttsd for engines that don't use it

** 0.0.49 **

Added mpg123 player support
Make Google backend require an mp3 player

** 0.0.48 **

Fixes to HTTP server backend to make it work again with the Perl server
Added version check to HTTP server and switch between Perl/Python servers where appropriate

** 0.0.47 **

Changes to speech server backend

** 0.0.46 **

Fix for aoss usage
Google now only shows available when mplayer is available

** 0.0.45 **

Add setting 'Use aoss' to Cepstral
Fix for Cepstral showing terminal on windows
Add google HTTP speech server backend
Add setting 'Speak On Server' to SJHtts
Add remote speaking to sjhttsd backend

** 0.0.44 **

Added Cepstral backend
Added speaking number of items for lists
Divided settings into 'Engine', 'Options' and 'Advanced' sections
Added 'Speak Number Of Items For Lists' to Settings::Options
Fix HTTP wav server backend to work properly with perl server again

** 0.0.43 **

Finish new xml parsing for F2 and F3
Include comtypes and remove script.module.comtypes dependency
Change F12 enable/disable method and removed script.library.xbmc.tts dependency

** 0.0.42 **

Change XML parsing to remove module and parser dependencies
Remove bs4 import

** 0.0.41 **

Better detection for playSFX() memory fix

** 0.0.40 **

Fix for XBMC version detection

** 0.0.39 **

HTTP Speech Wav Server backend will no longer crash XBMC on server errors
HTTP Speech Wav Server backend will now drop to a fallback backend on errors
Using F12 key now requires Gotham or greater for disabling/enabling
Removed the memory fix setting from Advanced - addon now checks XBMC version

** 0.0.38 **

Added the ability to disable/enable the addon with F12 (you'll need to update the keymap from settings)
Added addon module dependency for script.library.xbmc.tts (for the enable/disable handling)
Fix for encoiding errors with non-ascii characters in HTTP speech wav server backend

** 0.0.37 **

Added support for playSFX without caching (xbmc git: 5579740e9881717c65518b81a9a2b4d9526c3307)
-Enable in Settings::Advanced (temporary setting until relevant change is in an XBMC release)
Added the ability to output wavs to a tmpfs (/run/shm or /dev/shm with fallback to /tmp)
Added speaking for typing in the numeric and IP address inputs
Added backend for eckythump's HTTP speech wav server

** 0.0.36 **

Improvements to speaking of list item text on F3

** 0.0.35 **

Added the ability to select player in eSpeak
Added support for playing via paplayer and MPlayer
Fix for encoding error in Pico2Wave
Added generic speaking of window text on F2
Added generic speaking of list item text on F3

** 0.0.34 **

Enable wave output in Flite
Merge Flite backend for ATV2 into main Flite backend
Fix for speech dispatcher always showing available

** 0.0.33 **

Fix for a bug with several backends causing XBMC to hang on shutdown
Added the settings option for espeak 'Play Speech Directly Via eSpeak' which bypasses writing to wav
Fix for speech-dispatcher not being available/working on some platforms (Ubuntu?)

** 0.0.32 **

Added setting to Advanced 'Override Poll Interval' and subsetting 'Poll Interval (ms)'
Various internal changes to eSpeak and pico2wave

** 0.0.31 **

Added a settings section 'Advanced'
Added setting 'Advanced::Enable Debug Logging' - currently defaults to True
Added setting 'Advanced::Disable Broken TTS Engines' defaults to True
Changed name of ctypes eSpeak to eSpeak (ctypes) and marked as broken
Changed name of 'eSpeak (XBMC Audio)' to eSpeak, and it now works both via internal and external sound output

** 0.0.30 **

Added speaking of addon status including addon download progress
Change to prevent errors from killing the addon, thereby stopping speech and possibly hanging XBMC on exit

** 0.0.29 **

Added speaking of virtual keyboard typing
Added speaking of progress dialog and speaking of progress percent

** 0.0.28 **

JAWS backend now properly shows availability

** 0.0.27 **

Added JAWS backend

** 0.0.26 **

Added 'Use SOX If Available' setting to pico2wav
Added 'Speed (Requires SOX)' setting to pico2wav
Added fix for text starting with - not speaking on some speech engines

** 0.0.25 **

NVDA: Unload nvdaController library on close (prevented addon from updating)
SAPI: Delete comtypes object on close (maybe? caused XBMC to hang on shutdown)
Fix for OSXSay hanging XBMC on quit
Some backend restructuring/improvement

** 0.0.24 **

Change SAPI to threaded to enable interruption of speech lists

** 0.0.23 **

Fix for espeak available causing error in windows

** 0.0.22 **

Fix Flite subclass

** 0.0.21 **

Added changelog.txt
Added documentation for items in guitables.py Removed giutables.py items that were removed in frodo
Added speaking of changelog dialog
Changed voice and speed settings to appear as subsettings
Add class and method documentation to the backend base classes
Some restructuring to the backend base classes and backends to make more sense and fix some threading issues
Change XBMCAudioTTSBackendBase to WaveFileTTSBackendBase and allow it to work with XBMC audio with stopSFX (if available) or external audio
Re-implement pico2wav using WaveFileTTSBackendBase

** 0.0.20 and before **

Fix for Flite hanging XBMC on shutdown F6 key now opens the addon settings when the keymap is installed The backend currentSpeed() now returns 0 if none is set
Backend select dialog now handled manually Added displayName to backends - used for selection dialog Backend selection now saved with provider name Added currentSpeed() to TTSBackendBase, works like currentVoice() Added XBMCAudioTTSBackendBase backend base Added ESpeak_XA_TTSBackend which uses subprocess and XBMC audio and implements currentSpeed() Added a fix for OK speaking as Oklahoma Settings now only shows 'Voices' option for the currently displayed speech engine
Merge branch 'master' of https://github.com/ruuk/service.xbmc.tts
Handle stopSFX in flite for ATV2
Forgot to remove UTF8 decoding from SpeechDispatcherBackend.
SapiTTSBackend: Added support for setting voices. Also reverted utf8 decoding for NVDA and Sapi TTSBackends as it is no longer needed after the latest refactor.
ESpeakTTSBackend: prevent double speaking. I don't know when this did crep in.
Merge branch 'master' of https://github.com/ruuk/service.xbmc.tts
SpeechDispatcherTTSBackend: handle connection lost errors e.g. while speech-dispatcher daemon is restarted.
Addon addon description to spoken info when pressing F3 in the addon browser
Added assert to SayText to ensure unicode text Made changes to ensure all text passed to SayText is unicode Changed formatText to cleanText and fixed it to properly remove text formatting All text passed to a backend is now run through cleanText
fix from phone
Added stop method to more TTSBackends NVDA, Sapi and SpeechDispatcher
Merge branch 'master' of https://github.com/ruuk/service.xbmc.tts
ESpeakTTSBackend: Added voices selection.
Added keys to keymap. F3 for extra selected item information and F to stop. Stop only works in espeak and flite so far. speech. Changed F1 to repeat Window:Section:Item instead of just Item text. F2 now speaks time and weather on the home screen. F3 currently speaks TV show plots, episode plots, probably Movie plots, and song title,genre,duration.
Added SpeechDispatcherTTSBackend with some default values attempting to load a voice coresponding with the user's locale if it exists.
Merge branch 'master' of https://github.com/ruuk/service.xbmc.tts
Added a custom keymap installable from settings:Install Keymap Keymap adds F1 repeat item text, F2 say extra text Currently F2 only works in the addon information window Fix eSpeak to encode to unicode to UTF-8 string before speaking Changed lib file in addon.xml to main.py which starts the service or other functions depending on the calling args
Fixed inability to start service without "enabled" setting which has been removed
Quick fix for UnicodeDecode errors occuring while presenting some non english window and control names. This should be properly addressed later.
Added basic .gitignore
Removed 64 bit NVDA controller client library as this is not needed at this point
Now speaks titles of dialogs Now speaks text in OK and YES/NO dialogs
Version bump
Restructure backends Add nvda controller dlls and license
Fix for new window not interrupting speech
Added pvagner to the authors in addon.xml
Version bump
Merge branch 'master' of git://github.com/pvagner/service.xbmc.tts into pvagner-master
Localize window names via XBMC strings Localize quartz control table labels via XBMC strings Removed 'Enable' setting to use XBMC enable/disable button instead Added pausing to threaded backend base Some tweaks to Flite to prevent crashing XBMC Fixes for proper interruption when changing button controls Now falls back to System.CurrentControl when getting control label, which works with settings items
Added NVDATTSBackend. This only works on windows. NVDA has to be running. NVDA controller client library needs to be copied into the lib folder.
SAPITTSBackend: convert text to unicode before sending for TTS. Fixes issues speaking non ascii characters.
Do not init backend unless enabled
Fixes for backend change check
Finish adding stuff for osx say Log version and platform
Version bump
Added eSpeak tts backend Added code for OSX say backend (untested)
version bump
Implemented a threaded tts backend base class Implemented Flite backend using threaded base class Added auto option to setting 'Default TTS Engine'
Added Flite via ctypes and commented it out
Fix Speak() flag in SAPI say() Service now uses tts backend specific sleep interval
Finish interruptable speech interface
Add import for comtypes module Rename WindowsInternalTTS to SAPITTS Use comtypes instead of subprocess to access SAPI
Added voice selection
Version bump
Changed addon file structure Added support for flite tts (should work on ATV2) Added 'Enable' setting Added 'Default TTS Engine' setting
Fix windows TTS Auto select TTS provider Some cleanup
Various Windows TTS
Add license and icon
Initial commit