Re: KSpeech

2014-03-10 Thread Frederik Gladhorn
Torsdag 6. mars 2014 20.34.05 skrev Christoph Feck:
 On Thursday 06 March 2014 17:13:19 Jeremy Whiting wrote:
  On Thu, Mar 6, 2014 at 6:43 AM, Frederik Gladhorn gladh...@kde.org
 
 wrote:
   Onsdag 5. mars 2014 23.04.12 skrev Jeremy Whiting:
   3. user configurability (As a user I can't set up which voice I
   would like all speech-using applications to use)
   
   As with other Qt libs, this is more for the platform to set up.
   Currently qtspeech uses whatever voice is selected system wide
   (aka the default). I think that is the right approach - follow
   what we get from the platform. For KDE I'd thus suggest creating
   a configuration module which lets the user choose the platform
   defaults.
  
  Yeah, each platform could have its own configuration of the
  defaults sure, the only part missing is a real-time configuration
  change. For example if Jovie is reduced to a kcm to configure
  speech-dispatcher's default voice and I start listening to a pdf
  from okular or something and decide I need the pitch to be lower,
  changing the default voice wont change the voice that
  speech-dispatcher is already using to read the pdf.  Maybe that
  could be fixed with a patch to speech-dispatcher to accept
  immediate default changes though, I'll have to think about that.
 
 Let me refer to http://www.w3.org/TR/2011/WD-css3-speech-20110419/
 which defines attributes a web page can use to influence speech. Would
 be nice if we had API supporting web speech.

This is interesting in that different synths have already some sort of support 
for this.

 
 Regarding voice selection, it would be very useful to allow the
 application to specify female/male/child voice via API (in addition to
 the ability to let the user reconfigure actual voices). Similar to
 letting the application request Sans, Sans Serif, and Monospaced font.

 For example, when generating different voices while reading out e-book
 stories.


Makes sense. I'd like to get an overview over the native APIs first.
Let's collect their capabilities and then try to come up with a sensible 
compromise.
Feel free to gather data here:
http://qt-project.org/wiki/QtSpeech

Cheers,
Frederik

 
 Christoph Feck (kdepepo)

___
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel


Re: KSpeech

2014-03-06 Thread Frederik Gladhorn
Onsdag 5. mars 2014 23.04.12 skrev Jeremy Whiting:
 Took a quick read through that just now and it looks pretty promising
 from what I saw. I guess I don't know my way around gerrit very well
 because I couldn't see a place to comment on the code like
 reviewboard.
 Really the only difference between jovie and that class are the following:
 1. jovie has some old code and ui to control jobs at a fine grain that
 spd doesn't expose really well, so I left it out when I ported ktts to
 spd.

I would like to expose voices and languages in a sensible fashion. This is 
tricky to get right cross-platform. I started with something on Linux but 
decided to implement other backends first before attempting to implement voice 
selection.
For language/locale I think qtspeech should default to the system locale and 
let the user select a different one.

 2. user defined filters with some sane/useful defaults (if we were to
 use QtSpeech for kde notifications, set konvi to speak all messages,
 there's not a way to let the user say change jpwhiting fregl: you
 rock into jpwhiting says fregl you rock)

Maybe. I'd rather keep qtspeech very simple. My goals where to make it a tiny 
library that is lean, fast and async by using signals and slots.
I want it to be good enough to be used in apps that use voice navigation, but 
also when writing a screen reader. Some level of configuration is required in 
any case. Let's come up with a good api that makes sense across platforms, 
then I'm in.

 3. user configurability (As a user I can't set up which voice I would
 like all speech-using applications to use)

As with other Qt libs, this is more for the platform to set up. Currently 
qtspeech uses whatever voice is selected system wide (aka the default). I 
think that is the right approach - follow what we get from the platform. 
For KDE I'd thus suggest creating a configuration module which lets the user 
choose the platform defaults.

 4. dbus, though this isn't as important if each application that uses
 speech links to the library and speech-dispatcher or the system apis
 do the async for us already anyway as you said.
