Your message dated Wed, 04 Jul 2007 17:17:03 +0000
with message-id <[EMAIL PROTECTED]>
and subject line Bug#427550: fixed in festival 1.4.3-20
has caused the attached Bug report to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere.  Please contact me immediately.)

Debian bug tracking system administrator
(administrator, Debian Bugs database)

--- Begin Message ---
Package: festival
Version: 1.4.3-17.2
Severity: normal
Tags: patch

Hi,

the current way of extending festival's list of known languages in
languages.scm is broken. The functions male1, male2, female1 etc.
that get defined in the language_* functions only work once due to
autoloading tricks.

An example with the britishenglish language:

# apt-get install festival festvox-rablpc16k festvox-don
[...]
% festival --language britishenglish
Festival Speech Synthesis System 1.4.3:release Jan 2003
Copyright (C) University of Edinburgh, 1996-2003. All rights reserved.
For details type `(festival_warranty)'
festival> (male2); male1 was automatically activated first
don_diphone
festival> (male1)
SIOD ERROR: autoload: 
"/usr/share/festival/voices/english/rab_diphone/festvox/rab_diphone.scm" does 
not define voice_rab_diphone 
festival> (male2)
SIOD ERROR: autoload: 
"/usr/share/festival/voices/english/don_diphone/festvox/don_diphone.scm" does 
not define voice_don_diphone 

The situation is the same at least with the Italian and the Finnish
voices (although the Finnish female1 definition needs s/suo_lj/suo_fi_lj,
which I will file a separate bug about.)

This happens because the voice_* functions are autoloaded by a temporary
function that verifies that the autoload was succesful by comparing the
original voice_* function to the one after the autoload.  Unfortunately,
the male1, male2 etc. functions each refer to the temporary function
rather than the real one. The function doesn't change anymore after the
second call, resulting in an error.

Consider:

% festival --language britishenglish
Festival Speech Synthesis System 1.4.3:release Jan 2003
Copyright (C) University of Edinburgh, 1996-2003. All rights reserved.
For details type `(festival_warranty)'
festival> male2 ; look at the autoload function definition
#<CLOSURE n (let ((me voice_don_diphone)) (require 
"/usr/share/festival/voices/english/don_diphone/festvox/don_diphone") (if (eq 
me voice_don_diphone) (error (string-append "autoload: \"" 
"/usr/share/festival/voices/english/don_diphone/festvox/don_diphone" ".scm\" 
does not define " (quote voice_don_diphone)))) (apply voice_don_diphone n))>
festival> voice_don_diphone ; an alias of the above
#<CLOSURE n (let ((me voice_don_diphone)) (require 
"/usr/share/festival/voices/english/don_diphone/festvox/don_diphone") (if (eq 
me voice_don_diphone) (error (string-append "autoload: \"" 
"/usr/share/festival/voices/english/don_diphone/festvox/don_diphone" ".scm\" 
does not define " (quote voice_don_diphone)))) (apply voice_don_diphone n))>
festival> (male2) ; actually activate the voice
don_diphone
festival> male2 ; still the original autoload function definition
#<CLOSURE n (let-internal (me) (voice_don_diphone) (begin (require 
"/usr/share/festival/voices/english/don_diphone/festvox/don_diphone") (if (eq 
me voice_don_diphone) (error (string-append "autoload: \"" 
"/usr/share/festival/voices/english/don_diphone/festvox/don_diphone" ".scm\" 
does not define " (quote voice_don_diphone)))) (apply voice_don_diphone n)))>
festival> voice_don_diphone ; the actual voice is now loaded
#<CLOSURE nil (begin "(voice_don_diphone)
  Set up the current speaker to be British male RP speaker, LPC Donovan 
  diphones."
[...]
festival> (male2) ; second activation fails
SIOD ERROR: autoload: 
"/usr/share/festival/voices/english/don_diphone/festvox/don_diphone.scm" does 
not define voice_don_diphone

The proposed fix is to define the male1, male2 etc. helper functions so
that the function they call is evaluated at runtime. This works for me:

--- languages.scm       2006-09-03 18:23:12.000000000 +0300
+++ languages.scm-fixed 2007-06-04 22:46:15.000000000 +0300
@@ -45,8 +45,8 @@
   (require 'voices)
   ;;  Will get more elaborate, with different choices of voices in language
 
-  (set! male1 voice_rab_diphone)
-  (set! male2 voice_don_diphone)
+  (set! male1 (lambda () (voice_rab_diphone)))
+  (set! male2 (lambda () (voice_don_diphone)))
   (if (symbol-bound? 'voice_gsw_diphone)
       (set! male3 voice_gsw_diphone))
   (if (symbol-bound? 'voice_gsw_450)

Obviously, a similar fix should be applied to the helper functions
of all the languages in languages.scm .

Cheers,
-- 
Niko Tyni   [EMAIL PROTECTED]


--- End Message ---
--- Begin Message ---
Source: festival
Source-Version: 1.4.3-20

We believe that the bug you reported is fixed in the latest version of
festival, which is due to be installed in the Debian FTP archive:

festival-dev_1.4.3-20_amd64.deb
  to pool/main/f/festival/festival-dev_1.4.3-20_amd64.deb
festival_1.4.3-20.diff.gz
  to pool/main/f/festival/festival_1.4.3-20.diff.gz
festival_1.4.3-20.dsc
  to pool/main/f/festival/festival_1.4.3-20.dsc
festival_1.4.3-20_amd64.deb
  to pool/main/f/festival/festival_1.4.3-20_amd64.deb



A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [EMAIL PROTECTED],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Kartik Mistry <[EMAIL PROTECTED]> (supplier of updated festival package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [EMAIL PROTECTED])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Format: 1.7
Date: Tue, 03 Jul 2007 11:50:12 +0530
Source: festival
Binary: festival-dev festival
Architecture: source amd64
Version: 1.4.3-20
Distribution: unstable
Urgency: low
Maintainer: Kartik Mistry <[EMAIL PROTECTED]>
Changed-By: Kartik Mistry <[EMAIL PROTECTED]>
Description: 
 festival   - general multi-lingual speech synthesis system
 festival-dev - development kit for the Festival speech synthesis system
Closes: 427550 431264
Changes: 
 festival (1.4.3-20) unstable; urgency=low
 .
   * debian/control: Added file-rc along with sysv-rc in Depends for systems
     using file-rc (Closes: #431264)
   * lib/languages.scm: fixed (male1) and its friends only work once by adding
     lambda() function, Thanks to Niko Tyni <[EMAIL PROTECTED]> for patch
     (Closes: #427550)
   * debian/rules: use $(MAKE) clean to catch any errors in clean target
Files: 
 31f6d147678b3a1c1853dfc55757e61d 670 sound optional festival_1.4.3-20.dsc
 a504f4cb3b29787415ea89a00c8b63dc 33564 sound optional festival_1.4.3-20.diff.gz
 cabaf6794b3b0bbdc7ead1fddd0ba7ec 709176 sound optional 
festival_1.4.3-20_amd64.deb
 494a57037506fea77aae5a0af4f11ac9 446134 libdevel optional 
festival-dev_1.4.3-20_amd64.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)

iD8DBQFGi9IXFyn1hmqfPDgRAktJAJ9nTqdpEyJgYDVD39EEzzZiCa0S7ACeIJSm
wAQodgjaVEuWLl646mFIHEw=
=rLko
-----END PGP SIGNATURE-----


--- End Message ---

Reply via email to