• 1
  • 12
  • 13
  • 14(current)
  • 15
  • 16
  • 30
Xbmc not working for blind users.
(2014-04-14, 23:14)VIJO Wrote: Hello Friends. This is AMAZING. My family and myself have been using XBMC for the past couple days with RUUK'S TTS. What parts we have tried have worked great! My family and I really really appreciate this. I cannot thank you and the other folks enough. Anything I can do to help with continued improvement of this please let me know.
Thanks!
While he hasn't had as much time to work on it, pvagner has been working on this as well.
(2014-04-14, 23:14)VIJO Wrote: The only Issue we have come across is no feedback during keyboard input in like a search field, which we don't find is a big deal.
Keyboard speaking was added in version 0.0.29. It works on the Quartz skin, but I just tested it on confluence and it didn't work. I'll see what I can do to get it working.
(2014-04-14, 23:14)VIJO Wrote: Please if there is ANYTHING I can do to help continued development let me know. They way it sits now is absolutely awesome.
Just let us know things that could be could be improved, or any portions that aren't working that are important to you. While we will be trying to get everything working eventually, we might as well get the most used stuff working first, and I'm not going to know what that is unless someone tells me Smile

All of a sudden, the keyboard is speaking for me in Confluence. Hmm.. I was messing with the volume when I tested it the first time, maybe I had it all the way down. I'll poke at it some more.
VIJO: What version of the addon do you have?
@@
So, I've been playing with this a bit on my raspberry pi and it's working fairly well, but I'm used to much nicer voices than espeak/flite/festival/pico2wave/etc...

... so I created a new backend.

My desktop machine is Windows, and it's on 24/7, and as a UNIX head, I naturally have cygwin installed on it, so I thought maybe I could use this to bring better voices to xbmc on Linux.

So I gutted an old daemon I wrote years ago in perl and used it as a base and made this: http://codepad.org/Gk7pHS2l

It acts as a standalone HTTP server that listens on port 8256 by default. You can POST to http://host:8256/speak.wav and it'll throw a wav file back at you with the requested speech. It takes args called "voice", "rate" and "text".

If you go to http://host:8256/ it'll give you a basic form to use to generate a wav of the speech you want from any of the available SAPI5 voices on the host server. You can also request /voices for a list of available voices.

After I had that working to my satisfaction, I went and copied the espeak.py backend from services.xbmc.tts and used it as my base to create a backend to interface with my HTTP server.

You can see the code for that one (lib/backends/ttsd.py) here:
http://codepad.org/Jia67mny

Then I added my backend into lib/backends/__init__.py, rebooted and enabled it, and am very pleased with xbmc on my pi, with text-to-speech using Loquendo Dave as my voice.

Currently, my backend doesn't let me choose the voice, speed or change the httphost in the addon configuration area. I tried adding a couple of entries to the settings.xml file under resources, but that didn't seem to do anything at all. I'm probably missing something, though, as I'm learning as I go and mostly using the existing code as a guide rather than any deep intimate knowledge of how it all snaps together.

My backend writes the wav to disk before playing it. This is simply because that's how all the other backends that rely on xbmc to output the sound are working. If there's a way to feed the was straight from the remote server into xbmc's wav playback facilities without writing it to disk, that'd probably be a good idea.

I realise this setup is a little esoteric, but I think there's a place for this backend in xbmc tts. A lot of people are running xbmc on a pi or other low powered device which relies on pulling media off another machine on the local LAN that's on all the time and is considerably more powerful, so it seems worthwhile to be able to make use of that. I don't have a Mac, but it's probably trivial to modify my perl code to make it run on a Mac and use the Mac speech API, too.

For anyone who wants to run the perl HTTP server themselves on windows, you'll need cygwin, perl, the perl win32 modules (these are in the cygwin package repo), and the perl HTTP-Daemon package (I had to install this manually from source). It's highly likely that you can run this with a Windows version of Perl, not under cygwin, but I've not tried.

ruuk: Any chance you can import my ttsd backend into your source tree?

Cheers!
(2014-04-15, 18:18)eckythump Wrote: So, I've been playing with this a bit on my raspberry pi and it's working fairly well, but I'm used to much nicer voices than espeak/flite/festival/pico2wave/etc...

... so I created a new backend.

...

I realise this setup is a little esoteric, but I think there's a place for this backend in xbmc tts. A lot of people are running xbmc on a pi or other low powered device which relies on pulling media off another machine on the local LAN that's on all the time and is considerably more powerful, so it seems worthwhile to be able to make use of that.
I'm a firm believer in users having many options. I hate it when I can't do something because it's not normal usage - which is why I use Linux and learned Python.
(2014-04-15, 18:18)eckythump Wrote: I don't have a Mac, but it's probably trivial to modify my perl code to make it run on a Mac and use the Mac speech API, too.