I don't see a point in adding dbus into the mix indeed. One thing that is 
interesting though is what kind of effect you get when opening the speech 
backend from two apps at the same time.

 Items 1 and 4 will be irrelevant in a KF5 world but I'm wondering how
 2 and 3 could be added either to qtspeech itself or as a kspeech
 library that wraps qtspeech for kde applications to use.
 
 Any thoughts on that? I would be pretty interested in helping with
 qtspeech if it greatly simplifies or even deprecates jovie as it looks
 like it could do possibly.

I'd be more than happy to get contributions of course. I cannot promise much 
from my side, of course I'd like to continue working on this project as time 
permits (so far it really is a spare time thing).

Greetings,
Frederik


 Jeremy
 
 On Wed, Mar 5, 2014 at 12:29 PM, Frederik Gladhorn gladh...@kde.org wrote:
  On Tuesday 4. March 2014 16.43.10 Jeremy Whiting wrote:
  Hello all, I've realized a bit ago that kspeech was not included in
  
  the kdelibs split (probably because it was in staging at the time and
  
  didn't conform to the other framework policies yet). I've cleaned it
  
  up a bit and put it in my scratch space, but have some architectural
  
  questions about it before I make it a proper framework.
  
  
  
  1. The KSpeech dbus interface is old and showing its age. Many of the
  
  methods are no longer implemented in the application itself since it
  
  was ported to speech-dispatcher. One thing I would definitely like to
  
  do is clean up/remove methods that aren't implemented currently (and
  
  possibly re add some later on if speech-dispatcher gets better/more
  
  support for job control, etc.) So the question about this is is KF5
  
  time a good time to drop/clean up the dbus interface?
  
  
  
  2. The KSpeech interface that was in kdelibs/interfaces is just that a
  
  dbus interface only. I would like to make it a proper
  
  library/framework with a QObject based class for talking to Jovie (the
  
  application that implements the KSpeech dbus interface) and wonder if
  
  other things such as what's currently in jovie/libkttsd should be in
  
  the kspeech library also. If I move code from jovie into libkspeech
  
  (or merge kspeech interface into libkttsd and make libkttsd a
  
  framework likely renamed to libkspeech since libkttsd isn't a public
  
  library anyway and has the old ktts name) what's the best way to
  
  preserve the history of both the kspeech interface and libkttsd
  
  sources. Didn't the plasma or kde-workspaces split do something fancy
  
  with git where old history pointed to the old git repo somehow?
  
  Along with this, if libkspeech is defining the kspeech dbus interface
  
  and has a class to talk to that interface, does the interface still
  
  need to be in servicetypes like the 

Re: KSpeech

2014-03-06 Thread Jeremy Whiting
On Thu, Mar 6, 2014 at 6:43 AM, Frederik Gladhorn gladh...@kde.org wrote:
 Onsdag 5. mars 2014 23.04.12 skrev Jeremy Whiting:
 Took a quick read through that just now and it looks pretty promising
 from what I saw. I guess I don't know my way around gerrit very well
 because I couldn't see a place to comment on the code like
 reviewboard.
 Really the only difference between jovie and that class are the following:
 1. jovie has some old code and ui to control jobs at a fine grain that
 spd doesn't expose really well, so I left it out when I ported ktts to
 spd.

 I would like to expose voices and languages in a sensible fashion. This is
 tricky to get right cross-platform. I started with something on Linux but
 decided to implement other backends first before attempting to implement voice
 selection.
 For language/locale I think qtspeech should default to the system locale and
 let the user select a different one.

