ImperialSquid / zotero-zotts

A Zotero plugin to add TTS functionality to the PDF viewer
GNU Affero General Public License v3.0
75 stars 1 forks source link

[Bug]: Failed to start TTS engine on Arch #115

Open v4u6h4n opened 1 week ago

v4u6h4n commented 1 week ago

Checklist

Zotero version

7.0.7

ZoTTS version

1.3.0

OS

Linux

OS (specific)

arch hyprland

Steps to reproduce

  1. Followed installation steps outlined in the readme.
  2. Error popup says failed to start TTS engine.
  3. Restarting and reinstalling zotts and zotero has no effect.

Expected behaviour

Read me a bedtime story :-)

Actual behaviour

No bedtime story was read :-(

ImperialSquid commented 1 week ago

Hi, thanks for your bug report.

v4u6h4n commented 1 week ago

Hello :-)

It was the dependencies, thanks for the help.

But maybe I'll keep this issue open, because I've noticed the pause button isn't working. Everything else seems to working fine. I tried the ctrl + shift + p shortcut as well, and doesnt work with that either. Any suggestions?

ImperialSquid commented 1 week ago

Awesome, glad it's working now!

Not being able to pause is new to me, but ZoTTS uses whatever you have installed so it may be an issue with that software instead.

Same as the last step above, navigate to the error console and paste in the following:

var utt = new window.SpeechSynthesisUtterance("Long test sentence foo bar baz")
utt.onstart = () => {console.log("start")}
utt.onend = () => {console.log("end")}
utt.onerror = (error) => {console.log(error.error)}
window.speechSynthesis.speak(utt)
setTimeout(() => {window.speechSynthesis.pause()}, 100)

See if that brings up any error codes

v4u6h4n commented 1 week ago

Not sure what I'm looking at, are those eval codes error codes? This is the output:

116 start debugger eval code:2:30 end debugger eval code:3:28

I installed speech-dispatcher, piper-tts-bin from aur and a couple voices in case that's relevant. I updated and restarted just in case, and yeah the pause still isn't working.

ImperialSquid commented 1 week ago

They're not important, I was just testing something[1]

Given that it both starts and ends, but doesn't print an error statement, it's not that it's registering the pause and throwing an error (but continuing to speak), it's just not registering the pause at all, very strange...

Could you try uninstalling piper and installing something else like espeak or festival? That way we can test whether it's a piper problem or more widespread


[1] if you're curious, the first number is the ID for the pause timeout (you can use it to cancel the timeout, etc). And everything other than "start" and "end" is the console telling you what code gave that output, 2:30 corresponds to character 30 on line 2

ImperialSquid commented 1 week ago

Actually, espeak might not work (going off that it's not in the wiki below), so festival would probably be better. Either is fine.

Make sure to follow the installation instructions from the speech-dispatcher wiki, there's some steps that are specific to both festival and piper that you might need to do to make sure it works properly. (It may just be that doing the piper config steps fixes piper...?)

Sorry, I'm aware that's a lot of info, thanks for working with me to solve this!