[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Search]
ViaVoice Stability Success was Re: SourceForge CVS
- To: tcross@xxxxxxxxxxx
- Subject: ViaVoice Stability Success was Re: SourceForge CVS
- From: "T. V. Raman" <raman@xxxxxxxxxxx>
- Date: Tue, 16 May 2006 06:07:20 -0700
- Delivered-To: priestdo@xxxxxxxxxxx
- Delivered-To: emacspeak@xxxxxxxxxxx
- In-Reply-To: <17513.36711.213493.457799@xxxxxxxxxxx>
- List-Help: <mailto:emacspeak-request@xxxxxxxxxxx?subject=help>
- List-Post: <mailto:emacspeak@xxxxxxxxxxx>
- List-Subscribe: <mailto:emacspeak-request@xxxxxxxxxxx?subject=subscribe>
- List-Unsubscribe: <mailto:emacspeak-request@xxxxxxxxxxx?subject=unsubscribe>
- Old-Return-Path: <tvraman@xxxxxxxxxxx>
- Reply-To: raman@xxxxxxxxxxx
- Resent-Date: Tue, 16 May 2006 09:14:09 -0400 (EDT)
- Resent-From: emacspeak@xxxxxxxxxxx
- Resent-Message-ID: <rdD7m.A.11B.hAdaEB@xxxxxxxxxxx>
- Resent-Sender: emacspeak-request@xxxxxxxxxxx
For newer Viavoices you should *not* use the eci.ini in the
emacspeak distrib; you should be using the one the RPMs place in
/var/...
and for this you should set env var ECIINI
appropriately; I have it set to
/var/opt/IBM/ibmtts/cfg/eci.ini
if you use the older eci.ini with the new engine, you will see
unpredictable behavior because I believe there were some changes
to voice params and possibly to phonemes as well.
>>>>> "Tim" == Tim Cross <tcross@xxxxxxxxxxx> writes:
Tim> Hi Lukas, Yes, there are some characters which will
Tim> crash ViaVoice every time. Actually, I was thinking
Tim> about these today as I'd forgotten I was going to put a
Tim> filter in the script to remove them prior to them being
Tim> passed to ViaVoice. I thought I'd kept a copy, but
Tim> cannot find one. Do you still have the two sequences as
Tim> I cannot quite remember what they were. I'll put a regex
Tim> in the cleanup function of outloud and send a patch to
Tim> Raman.
Tim>
Tim> With respect to stability - I'm totally blown away at
Tim> how stable ViaVoice is on both my systems now. I've been
Tim> running this one from home now for over a day without a
Tim> single crash! The one at work ran all day today without
Tim> a single crash as well. The things I did were
Tim>
Tim> 1. Changed the call in atcleci.cpp to the one using _max
Tim> (I've not done a CVS update, but believe Raman has fixed
Tim> this in the CVS version.
Tim>
Tim> 2. Used a simple utility which gave me some of my cards
Tim> HW parameters and set my .asoundrc file based on some of
Tim> the values from that. I will post that utility to the
Tim> list once I've cleaned it up and made it a bit more user
Tim> friendly.
Tim>
Tim> 3. Replaced the eci.ini file which is in the
Tim> linux_outloud directory with one I generated using the
Tim> inigen utility which comes with Viavoice. I suspect this
Tim> may have contributed to the stability of the system. the
Tim> command for producing the eci.ini file is
Tim>
Tim> /opt/IBM/ibmtts/bin/inigen /opt/IBM/ibmtts/lib/eng50.so
Tim> /tmp
Tim>
Tim> This will put a new eci.ini file in the /tmp directory,
Tim> which I then copied to the linux-outloud directory. Note
Tim> that as I'm using the english british version, the
Tim> shared library is eng50.so. If your using the US english
Tim> version, it is enu50.so. The format of the eci.ini file
Tim> created this way is slightly different from the one in
Tim> the linux-outloud directory, which looks like one from
Tim> the older ViaVoice version. The header looks like
Tim>
Tim> [1.1] Path=/opt/IBM/ibmtts/lib/eng50.so Version=5.0
Tim> Concatenative=1.0 CallbackFlag=0x3f ... ...
Tim>
Tim> The header of the older eci.ini file is
Tim>
Tim> [1.0] Path=enu50.so Version=5.0 ... ...
Tim>
Tim> to what extent this affects stability I don't know for
Tim> sure yet. I will do some experiments and see. However,
Tim> the different header number and 'CallbackFlag are
Tim> interesting.
Tim>
Tim> Anyway, hope this helps others get ViaVoice very
Tim> stable. I cannot believe how well this is working now -
Tim> its the most reliable solid and responsive software TTS
Tim> I've had so far. I'm even finding character echo is
Tim> keeping up with my typing better than any of the other
Tim> TTS engines I've used. I'm using an emacspeak "speed" of
Tim> 95.
Tim>
Tim> Tim
Tim>
Tim> Lukas Loehrer writes:
>>
>> I have had some difficulties producing meaninful
>> backtraces from the outloud crashes apparently because the
>> libibmeci.so file is loaded dynamically. I had to first
>> run the outloud tcl script in gdb and then load the core
>> file. I do not fully trus those backtraces. I will try to
>> get to the bottom of this when I have time.
>>
>> On the other hand, I know for a fact that there are
>> certain strings that crash viavoice in a reproducible
>> way. There was some clown a few weeks ago on the
>> blindcooltech mailing list that was sending mails with
>> those strings in the subject line to crash eloquence on
>> windows which is apparently the same as viavoice because
>> those strings also crashed viavoice under linux
>> immediately. I am only saying this to make the point that
>> viavoice itself may not be so rock solid after all. That
>> said, I still use it and like it much better then flite
>> because it speaks slightly clearer at high speeds and it
>> gives me multilingual support. This is worth some crashes
>> every now and then.
>>
>> Best regards, Lukas
>>
>> T. V. Raman writes ("Re: SourceForge CVS"):
>> >
>> > and no offence taken, I was just pointing out where it
>> came from.
>> >
>> > The current version does the safe thing by trying the
>> call that > one should use, followed by the call that one
>> needs to use.
>> >
>> > Incidentally I also believe you're incorrect in
>> repeatedly > asserting that Viavoice TTS engine has the
>> bugs; that code has > been running a long time in many
>> different environments, and it's > safe to assume that it
>> in fact is not the source of the bugs. The > bugs are in
>> the Linux sound layer which has always been a >
>> second-class citizen on Linux; alsa does a little better
>> in this > regard, but it still has a long way to go
>> >
>> > >>>>> "Lukas" == Lukas Loehrer <listaddr1@xxxxxxxxxxx>
>> writes: > Lukas> I apologize for being a bit slobby in my
>> previous > Lukas> mail. I was refering to the version of
>> atcleci.cpp > Lukas> that Tim mentioned in his initial
>> post (version > Lukas> 21.39), in particular to the call
>> on line 235, which > Lukas> is actually > Lukas> > Lukas>
>> snd_pcm_hw_params_get_buffer_time > Lukas> > Lukas> and is
>> already changed to the _max version in the > Lukas>
>> current CVS (21.43). Anyway, no offence was meant at >
>> Lukas> any time. > Lukas> > Lukas> Best regards, Lukas >
>> Lukas> > Lukas> T. V. Raman writes ("Re: SourceForge
>> CVS"):
>> > >>
>> > >> For the record, the alsa config code in the emacspeak
>> > >> server is taken from the examples that are in the
>> doxygen > >> directory of alsa-lib --- so any bugs there
>> are not mine > >> but directly descended from Alsa
>> > >>
>> > >> >>>>> "Lukas" == Lukas Loehrer <listaddr1@xxxxxxxxxxx>
>> writes: > Lukas> Hi Tim, A utility for checking out card
>> parameters > Lukas> will certainly be useful to many
>> peaple here. > Lukas> > Lukas> I believe that the
>> apparently superfluous tests in > Lukas> alsa_configure
>> are to do automatic parameter selection > Lukas> by
>> default and if that fails, the user can initialize >
>> Lukas> some of the variables to a non-zero value and the >
>> Lukas> automatic setting will be skipped. The use of the >
>> Lukas> snd_pcm_get_period_time function in the place it is
>> > Lukas> currently used is most likely a bug however. >
>> Lukas> > Lukas> I also have one machine where the period
>> size is by > Lukas> default 16, which is far too low for a
>> buffer size for > Lukas> the eci callback
>> (chunk_size). Choosing chunk_size as > Lukas> a multiple
>> of the cards period size and about a > Lukas> quarter of
>> the alsa buffer size has given me good > Lukas>
>> results. As we ar using interlieaved mode, I believe >
>> Lukas> that the actual value of the period size is not
>> that > Lukas> important. > Lukas> > Lukas> By the way, I
>> believe that most crashes I see are due > Lukas> to bugs
>> in the ViaVoice speech synthesis code. I have > Lukas>
>> been recording the communication between emacspeak and >
>> Lukas> outloud to see what could trigger the crashes but
>> have > Lukas> not yet been able to draw any meaningful
>> conclusions. > Lukas> > Lukas> Best regards, Lukas >
>> Lukas> > >> >> Hi Lukas, > > > Lukas> Thanks for that, you
>> saved me a bit of time. In fact, > Lukas> after a little >
>> thought and a bit of judicious > Lukas> scanning of the
>> alsa docs (I'm new to > alsa), plus a > Lukas> little very
>> simple utility program I wrote to dump out > Lukas> > my
>> cards hw parameters, I've managed to get things > Lukas>
>> working really well > >> >> in just over an hours work
>> over lunch. > > Here is > >> what >> I've > Lukas>
>> discovered: > > The snd_pcm_hw_params_get_buffer_time >
>> Lukas> will work if you have saved your > earlier settings
>> > Lukas> prior to calling it. I believe what is happening
>> is > > Lukas> that once you have selected the mode,
>> format, rate > Lukas> etc, then the call > will work. I
>> guess by the time > Lukas> you have selected the other
>> parameters, > the possible > Lukas> buffer size choices
>> have been constrained enough for > Lukas> the > function
>> to identify a specific size. > > >> >> I guess we could
>> do one of two things. Put a call to > >> set >> the > >
>> Lukas> parameters prior to calling this function or test
>> the > Lukas> return code from > >> >>
>> snd_pcm_hw_params_get_buffer_time and if its less than >
>> >> 0 >> then call > > Lukas>
>> snd_pcm_hw_params_get_buffer_time_max. The problem >
>> Lukas> with the second > solution, as you pointed out, is
>> > Lukas> that you may end up with an overly > large buffer
>> and > Lukas> get underruns etc. However, I did notice the
>> result > > Lukas> from calling the function after having
>> set and saved > Lukas> the earlier > values seems very
>> small (16), especially > Lukas> when compared tot he max
>> value. > > Something I did > Lukas> notice when looking
>> at the code is there are a couple > Lukas> > of if
>> statements which don't appear to be really > Lukas> doing
>> anything - I'm > guessing they are an artifact > Lukas>
>> from when Raman was developing the code. > For > Lukas>
>> example > > if (buffer_time == 0 && buffer_frames == >
>> Lukas> 0) { > > both buffer_time and buffer_frames are >
>> Lukas> initialized to 0 and this is > the first time they
>> are > Lukas> referenced, so the test is always true. I've
>> > not > Lukas> removed them yet, but unless I'm missing
>> something, > Lukas> there doesn't > seem to be any reason
>> for them to be > Lukas> there. > > I wrote a very simple
>> utility which dumps > Lukas> out my cards hardware >
>> settings. Using the values > Lukas> from this, I created a
>> new .asoundrc file > which > Lukas> appears to have fixed
>> all my underrun problems. I'm > Lukas> going to > clean it
>> up a bit and send it to the list > Lukas> just in case
>> someone else > finds it useful. > > One > Lukas> very
>> good thing about the new atcleci.cpp code is that > Lukas>
>> it seems *a > lot* more stable. In fact, rather than >
>> Lukas> the server dying every few > minutes, it has not
>> died > Lukas> for me in nearly an hour so far. I'm
>> thinking > this > Lukas> could be due to your suggested
>> additions to add the > Lukas> functions to > free up
>> resources correctly - the > Lukas> crashes could have been
>> due to > resource > Lukas> limitations. At any rate, its
>> working remarkably well > Lukas> now. > > >> >> Another
>> interesting discovery I made is that the > >> ViaVoice >>
>> eci.ini > Lukas> file > appears to be slightly different
>> in current > Lukas> versions than the older > one. I
>> decided to generate a > Lukas> new one using the initgen
>> utility just to > check > Lukas> there had been no changes
>> in later versions of > Lukas> ViaVoice. The one >
>> generated by initgen has some > Lukas> extra header fields
>> not in the original > i.e. > > > Lukas> [1.1] >
>> Path=/opt/IBM/ibmtts/lib/eng50.so > > Lukas> Version=5.0 >
>> Concatenative=1.0 > CallbackFlag=0x3f > > Lukas> ... >
>> ... > > regards, > > Tim > > > Lukas>
>> -----------------------------------------------------------------------------
>> > >> >> To unsubscribe from the emacspeak list or change
>> your > >> >> address on the emacspeak list send mail to >>
>> > >> "emacspeak-request@xxxxxxxxxxx" with a subject of
>> >> > >> "unsubscribe" or "help" > > Lukas> > Lukas>
>> -----------------------------------------------------------------------------
>> > Lukas> To unsubscribe from the emacspeak list or change
>> your > Lukas> address on the emacspeak list send mail to >
>> Lukas> "emacspeak-request@xxxxxxxxxxx" with a subject of
>> > Lukas> "unsubscribe" or "help"
>> > >>
>> > >> --
>> > >> Best Regards, --raman
>> > >>
>> > >>
>> > >> Email: raman@xxxxxxxxxxx WWW: > >>
>> http://emacspeak.sf.net/raman/ AIM: emacspeak GTalk: > >>
>> tv.raman.tv@xxxxxxxxxxx PGP: > >>
>> http://emacspeak.sf.net/raman/raman-almaden.asc Google: >
>> >> tv+raman IRC: irc://irc.freenode.net/#emacs
>> > >>
>> > Lukas>
>> > >> -----------------------------------------------------------------------------
>> > To unsubscribe from the emacspeak list or change your
>> address on > Lukas> the emacspeak list send mail to >
>> Lukas> "emacspeak-request@xxxxxxxxxxx" with a subject of
>> > Lukas> "unsubscribe" or "help"
>> >
>> > --
>> > Best Regards, > --raman
>> >
>> >
>> > Email: raman@xxxxxxxxxxx > WWW:
>> http://emacspeak.sf.net/raman/ > AIM: emacspeak GTalk:
>> tv.raman.tv@xxxxxxxxxxx > PGP:
>> http://emacspeak.sf.net/raman/raman-almaden.asc > Google:
>> tv+raman > IRC: irc://irc.freenode.net/#emacs
>> >
>>
>> -----------------------------------------------------------------------------
>> To unsubscribe from the emacspeak list or change your
>> address on the emacspeak list send mail to
>> "emacspeak-request@xxxxxxxxxxx" with a subject of
>> "unsubscribe" or "help"
>>
Tim>
>> -----------------------------------------------------------------------------
To unsubscribe from the emacspeak list or change your address on
Tim> the emacspeak list send mail to
Tim> "emacspeak-request@xxxxxxxxxxx" with a subject of
Tim> "unsubscribe" or "help"
--
Best Regards,
--raman
Email: raman@xxxxxxxxxxx
WWW: http://emacspeak.sf.net/raman/
AIM: emacspeak GTalk: tv.raman.tv@xxxxxxxxxxx
PGP: http://emacspeak.sf.net/raman/raman-almaden.asc
Google: tv+raman
IRC: irc://irc.freenode.net/#emacs
-----------------------------------------------------------------------------
To unsubscribe from the emacspeak list or change your address on the
emacspeak list send mail to "emacspeak-request@xxxxxxxxxxx" with a
subject of "unsubscribe" or "help"
Emacspeak Files |
Subscribe |
Unsubscribe | Search