Using the system locale as default makes sense. What do you mean by
voices you mean something like spd's voice type (male1, male2,
female1, etc.)
Ktts had a complex system of specifying a voice with xml with
language, voice type, speed, pitch, etc. attributes and if an
attribute was empty it meant any voice with the other attributes was
acceptable. I think that's a bit too fine-grained for most cases
though, most uses I can think of just want to choose the voice type,
or even just the gender, and let the user/defaults choose the rest.
If more complex specification is wanted applications could always use
ssml to change the voice as part of the text they send to qtspeech.


 2. user defined filters with some sane/useful defaults (if we were to
 use QtSpeech for kde notifications, set konvi to speak all messages,
 there's not a way to let the user say change jpwhiting fregl: you
 rock into jpwhiting says fregl you rock)

 Maybe. I'd rather keep qtspeech very simple. My goals where to make it a tiny
 library that is lean, fast and async by using signals and slots.
 I want it to be good enough to be used in apps that use voice navigation, but
 also when writing a screen reader. Some level of configuration is required in
 any case. Let's come up with a good api that makes sense across platforms,
 then I'm in.

Right, simple is definitely good. I'm just wondering if it could
accept plugins that implement some filtering method to filter the
text. Then filters could be as simple as a regex to convert
xml/html/etc. text into something that makes sense audibly like that
example from irc, or a complex filter plugin to change the voice could
inject ssml into the text. Maybe something like

QAbstractSpeechFilter {
  public:
virtual QString filterText(QString text)
};

Then a simple filtermanager (or even part of the existing class) loads
the plugins and when say() is called it passes the text through all
the plugins filterText() methods.

Is there some other Qt library or class that takes plugins for
specific functionality we could use as inspiration for making this
work and look clean also?


 3. user configurability (As a user I can't set up which voice I would
 like all speech-using applications to use)

 As with other Qt libs, this is more for the platform to set up. Currently
 qtspeech uses whatever voice is selected system wide (aka the default). I
 think that is the right approach - follow what we get from the platform.
 For KDE I'd thus suggest creating a configuration module which lets the user
 choose the platform defaults.

Yeah, each platform could have its own configuration of the defaults
sure, the only part missing is a real-time configuration change. For
example if Jovie is reduced to a kcm to configure speech-dispatcher's
default voice and I start listening to a pdf from okular or something
and decide I need the pitch to be lower, changing the default voice
wont change the voice that speech-dispatcher is already using to read
the pdf.  Maybe that could be fixed with a patch to speech-dispatcher
to accept immediate default changes though, I'll have to think about
that.

 4. dbus, though this isn't as important if each application that uses
 speech links to the library and speech-dispatcher or the system apis
 do the async for us already anyway as you said.
 I don't see a point in adding dbus into the mix indeed. One thing that is
 interesting though is what kind of effect you get when opening the speech
 backend from two apps at the same time.

 Items 1 and 4 will be irrelevant in a KF5 world but I'm wondering how
 2 and 3 could be added either to qtspeech itself or as a kspeech
 library that wraps qtspeech for kde applications to use.

 Any thoughts on that? I would be pretty interested in helping with
 qtspeech if it greatly simplifies or even deprecates jovie as it looks
 like it could do possibly.

 I'd be more than happy to get contributions of course. I cannot promise much
 from my side, of course I'd like to continue working on this project as time
 permits (so far it really is a 

Re: KSpeech

2014-03-05 Thread Kevin Ottens
Hello,

On Tuesday 04 March 2014 16:43:10 Jeremy Whiting wrote:
 I've realized a bit ago that kspeech was not included in
 the kdelibs split (probably because it was in staging at the time and
 didn't conform to the other framework policies yet). I've cleaned it
 up a bit and put it in my scratch space, but have some architectural
 questions about it before I make it a proper framework.
 
 1. The KSpeech dbus interface is old and showing its age. [...]
 
 2. The KSpeech interface that was in kdelibs/interfaces is just that a
 dbus interface only. [...]

I think that's mainly why it wasn't moved over so far... if you do all that 
it's pretty much an almost completely new thing. So from my perspective feel 
free to clean it up, turn it in a proper framework etc. That said, because of 
the work it probably means targeting KF 5.1 to include it in the list again.

Regards.
-- 
Kévin Ottens, http://ervin.ipsquad.net

KDAB - proud supporter of KDE, http://www.kdab.com


signature.asc
Description: This is a digitally signed message part.
___
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel