Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make text-to-speech feature more discoverable #672

Closed
demeralde opened this issue Feb 13, 2021 · 8 comments
Closed

Make text-to-speech feature more discoverable #672

demeralde opened this issue Feb 13, 2021 · 8 comments
Labels
enhancement New feature or request

Comments

@demeralde
Copy link

Is your feature request related to a problem? Please describe.
It'd be great if you can listen to your books with a text-to-speech feature, which can transform any eBook into an audiobook.

Describe the solution you'd like
A button somewhere for text-to-speech. Highlight the active word currently being spoken, and automatically scroll the page to keep in sync with the current spoken word. Perhaps also skip redundant text, like the table of contents.

Describe alternatives you've considered
Not all books have audiobooks. It'd also be handy to do this, so you don't have to get a copy of an audiobook for whatever book you're reading.

@demeralde demeralde added the enhancement New feature or request label Feb 13, 2021
@demeralde demeralde changed the title Add text-to-speech to convert eBooks into audiobooks Add audiobook feature using text-to-speech Feb 13, 2021
@itprojects
Copy link
Contributor

This is not a bug/issue.

The described feature already exists in Foliate.

  1. Start Foliate, open a book.
  2. Press "Text-to-speech" button (in bottom bar, right side).
  3. Alternatively, select one word, a context menu opens, then press "Start-from-here" .

Note: For this all to work you need to have a TTS reader - i. e. espeak, festival, spd-say.

@demeralde
Copy link
Author

@itprojects additionally I had to set the TTS command in the settings, but now it works.

Perhaps this should be clearer in the UI? It only showed after I configured it in the settings. Maybe it should just show by default, except the TTS button/dropdown item for "Start from here" are disabled (with a hint saying to configure it)

@itprojects
Copy link
Contributor

@dspacejs From the README.md:

Basic text-to-speech support with eSpeak NG and Festival

For text-to-speech support, install espeak-ng, or festival, and packages for the individual voices.

Adding a suggestion to the UI implies that there only a very specific set of apps to check for Text-to-speech (TTS). This is a problem, because there are many apps that can provide TTS. Some are online, some are offline, some are FOSS, some are blobs. A detection mechanism will give false positives, thus causing more confusion.

@demeralde
Copy link
Author

demeralde commented Feb 15, 2021

@itprojects people shouldn't have to read the full README to know that. I downloaded this app a long time ago, so even if I saw that bit in the README, I must have forgot. The UI should make it obvious rudimentary functionality like this exists and be seamless.

You don't have to auto-detect the TTS. I see two feasible solutions:

  1. Add a dependency to the app for whatever the best TTS software is. If it's already installed on the user's machine, then it won't be downloaded twice.
  2. What I mentioned earlier about revealing the UI for this, but disabling it (so the user can't click the TTS button or anything) until it's configured in the settings.

The first is far more preferable and is seamless. It works without any configuration. It also means the user doesn't have to bother going through the different TTS options, select the best one, review the different CLI options and configure it. I've never used TTS on Linux before, so it's a significant hassle to have to do that.

Additionally, I don't think people should be forced to read READMEs to use basic software like this. Especially users who aren't technical. In order for Linux to become mainstream, the front-end of software needs to be seamless. This is a mistake I've seen a lot of developers make, that if fixed would improve the platform a lot. Not only that, but even technical users like myself don't always have the time for this sort of thing, everything should just work by default.

@itprojects
Copy link
Contributor

@dspacejs Option 1 creates a permanent dependency barrier to Foliate adoption. It can also cause compilation problems for those (and there are some) that want to compile from source.

The better would be Option 2 "Grayed out button", since the button is already there, just need to disable, instead of hide. Then the user will look at the Readme.md, maybe even without being asked, and install a TTS package.

You are right that maybe the design of this part of Foliate should be looked at, but design is no panacea.

@johnfactotum
Copy link
Owner

The button doesn't have to be grayed out. If the TTS command is not set, it can just show the TTS configuration dialog when you click on it. One downside of this is that it can be a little distracting for people who don't use TTS at all.

@johnfactotum johnfactotum changed the title Add audiobook feature using text-to-speech Make text-to-speech feature more discoverable Feb 17, 2021
@itprojects
Copy link
Contributor

itprojects commented Feb 17, 2021

@johnfactotum Perhaps an updated Readme.md with a section on the typical settings?

List of known configurations:

espeak-ng:

espeak-ng -a 100 -g 1 -p 50 -s 160

espeak-ng -v mb-en1 -a 100 -g 1 -p 50 -s 160

spd-say:

spd-say -e -w -p 50

mimic:

mimic -f /dev/stdin

mimic -f /dev/stdin -voice slt

@johnfactotum
Copy link
Owner

Closing this in favor of #829

@johnfactotum johnfactotum closed this as not planned Won't fix, can't repro, duplicate, stale Sep 23, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants