• Status Unconfirmed
  • Percent Complete
  • Task Type Bugs
  • Category Rbutil
  • Assigned To No-one
  • Operating System All players
  • Severity Critical
  • Priority Very Low
  • Reported Version Release 3.14
  • Due in Version Undecided
  • Due Date Undecided
  • Votes 2
  • Private
Attached to Project: Rockbox
Opened by fennectech - 2018-05-04

FS#13156 - Creating of talk files fails ungracefuly when encounting unspeakable text.

Rockboxutility barfs while creating talk files if it encounters unpronouncable charicters (japanese kanji) and does not continue afterwords resulting in talk files not being copied to the player.

[talkgenerator.cpp:156 INFO] voicing: "シマシマ" to "/tmp/talkfiles/952b0e2854336082e41fb0ef8ef8dc97.wav"
[ttsfestival.cpp:188 INFO] Voicing "シマシマ" → "/tmp/talkfiles/952b0e2854336082e41fb0ef8ef8dc97.wav"
[rbsettings.cpp:162 INFO] GET U: "festival-client/path" "/usr/bin/festival_client"
[ttsfestival.cpp:194 INFO] Client cmd: "/usr/bin/festival_client –server localhost –otype riff –ttw –withlisp –output \"/tmp/talkfiles/952b0e2854336082e41fb0ef8ef8dc97.wav\" –prolog \"/tmp/RockboxUtility.zowYwG\" - "
[:0 WARNING] QProcess: Destroyed while process ("/usr/bin/festival_client") is still running.

The result of this is an invalid wav file wich the the encoder bails out on and the process aborts.

[talkgenerator.cpp:235 INFO] encoding "/tmp/talkfiles/952b0e2854336082e41fb0ef8ef8dc97.wav" to "/tmp/talkfiles/"
[encoderrbspeex.cpp:82 INFO] Encoding "/tmp/talkfiles/952b0e2854336082e41fb0ef8ef8dc97.wav" to "/tmp/talkfiles/"
[encoderrbspeex.cpp:103 ERROR] Error: invalid WAV file
[ttsfestival.cpp:29 INFO] Destroying instance

I suggest ignoring failed encoded files and continuing encoding and copying the files that suceeded.

Looks like changing if(m_talkList[i].encoded on line 245 in file /rockbox/rbutil/rbutilqt/base/talkfile.cpp to true will fix the problem.

Creating a japanese voice file works fine for me with espeak and espeak-ng, fails with flite and festival. So this is related to the actual TTS used, and as far as I understand the problem is that festival fails on the text.

While ignoring the failed ones for talk files might be an option (assuming you only have a few with characters triggering this problem) this completely fails for voice files, since the relevant strings wouldn't be voiced at all, even not as english fallback.

For now the best solution is to use a different TTS – someone familiar with festival would need to give that a closer look.


Available keyboard shortcuts


Task Details

Task Editing