Announcing ZoTTS - A Text to Speech Plugin for Zotero!
Hi everyone!
After a long wait (for me too, this project idea is over a year old), ZoTTS is finally ready for release!
You can find it here: https://github.com/ImperialSquid/zotero-zotts
---
The plugin should work out of the box, no need to install external tools, and all your data is kept locally so no privacy concerns there either.
The plugin lets you use both shortcuts and UI elements to access the TTS features.
By default, the shortcuts are:
- Ctrl/Cmd + S will begin speaking (Ctrl/Cmd + Shift + S will modify how it works)
- Ctrl/Cmd + P will pause
- Ctrl/Cmd + C will cancel
When in the Library tab:
Ctrl/Cmd + S will speak a paper's title, Ctrl/Cmd + Shift + S will speak its abstract
When in a Reader Tab:
If some text is selected, Ctrl/Cmd (+ Shift) + S will speak that text
If no text is selected, but some annotations are selected, Ctrl/Cmd + S will speak the annotated text, Ctrl/Cmd + Shift + S will speak the attached comment if available
There are also play/pause/cancel buttons in the top right of each Reader tab, these act the same as their respective shortcuts (note: speaking an annotation will always speak its text not the comment for simplicity, though I'm open to changing this if people want it!)
There are also a bunch of settings so you can get ZoTTS feeling just right!
- Enable/disable queueing - if you attempt to speak multiple items, should ZoTTS queue them all or just speak the most recent?
- Adjust the voice, rate, pitch and volume used
- Voices are all local to your computer
- If you're on Windows, you can go to Settings > Time and Language > Speech > Add voices to enable more built in ones. Non built in voices are available in various places online, paid and free.
- I'm not sure what's available on macOS and Linux since I don't use those, sorry
- Tweak shortcuts
- You can change the letters for speak/pause/cancel to whatever you like
- You can also reverse what happens when you use Ctrl/Cmd + S vs Ctrl/Cmd + Shift + S
---
Do bear in mind, this is the very first release and is my first project in this programming language, some slightly jankiness is inevitable...
Anyway, I really hope this is useful to everyone! I got my ADHD diagnosis part way through my studies, so I know first hand how useful this kind of assistive tech can be.
Do let me know if you run into any issues by opening an issue on GitHub: https://github.com/ImperialSquid/zotero-zotts/issues
I'd also love to hear any feedback people have (positive remarks, feature requests, constructive critiques are all welcome!), here or at my email, wherever is most comfortable!
After a long wait (for me too, this project idea is over a year old), ZoTTS is finally ready for release!
You can find it here: https://github.com/ImperialSquid/zotero-zotts
---
The plugin should work out of the box, no need to install external tools, and all your data is kept locally so no privacy concerns there either.
The plugin lets you use both shortcuts and UI elements to access the TTS features.
By default, the shortcuts are:
- Ctrl/Cmd + S will begin speaking (Ctrl/Cmd + Shift + S will modify how it works)
- Ctrl/Cmd + P will pause
- Ctrl/Cmd + C will cancel
When in the Library tab:
Ctrl/Cmd + S will speak a paper's title, Ctrl/Cmd + Shift + S will speak its abstract
When in a Reader Tab:
If some text is selected, Ctrl/Cmd (+ Shift) + S will speak that text
If no text is selected, but some annotations are selected, Ctrl/Cmd + S will speak the annotated text, Ctrl/Cmd + Shift + S will speak the attached comment if available
There are also play/pause/cancel buttons in the top right of each Reader tab, these act the same as their respective shortcuts (note: speaking an annotation will always speak its text not the comment for simplicity, though I'm open to changing this if people want it!)
There are also a bunch of settings so you can get ZoTTS feeling just right!
- Enable/disable queueing - if you attempt to speak multiple items, should ZoTTS queue them all or just speak the most recent?
- Adjust the voice, rate, pitch and volume used
- Voices are all local to your computer
- If you're on Windows, you can go to Settings > Time and Language > Speech > Add voices to enable more built in ones. Non built in voices are available in various places online, paid and free.
- I'm not sure what's available on macOS and Linux since I don't use those, sorry
- Tweak shortcuts
- You can change the letters for speak/pause/cancel to whatever you like
- You can also reverse what happens when you use Ctrl/Cmd + S vs Ctrl/Cmd + Shift + S
---
Do bear in mind, this is the very first release and is my first project in this programming language, some slightly jankiness is inevitable...
Anyway, I really hope this is useful to everyone! I got my ADHD diagnosis part way through my studies, so I know first hand how useful this kind of assistive tech can be.
Do let me know if you run into any issues by opening an issue on GitHub: https://github.com/ImperialSquid/zotero-zotts/issues
I'd also love to hear any feedback people have (positive remarks, feature requests, constructive critiques are all welcome!), here or at my email, wherever is most comfortable!
The reason it wasn't available from the beginning is that getting the raw text looked to be much more of a headache than getting the text selection (due to privacy/security stuff built into Zotero), so for now I thought I'd just release a version that worked _somewhat_ rather than delay waiting for the optimal solution. But rest assured it's my top priority before other features!
Glad to hear it's working well for you otherwise! :D
Very excited to learn of this plugin, it's a much-needed addition! For some reason, I haven't been able to get it to work (pressing the play button, using shortcuts no reaction, although the plugin was successfully added on zotero 2). Any similar experiences that might help me get it working? I'm on a mac, using the latest version of zotero 2.
Thanks for working on this, I'm sure it's going to be really helpful for a lot of people!
Apologies for the slow reply, was away from everything visiting family. I'm glad the plugin seems useful to you, sorry to hear it's not been working though.
A fair few Mac and Linux users have reported the plugin not working correctly annoyingly (I think it has something to do with the way the TTS engine loads on these machines vs Windows machines). Though I've been doing some digging and I have a few ideas that should help improve stability that should be coming soon!
Thank you so much for making this plugin, I've been on the lookout for something like this for over two years now!
Unfortunately when trying to connect the plugin with Zotero I keep getting the same error message and I don't know how to fix it... I will show the message underneath this text. Do you know if it is a problem I can fix myself or did something brake in the plugin?
https://s3.amazonaws.com/zotero.org/images/forums/u10495284/vw4gbhjjzgiuvokk0b71.png (I added English translations since my pc is in Dutch)
Sorry for the slow reply (Zotero forums unfortunately don't send emails about replies to threads etc, so it's on me to manually check in now and then...!)
That error is due to the fact that ZoTTS is only compatible with Zotero 7+, if you download the latest version the plugin should work fine.
(Apologies for any inconvenience caused by it not working with version 6, there were a lot of changes made under the hood between both versions which would've made coding it for both tricky in places, 7 was released just as ZoTTS was getting ready for it's first version so the plugin only supports 7 and later)
Do let me know if you run into any issues! (GitHub issues or emails are pretty reliable, though I'll endeavour to check in here more frequently too)
---
@dhutton2002 apologies to you too for not seeing your reply here, thanks for opening a bug report about it though, GitHub is a much more reliable way to get my help
Errr... yes, the forum certainly sends such e-mails.
Apologies for the late reply.
The substitutions section is more intended to fix pronunciation issues in words/phrases, but I can definitely try finding a solution for you!
Would you mind opening an issue on the GitHub repo? It just makes it a little easier for me to collect information and manage things (plus I'm more active there).
Thanks.