For anyone who wants to run the perl HTTP server themselves on windows, you'll need cygwin, perl, the perl win32 modules (these are in the cygwin package repo), and the perl HTTP-Daemon package (I had to install this manually from source). It's highly likely that you can run this with a Windows version of Perl, not under cygwin, but I've not tried.
It would be nice if we could eventually make a windows installer for the http server, so that less tech savvy users could get it working. Perhaps perl2exe would be useful for getting an executable without having to install/gather all the other stuff.
I'm also tempted to port this to Python, but that's mostly because Python is my native tongue, followed distantly by English Smile
Another advantage of porting to Python would be that we already have code for JAWS and NVDA which could perhaps be adapted to add some more options for the server.
(2014-04-15, 18:18)eckythump Wrote: ruuk: Any chance you can import my ttsd backend into your source tree?
Will be doing that today or tomorrow. I'll see if I can't get the settings to work properly as well.
In the future, you might want to create a GitHub account and fork the repository. Then you can make your changes and additions and issue a pull request which I can easily merge into the main code.
@@
(2014-04-15, 20:52)VIJO Wrote: Man this thread makes me want to learn to program. Sadly, I think it is miles above me to ever get to the level of you guys.
I didn't start out at this level Smile
@@
(2014-04-15, 22:02)VIJO Wrote: I read something about speech using the XBMC on AppleTV. I would like to confirm yeah or neigh? If its yes could you give me an idea how to get it installed, It doesn't show up as addon in the default repositories.

And I tried installing it from the zip ruuk.addon.repository-1.0.0.zip, but that was a no go as well.

I got your Repo installed and installed it from there. It shows up, but no go.

You will also have to install flite. This requires ssh'ing into the ATV2 and typing
Code:
apt-get install flite

While this should work, there are currently two issues. The first is that speech is not interruptible. That means that as you navigate you will have to wait for it to finish saying the last phrase before it speaks the current text. The second issue is that the method available for playing wavs on the ATV2 within XBMC caches each sound so that eventually it will fill memory (the Raspberry Pi has the same issue).

The good news is that I submitted fixes for both to XBMC and they were accepted. Unfortunately these fixes aren't in any release yet. I just looked at the commit history on GitHub and it looks like these were merged into Gotham, so hopefully that means they will be in the next beta.

Also, I just decided that I'll probably add some code that attempts to automatically install flite when using the ATV2.
@@
(2014-04-15, 23:17)VIJO Wrote: So I installed Flite and it is cool to have the speech. But the lack of interuption is more annoying than I thought it would be. Honestly, I think XBMC for linux or windows can do anything and more than the ATV2 can and it seems to work great. I just wanted to try it to see it happen. I think I may stick the ATV 2 on ebay to help pay for the NUC. Since no one has been able to jailbreak it since 6.0, The prices these things have been fetching is nuts and I just don't get why. Must be something visual I am not seeing.

Wow. I just lookied at eBay. If I didn't need mine for testing, I'd sell it too Smile

My main XBMC box is an Ouya. I paid the same price as I did for the ATV2 and I can play games on it as well. Also the ATV2 is slow as death Smile
Of course there's no speech in the addon for Android devices yet, but Android has speech built in, so I'll eventually get around to adding support there as well. I've written code for Android before, so I'll be able to do it. It's just a matter of taking the time, which I'm currently putting into getting more things spoken.
@@
(2014-04-15, 18:18)eckythump Wrote: For anyone who wants to run the perl HTTP server themselves on windows, you'll need cygwin, perl, the perl win32 modules (these are in the cygwin package repo), and the perl HTTP-Daemon package (I had to install this manually from source). It's highly likely that you can run this with a Windows version of Perl, not under cygwin, but I've not tried.

Just FYI, I installed Strawberry Perl and that was all I needed to run the script.
I'm running XP in a virtual machine and Cygwin was a bit larger than I wanted Smile
@@
(2014-04-16, 01:01)VIJO Wrote: So I installed Flite and latest nightly of Gotham and your repo Ruuk. It works a bit better seems a touch smoother, but I guess they haven't wrapped the fix into the latest nightly yet or im not sure. it seems to interrupt sometimes then not others. Its defiantly different than Frodo was. But in then again in the process i also updated 5.0.2 to 5.3, so hardly scientific. It is usable from what I can tell.

So I guess there are no API's for Voiceover?
It looks like the latest nightly is xbmc-20140410-7f24c56-Gotham-atv2.deb which should include interruption but not the memory problem fix.
The hit and miss of the interruption is probably because of the ATV2's lack of speed. The method used here is inherently slightly less smooth than than the methods which use an external player, and I think that the ATV2 just amplifies it.

When I get a chance I'll try it on my ATV2 and see for myself.

The memory fix should be on the 20140415 nightly.
  • 1
  • 12
  • 13
  • 14(current)
  • 15
  • 16
  • 30

Logout Mark Read Team Forum Stats Members Help
Xbmc not working for blind users.5