vkbo / novelWriter

novelWriter is an open source plain text editor designed for writing novels. It supports a minimal markdown-like syntax for formatting text. It is written with Python 3 (3.9+) and Qt 5 (5.15) for cross-platform support.
https://novelwriter.io
GNU General Public License v3.0
2k stars 102 forks source link

Text-to-speech feature #1969

Open seongryoo opened 2 months ago

seongryoo commented 2 months ago

(Description from discussion post)

When I'm writing, I like to use text-to-speech software to read aloud my drafts. I find it helpful when editing, since hearing what I've written can often reveal typos and mistakes which my eyes just skipped over. It's also just like a nice 'sanity check.' Currently, my text-to-speech workflow is to export my novelWriter project as a .pdf and then open said .pdf on Microsoft Edge to take advantage of the browser's native ReadAloud feature, which has surprisingly good voices.

I would personally find a minimal text-to-speech feature in novelWriter to be incredibly useful. For example, I think it would be amazing if you could highlight a portion of text in novelWriter and have it be read aloud, even by a really basic robotic voice.

vkbo commented 2 months ago

As mentioned in the discussion, my idea is to try this out with QTextToSpeech.

johnblommers commented 1 month ago

(Description from discussion post)

Currently, my text-to-speech workflow is to export my novelWriter project as a .pdf and then open said .pdf on Microsoft Edge to take advantage of the browser's native ReadAloud feature, which has surprisingly good voices.

Thanks for mentioning this. My web browser of choice is Firefox, and it too has a text-to-speech feature. So I build an HTML version of my manuscript in novelWriter, open the HTML file with Firefox and press the speaker icon in the toolbar.

vkbo commented 1 month ago

I'll queue it up for next release, but I need to test that it actually works as expected with the QTextToSpeech implementation first. If it works, it should be fairly easy to implement.