Kodi Community Forum

Full Version: Xbmc not working for blind users.
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
(2014-05-03, 21:35)jhall Wrote: [ -> ]I put both the 0.0.48 and speech.server.zip in the addons dir, but I'm guessing I don't need the speech.server. It doesn't look like an addon anyway, now that I look through it a bit better.
Correct. The speech.server is so you can have the speech generated on another machine and either send the wav to the client or speak the text on the server.
This is especially useful for lower performance platforms like the Raspberry Pi because you can offload the speech processing to a more powerful machine.
(2014-05-03, 21:35)jhall Wrote: [ -> ]I must say, I'm not a fan of the keyboard input method with the ridiculous remote I got, who ever heard of a remote that doesn't have numbers on it anyway! and in the end I just went in and edited the .xml settings file and added the proper values since the ip address input method was really annoying. There did not seem to be a way to make the pi read the input field so I could tell exactly what was in there. I can't imagine the fun I would have if I had to type in a WPA key or something.
This must be an issue with the Pi. I'll have to check it out. The normal text input dialog speaks the letters you type or delete, and the IP address dialog speaks the current part of the address you are entering so if you are typing 127, it will first say one then twelve and then one hundred twenty seven.
None of this behavior is set in stone, this is just how I've done it so far. It sounds like it's not even doing that for you.
(2014-05-03, 21:35)jhall Wrote: [ -> ]The initial dialogue boxes (welcome to openelec etc) did not properly speak, and since this remote has no f2 or f3 buttons on it I didn't try to make it read, simply clicked on next until the main gui showed up. (previously I had used google goggles to get an idea on what might be going on)
There is a lot still to do getting everything to speak. I'll have too look at what that welcome dialog actually is and see what I need to do about it.
I also plan on making the buttons/keys configurable.
(2014-05-03, 21:35)jhall Wrote: [ -> ]Then I enabled live tv and enabled a pvr backend. There are 1,434 channels in my backend with 2 weeks of EPG for each, undoubtedly that caused the pi to be unhappy over memory. I scrolled down the list until I found a channel and clicked on it. The channel began playing, but suddenly speech was aborted and would not play I'm guessing because media was playing? Is there a way to pause the media or something so that it will speak long enough to figure out how to get out of it?
Speech should work even when video is playing, so the cause of it stopping must be something else.
Unfortunately, I don't have any PVR hardware or even cable or satellite to make one useful, so it will be hard for me to duplicate the issue. Maybe I can fake something up somehow.
(2014-05-03, 21:35)jhall Wrote: [ -> ]My wife had walked in while I was battling with the IP address input madness and offered to help. At some point the thing stopped speaking, which was just fine for us since it was being a pest. We kept clicking on ok until we got to the 'enable' stage of turning on the addon. Since clicking enable did not work, I walked to a computer, looked in the settings.xml file and rebooted the pi.

Maybe one solution to not reading the input is if you pause without moving the selector around for more than 3 seconds after the last sniffy sound, it will read the input value. At least then you could figure out what was going on. and then of course if you hit backspace, it could read immediately. I don't know whether the input field can be polled or if you just have to keep track of it on event or something, but it makes that sniffy noise all the time, I'm guessing you could hook onto that callback to determine what was clicked.
That's one option I have considered. I would have liked to have been able to have F2 speak the text, but unfortunately the keyboard dialog captures all keyboard input. I think I will implement your idea.
(2014-05-04, 13:48)jhall Wrote: [ -> ]I wouldn't release it just yet. Admittedly I jumped to Helix build on accident because I wanted to be sure to get all the latest fixes, and xvdr plugin is not available for either Gotham or Helix in Windows, but I did notice that under windows when you start xbmc, for some reason it routes all the OSD and programming through the headphones and the jaws through the laptop speakers. That approach in theory makes sense, but is a little annoying in a quiet environment where people are trying to sleep.
XBMC sound output and JAWS sound output are unrelated to each other. The addon just tells JAWS to speak the text and JAWS plays it wherever it's configured to play it.
(2014-05-04, 13:48)jhall Wrote: [ -> ]Also I had to do a bit of research to get vnsi5 plugin for vdr going because a decision was made to remove the vdr side from the former vnsi3 git tree. It did compile for the version of vdr I am running ,s ono real headaches there.

