Discussion:
eSpeak - can't access file en_rules
(too old to reply)
Harriet Bazley
2022-03-01 00:12:39 UTC
Permalink
I've been playing around with creating an en_extra file inside !eSpeak
in order to correct the program's pronunciation of various proper nouns,
and managed to get it to work for a while, though the process is not
exactly user-friendly.

But when I tried to recompile it again after a few days' rest, I
couldn't get anything other than the perplexing error "Can't access
file"

*show espeak*
eSpeak$Dir : SCSI::SSD.$.Sound.!eSpeak
*speak --compile=en
Can't access (r) file 'en_rules'
*

If I try the other languages supplied, e.g. Polish, I just get the error
"Can't access (r) file 'pl_rules'" etc. instead

But the files are all still present (and unaltered by me) inside
!eSpeak.dictsource, and the software is clearly able to locate the
compiled versions in SCSI::SSD.$.Sound.!eSpeak.espeak-dat, because it's
using the new pronunciations I supplied to it earlier on. I just appear
to have lost the ability to make any further changes in some
inexplicable fashion....

I've tried RMKilling the Speak module, and resetting the computer in
case it has its system variables confused. But it doesn't seem to make
any difference; the *speak --compile command has stopped working.

(The files are all listed as WR/ access by the RISC OS Filer - I don't
know what "Can't access (r)" means in Linux-speak.)
--
Harriet Bazley == Loyaulte me lie ==

We prefer to speak evil of ourselves than not speak of ourselves at all.
Harriet Bazley
2022-03-01 23:16:59 UTC
Permalink
Post by Harriet Bazley
I've been playing around with creating an en_extra file inside !eSpeak
in order to correct the program's pronunciation of various proper nouns,
and managed to get it to work for a while, though the process is not
exactly user-friendly.
But when I tried to recompile it again after a few days' rest, I
couldn't get anything other than the perplexing error "Can't access
file"
*show espeak*
eSpeak$Dir : SCSI::SSD.$.Sound.!eSpeak
*speak --compile=en
Can't access (r) file 'en_rules'
*
OK, I've had a blinding flash of inspiration and worked out the issue
here - it works if you *set the current directory* from the command-line
to !eSpeak.dictsource first... which I have very vague memories of doing
for some reason or other during my original experimentation.

So the module is looking for the literal file "en_rules" in the CSD,
rather than in the location "<eSpeak$dir>.dictsource.en_rules". Probably
the classic Unix/RISC OS directory separator problem? (Unless the code
really is written only to operate on files in the root directory, which
seems unlikely....)
--
Harriet Bazley == Loyaulte me lie ==

If it's not broken, don't fix it.
Loading...