Ticket #105 (closed task: fixed)

Opened 2 years ago

Last modified 2 years ago

New Driver for an Italian commercial Synthesizer named Audiologic Tts3

Reported by: GianBrix Owned by: jteh
Priority: minor Milestone: 2009.1
Component: Synth drivers Version: development
Keywords: Cc:
Operating system: Blocked by:
Blocking:

Description

Here is the first version of the driver writen to let Audiologic Tts3 work with NVDA. This is an Italian commercial product. Inflection, Speed, Pitch, Volume and indexing are implemented. The only disadvantage is that inflection is stored by steps of one and this does not permit the whole representation of percentages values.

Attachments

DriverAudiologic.zip Download (2.3 KB) - added by GianBrix 2 years ago.

Change History

follow-up: ↓ 3   Changed 2 years ago by jteh

  • status changed from new to accepted
  • owner changed from GianBrix to jteh
  • version changed from 0.5 to trunk

Comments:

  • There is no need to include the .pyc files in the archive.
  • In _audiologic.TtsGetProsody?(), you assign the parameters to a global. Why? Since this must be called every time to refresh the parameters anyway, it would be better to return the parameters. This does mean you have to instantiate parameters each time, but this isn't a big issue. The same applies to TtsGetStatus?().
  • In some methods of audiologic.py, spaces have been used instead of tabs for indentation. See, for example, SynthDriver.initialize(). For NVDA code, tabs are preferred.
  • Remove the comments above the SynthDriver methods; e.g. speakText(). These comments are only needed in the base synth. In fact, these should actually be docstrings; we need to fix that. :)
  • I notice you've created an inflection variable, but used upper case i to differentiate it. This is probably best avoided. That should be a private variable, so call it self._inflection. However, this may be a moot point anyway; see below.
  • I'm going to introduce a resolution or step for numeric synth settings, which will fix your inflection issue. After that, you won't need that variable.

  Changed 2 years ago by jteh

  • r2125 moves the SynthDriver base class to synthDriverHandler.SynthDriver. You should now sub-class this instead of silence.SynthDriver.
  • r2128 introduces minimum step values for numeric settings. You can now set inflectionMinStep = 10. This means you should no longer need your private Inflection variable.
  • All other comments still apply.

Changed 2 years ago by GianBrix

in reply to: ↑ 1   Changed 2 years ago by GianBrix

Replying to jteh:

Comments:
* There is no need to include the .pyc files in the archive.

ok...sorry!

* In _audiologic.TtsGetProsody?(), you assign the parameters to a global. Why? Since this must be called every time to refresh the parameters anyway, it would be better to return the parameters. This does mean you have to instantiate parameters each time, but this isn't a big issue. The same applies to TtsGetStatus?().

changed now.

* In some methods of audiologic.py, spaces have been used instead of tabs for indentation. See, for example, SynthDriver.initialize(). For NVDA code, tabs are

preferred.
modified: removed spaces and replaced with tabs

* Remove the comments above the SynthDriver methods; e.g. speakText(). These comments are only needed in the base synth. In fact, these should actually be docstrings; we need to fix that. :)

Done.

* I notice you've created an inflection variable, but used upper case i to differentiate it. This is probably best avoided. That should be a private variable, so call it self._inflection. However, this may be a moot point anyway; see below.
* I'm going to introduce a resolution or step for numeric synth settings, which will fix your inflection issue. After that, you won't need that variable.

Removed self.Inflection and added the new inflectionMinStep together with pitchMinstep and volumeMinStep.

follow-up: ↓ 5   Changed 2 years ago by jteh

What is the status of this? You haven't attached the new driver yet.

in reply to: ↑ 4 ; follow-up: ↓ 6   Changed 2 years ago by GianBrix

Replying to jteh:

What is the status of this? You haven't attached the new driver yet.

sorry... probably it was not the correct way, but I had replaced the existing one. So the zip file attached is the correct one.

in reply to: ↑ 5   Changed 2 years ago by jteh

Replying to GianBrix:

sorry... probably it was not the correct way, but I had replaced the existing one. So the zip file attached is the correct one.

It was most definitely the correct way. My apologies; I forgot that Trac doesn't send out emails for attachment changes and somehow missed it when I was scanning the comments.

  Changed 2 years ago by jteh

  • status changed from accepted to closed
  • resolution set to fixed

Committed in r2175. Some final notes:

  • I fixed a few indenting errors, removed the hasIndexing variable (which isn't used anywhere) and removed the wait parameter to the speak functions, which has been removed (see #117).
  • I changed a use of "<>" to "!=", as "<>" is deprecated and will be removed in Python 3.
  • In audiologic.SynthDriver.speakText, you were using "".join to join two strings. I simplified this to just use percent formatting to include the second string. You could also concatenate the two strings with the plus operator; e.g. "blah"+text.
Note: See TracTickets for help on using tickets.