It does seem to take several seconds to change channels on windows, not sure why--I mean 5 or more. In contrast, vdr can change the same channels in under 2 seconds.

In windows, while playing, I can press select button to cause the OSD to appear. arrowing to the right eventually brings me to an entry that is called the channel name (the one came from the vdr server) pressing select on that brings up the EPG. Cycling through the events using up and down (choosing events from nearby channels) you can press select and the event description shows up. I used jaws OCR recognission to get a fuzzy read on the description, and then arrowing right and enter to switch caused the channel to go away for 5 or more seconds, then resume the former channel not the new one that I had selected via movie. I'm thinking that one might be an XBMC bug.

Since this is my first real exposure to XBMC, I haven't really categorized my library yet, and all my vdr videos don't show up in the library. My movies are not aptly named either, so not sure what to do about that yet.

It's not a directly-related question to the plugin development, but does raise usability questions from a blind-person perspective for XBMC. Maybe we should start a separate thread for those kinds of issues? I personally wouldn't mind them thrown in here, but I don't want to presume.
Within the next few weeks, I will create a release thread for the addon itself, and we can move discussion about the addon itself there and people can continue to discuss other issues here, or we could have a general blind/partial-sight support thread. I'd like to think the title of this thread is becoming somewhat less apt than when the thread was started Smile
Yeah I agree, the fact that I was able to make my sd card image, put in my keys in config.txt, add ssh to cmdline, change disk to disk=LABEL=STORAGE, boot the pi, log in with ssh, copy the addon in .xbmc/addons and reboot again, everything worked.

Granted I had hardwired the Ethernet, already put it in DHCP and so was able to ensure the box would be reachable, but still, I was able to get everything working without any sighted assistance. You have NO IDEA what that means to the blindness community--imagine if you bought a new computer, but couldn't install or use it really without the assistance from somebody else.

A stop-gap measure for making openelec, raspbmc or whatever talk might be to get a check put into the create_sdcard script that says

make a talking version?

Then after making the ext4 /storage partition, the script could go grab the addon, make .xbmc/addons/$ADDON_NAME and then when the blind person reboots the pi with the sdcard in there it starts talking.

Maybe people are buying premade sdcards that already have openelec, raspbmc, or whatever installed, but I think there are a good number of people who make their own installation media. The issue of supportability is going to come up time-and-time again, so if we want to promote the pi as a workable solution, maybe placing our own version of the create_sdcard utility with the addon downloads page will make it easier for some.

I know, I know, now we're assuming packagers won't change their create_sdcard script too often, this just requires coordination. It either goes this way or that way and I think until the addon is usable and doesn't promote random crashes, reboots or sudden loss of speech after 10 minutes of use (like what happens now on my pi) not seeing the crashes and reboots any more, but am seeing OOM crashing the tts addon thread and it has no watchdog, so you basically have to restart xbmc or reboot your device if you want speech. anyway I think we should go out of our way to support the packager installers until we have a product that does not burden the sighted community but still lets us get our job done.

Also on the topic of first-time-install enables speech or not there may be a case where the initial configuration has passed (and probably varies from packagers) that a blind person might want to quickly use a copy of xbmc, then return it back to its native state. Maybe a long-press of some key or something to allow you to turn speech on or off

oh and I almost forgot. I noticed while playing with the pi yesterday when it was about to run out of memory, the remote would go wild and repeat some key as rapidly as possible, like down or left or right or whatever. This caused rapid clicking sounds and could be interrupted by pressing another key. I don't know if that's my remote or some other problem, but thought I'd mention it since I forgot to mention it yesterday.
ok I did a little more testing. I started the httpd speech server on another machine as suggested to offload some of the work from the pi. The difference in speech was negligible, but I did manage to screw up the ip address and crash the rpi hard (could nont log into it with ssh any more)

After I got that sorted out, I had the unexpected pleasure of seeing all my spoken text printed out on the terminal running the speech server. THis was helpful later.

After fussing with it a bit, editing the settings file real fast before xbmc crashed again, then rebooting again, I got it to work. I tried setting it to auto instead of espeak / ttsd but then I couldn't control the options in ttsd again. After switching back and forth a couple times, I came to the conclusion switching between the two resulted in the pi becoming wedged and had to hard-reboot it. I am using the python server, not the perl one since I have yet to install this under windows.

I started live tv and found a channel of some-what interest, not much interesting is on at 23:40. I decided Indipendence Day might bring me good luck and selected it. After the customary 7 seconds of waiting (you really have to get used to waiting with this PI sometimes) content began to play out.

This content is AC-3 2ch. I haven't checked, but maybe the PI sends direct passthrough for AC-3 so it doesn't have to decode the ac-3 in processor. I am thinking that this is why I hear no audio once content is playing. I could, happily, see what was trying to speak because the voice calls were still being printed on the server display. I think my EPG problem is because when I click on the channel, it shows me what is up-coming on that channel, not a grid of all the channels. I'd like to figure out how to make it show me a grid of the channels. It also only states the title, not when it started, how much is left etc. Maybe a compromise here would be to state the title as you go through the grid, pause for a second, then say the times. This would allow you to quickly skim through titles until you found something interesting, then see how much of it you might have missed etc.

Well then after about 5 minutes or so the pi wedged again. I don't know if it is doing this because of running to ttsd or whether it is doing it because it can't play any audio calls, but if it gets unhappy about something, it seems to get stuck on that and eventually wedge the pi. This might not be discoverable as easily on a windows or Linux box because they have more resources to throw at the problem.

Anyway, those are my current thoughts. If the speech server isn't running when the pi comes up again, does it revert to local espeak or get mad about it and wedge the PI?

Thanks
(2014-05-05, 05:48)jhall Wrote: [ -> ]This content is AC-3 2ch. I haven't checked, but maybe the PI sends direct passthrough for AC-3 so it doesn't have to decode the ac-3 in processor. I am thinking that this is why I hear no audio once content is playing. I could, happily, see what was trying to speak because the voice calls were still being printed on the server display.
From my personal experience, OpenELEC on the pi doesn't do audio passthrough out of the box, it needs to be configured. It does, however, disable playback of GUI sounds while media is being played. XBMC TTS uses the same interface for playing sounds so is thus also affected by this. The option for this is: Home screen, SYSTEM, Settings, System, Audio Output, and it's one of the last options on that page. If you'd like to configure passthrough, you configure that on that same page, too, but you will need to switch from standard to advanced mode. You can find that switch below all the category names. At least, that's where it is on the default "confluence" skin.

I also had some issues with the IP address field as you mentioned in a previous post. I discovered that changing the "Remote sends key presses" from no to yes makes it possible to navigate the onscreen keyboard.

(2014-05-05, 05:48)jhall Wrote: [ -> ]Anyway, those are my current thoughts. If the speech server isn't running when the pi comes up again, does it revert to local espeak or get mad about it and wedge the PI?
It should fallback to espeak. It does for me.

I've been playing with a recent Helix nightly and have been getting crashes/system freezes. I suspect 3.95.8 will be much better.

Also, just so you know you're not alone, I too have been getting the stuck-key behaviour, too. I've seen it on all versions of OpenELEC I've used to date. I don't think it's RAM related. I had assumed it's because I have a cheap rinkydink combo "air-mouse"/keyboard/remote thing that I paid all of $20 for, but perhaps it's fine and the problem is in OpenELEC/XBMC.
I thought there was an audio output under settings at one time, but now it has disappeared on both my rpi and windows builds. I'll look again and maybe ti is there.

and this remote sends key presses option, where is that? I don't remember encountering that one. Is it in the input settings maybe?
(2014-05-05, 22:42)jhall Wrote: [ -> ]I thought there was an audio output under settings at one time, but now it has disappeared on both my rpi and windows builds. I'll look again and maybe ti is there.
It should be under System::Audio. You may need to change the settings mode to advanced.
(2014-05-05, 22:42)jhall Wrote: [ -> ]and this remote sends key presses option, where is that? I don't remember encountering that one. Is it in the input settings maybe?
This is under System::Input.

(2014-05-05, 13:14)eckythump Wrote: [ -> ]It does, however, disable playback of GUI sounds while media is being played. XBMC TTS uses the same interface for playing sounds so is thus also affected by this. The option for this is: Home screen, SYSTEM, Settings, System, Audio Output, and it's one of the last options on that page.
Thanks for pointing that out. I forgot that that was the default. Maybe the addon should change this setting automatically.
Added a new version to my repository: 0.0.49.

Get it or the repository from the Downloads Page.

Changes:
  • Added mpg123 player support
  • Make Google backend require an mp3 player

The speech server is also updated on the downloads page. It adds the ability to run as a service in windows via service.py.

I'll add some instructions to the server as a service when I get the chance.
so does this mean if you run the server on a remote machine and select google, the server will run mpg123 -s for you so that you don't have to have mpg123 on the pi?
Howdy,
I have been getting sapi crashes where the speech will just stop. When that happens the log file shows this. If I press F12 Once to shut it down and then again to restart it the speech will come back up and start speaking, Just that when speech stops I don't know if its just the speech that quite or if the thing locked up.[/php]

Code:
18:51:32 T:2564  NOTICE: section:
18:51:36 T:3508  NOTICE: service.xbmc.tts: Control: 0
18:51:36 T:3508  NOTICE: service.xbmc.tts: Control: 300
18:51:52 T:3508  NOTICE: service.xbmc.tts: Control: 302
18:51:55 T:3508  NOTICE: service.xbmc.tts: Control: 300
18:51:59 T:3508  NOTICE: service.xbmc.tts: Control: 305
18:51:59 T:3308   ERROR: Exception in thread TTSThread: SAPI:
                                            Traceback (most recent call last):
                                              File "C:\Program Files\XBMC\system\python\Lib\threading.py", line 808, in __bootstrap_inner
                                                self.run()
                                              File "C:\Program Files\XBMC\system\python\Lib\threading.py", line 761, in run
                                                self.__target(*self.__args, **self.__kwargs)
                                              File "C:\Users\Admin\AppData\Roaming\XBMC\addons\service.xbmc.tts\lib\backends\base.py", line 214, in _handleQueue
                                                self.threadedSay(text)
                                              File "C:\Users\Admin\AppData\Roaming\XBMC\addons\service.xbmc.tts\lib\backends\sapi.py", line 26, in threadedSay
                                                self.SpVoice.Speak(text,1)
                                            COMError: (-2147200958, None, (None, None, None, 0, None))

and

Code:
21:19:56 T:3580  NOTICE: service.xbmc.tts: Control: 306
21:19:57 T:3580  NOTICE: service.xbmc.tts: Control: 32
21:19:57 T:3580  NOTICE: service.xbmc.tts: Control: 305
21:19:57 T:3692   ERROR: Exception in thread TTSThread: SAPI:
                                            Traceback (most recent call last):
                                              File "C:\Program Files\XBMC\system\python\Lib\threading.py", line 808, in __bootstrap_inner
                                                self.run()
                                              File "C:\Program Files\XBMC\system\python\Lib\threading.py", line 761, in run
                                                self.__target(*self.__args, **self.__kwargs)
                                              File "C:\Users\Admin\AppData\Roaming\XBMC\addons\service.xbmc.tts\lib\backends\base.py", line 214, in _handleQueue
                                                self.threadedSay(text)
                                              File "C:\Users\Admin\AppData\Roaming\XBMC\addons\service.xbmc.tts\lib\backends\sapi.py", line 26, in threadedSay
                                                self.SpVoice.Speak(text,1)
                                            COMError: (-2147200958, None, (None, None, None, 0, None))
21:19:57 T:3580  NOTICE: service.xbmc.tts: Control: 300
21:19:58 T:3580  NOTICE: service.xbmc.tts: Control: 8
21:20:15 T:3580  NOTICE: service.xbmc.tts: Control: 300
21:20:20 T:3580  NOTICE: service.xbmc.tts: Control: 0
Any Ideas?

Also, What are the "service.xbmc.tts: Control: 302" messages?

@EDIT - Im sorry this is with Gotham final on win 7 x64.
I made the recommended changes and noticed a couple things.

First, the new listener daemon on the server listens on 8259, not 8256, causing the client to think it isn't running. I edited the file created in .config/ to correct this on the server since editing on the pi was going to be more annoying.

Next I tried the play OSD sounds all the time vs only when media is not running vs never. Interestingly enough when I selected never, the speech stopped until I selected always (as predicted) but then when I tried to play live tv it still did not talk while live tv was going. I noticed on my windows machine it would speak the OSD whether that setting was at its default or whether it was set to always.

I finally found the settings under system that deal with audio output. I did not have time to play with bypass audio or not settings on the pi. I got google tts running, she talks really slow and does not seem to adhere to the speed settings. Is there a way to select a different voice?

I also noticed while the tts addon is active, the pi doesn't seem to respond to yatse trying to gather the pvr data (yatse runs on my phone for remote controlling the tv) that could be because the addon is hitting it hard for polls?
(2014-05-06, 03:53)jhall Wrote: [ -> ]so does this mean if you run the server on a remote machine and select google, the server will run mpg123 -s for you so that you don't have to have mpg123 on the pi?

It will try mpg123, sox and then mplayer.

(2014-05-06, 13:54)jhall Wrote: [ -> ]I made the recommended changes and noticed a couple things.

First, the new listener daemon on the server listens on 8259, not 8256, causing the client to think it isn't running. I edited the file created in .config/ to correct this on the server since editing on the pi was going to be more annoying.

Next I tried the play OSD sounds all the time vs only when media is not running vs never. Interestingly enough when I selected never, the speech stopped until I selected always (as predicted) but then when I tried to play live tv it still did not talk while live tv was going. I noticed on my windows machine it would speak the OSD whether that setting was at its default or whether it was set to always.

I finally found the settings under system that deal with audio output. I did not have time to play with bypass audio or not settings on the pi. I got google tts running, she talks really slow and does not seem to adhere to the speed settings. Is there a way to select a different voice?

I also noticed while the tts addon is active, the pi doesn't seem to respond to yatse trying to gather the pvr data (yatse runs on my phone for remote controlling the tv) that could be because the addon is hitting it hard for polls?

Sorry about the port. That's a mistype. I'll be changing it back.

You can't change anything about Google.

As far as rate with the ttsd backend, not all backends honor that. I'll have to make it hide for those that don't.

I'm not sure about the yatse issue you described. You could try increasing the poll interval in the addon's advanced settings and see if that helps.

(2014-05-06, 07:18)Traker1001 Wrote: [ -> ]Howdy,
I have been getting sapi crashes where the speech will just stop. When that happens the log file shows this. If I press F12 Once to shut it down and then again to restart it the speech will come back up and start speaking, Just that when speech stops I don't know if its just the speech that quite or if the thing locked up.[/php]

Code:
18:51:32 T:2564  NOTICE: section:
18:51:36 T:3508  NOTICE: service.xbmc.tts: Control: 0
18:51:36 T:3508  NOTICE: service.xbmc.tts: Control: 300
18:51:52 T:3508  NOTICE: service.xbmc.tts: Control: 302
18:51:55 T:3508  NOTICE: service.xbmc.tts: Control: 300
18:51:59 T:3508  NOTICE: service.xbmc.tts: Control: 305
18:51:59 T:3308   ERROR: Exception in thread TTSThread: SAPI:
                                            Traceback (most recent call last):
                                              File "C:\Program Files\XBMC\system\python\Lib\threading.py", line 808, in __bootstrap_inner
                                                self.run()
                                              File "C:\Program Files\XBMC\system\python\Lib\threading.py", line 761, in run
                                                self.__target(*self.__args, **self.__kwargs)
                                              File "C:\Users\Admin\AppData\Roaming\XBMC\addons\service.xbmc.tts\lib\backends\base.py", line 214, in _handleQueue
                                                self.threadedSay(text)
                                              File "C:\Users\Admin\AppData\Roaming\XBMC\addons\service.xbmc.tts\lib\backends\sapi.py", line 26, in threadedSay
                                                self.SpVoice.Speak(text,1)
                                            COMError: (-2147200958, None, (None, None, None, 0, None))

and

Code:
21:19:56 T:3580  NOTICE: service.xbmc.tts: Control: 306
21:19:57 T:3580  NOTICE: service.xbmc.tts: Control: 32
21:19:57 T:3580  NOTICE: service.xbmc.tts: Control: 305
21:19:57 T:3692   ERROR: Exception in thread TTSThread: SAPI:
                                            Traceback (most recent call last):
                                              File "C:\Program Files\XBMC\system\python\Lib\threading.py", line 808, in __bootstrap_inner
                                                self.run()
                                              File "C:\Program Files\XBMC\system\python\Lib\threading.py", line 761, in run
                                                self.__target(*self.__args, **self.__kwargs)
                                              File "C:\Users\Admin\AppData\Roaming\XBMC\addons\service.xbmc.tts\lib\backends\base.py", line 214, in _handleQueue
                                                self.threadedSay(text)
                                              File "C:\Users\Admin\AppData\Roaming\XBMC\addons\service.xbmc.tts\lib\backends\sapi.py", line 26, in threadedSay
                                                self.SpVoice.Speak(text,1)
                                            COMError: (-2147200958, None, (None, None, None, 0, None))
21:19:57 T:3580  NOTICE: service.xbmc.tts: Control: 300
21:19:58 T:3580  NOTICE: service.xbmc.tts: Control: 8
21:20:15 T:3580  NOTICE: service.xbmc.tts: Control: 300
21:20:20 T:3580  NOTICE: service.xbmc.tts: Control: 0
Any Ideas?

Also, What are the "service.xbmc.tts: Control: 302" messages?

@EDIT - Im sorry this is with Gotham final on win 7 x64.

I'll see if I can do something about those errors.

The Control messages are for debugging. It's just the ID of the current control.
Added a new version to my repository: 0.0.50.

Get it or the repository from the Downloads Page.

Changes:
  • 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

The speech server is also updated on the downloads page. Fixed the default port.

Speech Server instructions:

The speech server can be run from the command line by executing server.py.
Options can be viewed with server.py -h.
The address and port can be changed with -a and -p respectively.

To save the command line options as defaults in the config file, use -c, for example: server.py -c -a 127.0.0.1 -p 8256
If you want to edit the config file directly use -e. This will open the config file in the default text editor.

On windows, you can run the server as a service. If you need to change the defaults, set them as described above, because you can't pass them as arguments.

To run as a service type the following in a terminal:
Code:
service.py install
service.py start

To stop the service:
Code:
service.py stop

If you need to debug the server as service, make sure you've stopped the service and type:
Code:
service.py debug

This will send stdout to the terminal so you can view logging and errors.
ruuk

I saw the posts about SAPI sometimes crashing last nightand meant to chime in, but fell asleep instead.

I've just had a look at 0.0.50 to see how you're dealing with it, and it seems sensible, with one caveat.

I've noticed that SAPI will assume it's receiving SSML markup if it receives a string that begins with a <, and will get upset if it's not able to parse it as such.

self.SpVoice.Speak('<', 1) for example will consistently raise an exception.

I'm not sure if there are any other edge cases like this, but I wanted to bring this to your attention a day or so ago so you could work around it accordingly.

I've worked around it in the perl server by adding an optional POST variable called "ssml". If it's set to non-zero, then the perl server will do no processing of the text and hand it straight to SAPI. If it's not set/set to 0, it'll do a search replace of < and > with the literal strings of "less than"/"greater than"..

It's a little bit of a kludge, but I didn't really want to faff around with properly formatting the posted text as valid SSML, escaping special characters, etc, so I think this was the easiest compromise.

Might be worth changing your code to something more like this:
Code:
try:
            self.SpVoice.Speak(text,1)
        except self.COMError:
            util.ERROR('COMError: RESETTING SAPI',hide_tb=True)
            self.resetSAPI()
            try:
                self.SpVoice.Speak(text,1)
            except self.COMError:
                util.ERROR('COMError: Post-reset SAPI error for text: "%s"' % (text),hide_tb=True)
                return False

Hope this is helpful for you

Thanks again for all your time and effort on this. It really feels like we're approaching a milestone.
Hi,
is it working on android devices?
Thanks
(2014-05-07, 05:13)eckythump Wrote: [ -> ]I've noticed that SAPI will assume it's receiving SSML markup if it receives a string that begins with a <, and will get upset if it's not able to parse it as such.

self.SpVoice.Speak('<', 1) for example will consistently raise an exception.

I'm not sure if there are any other edge cases like this, but I wanted to bring this to your attention a day or so ago so you could work around it accordingly.
Thanks for bringing that to my attention. My fix wasn't meant to be a actual fix. Since the COMError tells me nothing about what was going on, I thought I'd try this out to see what happened. For some reason it didn't occur to me that it could be the text itself, though I hope that the fact that didn't stop the error would have given me a clue.
I'll fix it soon.

(2014-05-07, 19:19)patria o muerte Wrote: [ -> ]Hi,
is it working on android devices?
Thanks

Not directly yet, but this is planned. It will work through the speech server running on another computer though.
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30