mirror of
https://github.com/denizsafak/abogen.git
synced 2026-07-18 13:40:27 +02:00
Better EPUB handling, improvements in code and docs
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
- Added profile system to voice mixer, allowing users to create and manage multiple voice profiles.
|
- Added profile system to voice mixer, allowing users to create and manage multiple voice profiles.
|
||||||
- Improvements in the voice mixer, mostly for organizing controls and enhancing user experience.
|
- Improvements in the voice mixer, mostly for organizing controls and enhancing user experience.
|
||||||
- Added icons for flags and genders in the GUI, making it easier to identify different options.
|
- Added icons for flags and genders in the GUI, making it easier to identify different options.
|
||||||
|
- Improved the content and chapter extraction process for EPUB files, ensuring better handling of various structures.
|
||||||
- Switched to platformdirs for determining the correct desktop path, instead of using old methods.
|
- Switched to platformdirs for determining the correct desktop path, instead of using old methods.
|
||||||
- Fixed preview voices was not using GPU acceleration, which was causing performance issues.
|
- Fixed preview voices was not using GPU acceleration, which was causing performance issues.
|
||||||
- Improvements in code and documentation.
|
- Improvements in code and documentation.
|
||||||
@@ -101,7 +101,7 @@ Here’s Abogen in action: in this demo, it processes ∼3,000 characters of tex
|
|||||||
## `Voice Mixer`
|
## `Voice Mixer`
|
||||||
<img title="Abogen Voice Mixer" src='https://raw.githubusercontent.com/denizsafak/abogen/refs/heads/main/demo/voice_mixer.png'>
|
<img title="Abogen Voice Mixer" src='https://raw.githubusercontent.com/denizsafak/abogen/refs/heads/main/demo/voice_mixer.png'>
|
||||||
|
|
||||||
With voice mixer, you can create custom voices by mixing different voice models. You can adjust the weight of each voice and save your custom voice as a profile for future use. The voice mixer allows you to create unique and personalized voices. (Huge thanks to @jborza for making this possible through his contributions in #5)
|
With voice mixer, you can create custom voices by mixing different voice models. You can adjust the weight of each voice and save your custom voice as a profile for future use. The voice mixer allows you to create unique and personalized voices. (Huge thanks to [@jborza](https://github.com/jborza) for making this possible through his contributions in [#5](https://github.com/denizsafak/abogen/pull/5))
|
||||||
|
|
||||||
## `Supported Languages`
|
## `Supported Languages`
|
||||||
```
|
```
|
||||||
@@ -168,8 +168,9 @@ Feel free to explore the code and make any changes you like.
|
|||||||
## `Credits`
|
## `Credits`
|
||||||
- Abogen uses [Kokoro](https://github.com/hexgrad/kokoro) for its high-quality, natural-sounding text-to-speech synthesis. Huge thanks to the Kokoro team for making this possible.
|
- Abogen uses [Kokoro](https://github.com/hexgrad/kokoro) for its high-quality, natural-sounding text-to-speech synthesis. Huge thanks to the Kokoro team for making this possible.
|
||||||
- Thanks to [@wojiushixiaobai](https://github.com/wojiushixiaobai) for [Embedded Python](https://github.com/wojiushixiaobai/Python-Embed-Win64) packages. These modified packages include pip pre-installed, enabling Abogen to function as a standalone application without requiring users to separately install Python in Windows.
|
- Thanks to [@wojiushixiaobai](https://github.com/wojiushixiaobai) for [Embedded Python](https://github.com/wojiushixiaobai/Python-Embed-Win64) packages. These modified packages include pip pre-installed, enabling Abogen to function as a standalone application without requiring users to separately install Python in Windows.
|
||||||
|
- Thanks to creators of [EbookLib](https://github.com/aerkalov/ebooklib), a Python library for reading and writing ePub files, which is used for extracting text from ePub files.
|
||||||
- Special thanks to the [PyQt](https://www.riverbankcomputing.com/software/pyqt/) team for providing the cross-platform GUI toolkit that powers Abogen's interface.
|
- Special thanks to the [PyQt](https://www.riverbankcomputing.com/software/pyqt/) team for providing the cross-platform GUI toolkit that powers Abogen's interface.
|
||||||
- Icons: [US](https://icons8.com/icon/aRiu1GGi6Aoe/usa), [Great Britain](https://icons8.com/icon/t3NE3BsOAQwq/great-britain), [Spain](https://icons8.com/icon/ly7tzANRt33n/spain), [France](https://icons8.com/icon/3muzEmi4dpD5/france), [India](https://icons8.com/icon/esGVrxg9VCJ1/india), [Italy](https://icons8.com/icon/PW8KZnP7qXzO/italy), [Japan](https://icons8.com/icon/McQbrq9qaQye/japan), [Brazil](https://icons8.com/icon/zHmH8HpOmM90/brazil), [China](https://icons8.com/icon/Ej50Oe3crXwF/china), [Female](https://icons8.com/icon/uI49hxbpxTkp/female), [Male](https://icons8.com/icon/12351/male) and [Voice Id](https://icons8.com/icon/GskSeVoroQ7u/voice-id), [Person](https://icons8.com/icon/34105/person) icons by [Icons8](https://icons8.com/).
|
- Icons: [US](https://icons8.com/icon/aRiu1GGi6Aoe/usa), [Great Britain](https://icons8.com/icon/t3NE3BsOAQwq/great-britain), [Spain](https://icons8.com/icon/ly7tzANRt33n/spain), [France](https://icons8.com/icon/3muzEmi4dpD5/france), [India](https://icons8.com/icon/esGVrxg9VCJ1/india), [Italy](https://icons8.com/icon/PW8KZnP7qXzO/italy), [Japan](https://icons8.com/icon/McQbrq9qaQye/japan), [Brazil](https://icons8.com/icon/zHmH8HpOmM90/brazil), [China](https://icons8.com/icon/Ej50Oe3crXwF/china), [Female](https://icons8.com/icon/uI49hxbpxTkp/female), [Male](https://icons8.com/icon/12351/male) and [Voice Id](https://icons8.com/icon/GskSeVoroQ7u/voice-id) icons by [Icons8](https://icons8.com/).
|
||||||
|
|
||||||
## `License`
|
## `License`
|
||||||
This project is available under the MIT License - see the [LICENSE](https://github.com/denizsafak/abogen/blob/main/LICENSE) file for details.
|
This project is available under the MIT License - see the [LICENSE](https://github.com/denizsafak/abogen/blob/main/LICENSE) file for details.
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
1.0.2
|
1.0.3
|
||||||
+778
-415
File diff suppressed because it is too large
Load Diff
+4
-3
@@ -1445,10 +1445,10 @@ class abogen(QWidget):
|
|||||||
# stop loading animation and restore icon on error
|
# stop loading animation and restore icon on error
|
||||||
if error:
|
if error:
|
||||||
self.loading_movie.stop()
|
self.loading_movie.stop()
|
||||||
self.btn_preview.setIcon(self.play_icon)
|
|
||||||
self._show_error_message_box(
|
self._show_error_message_box(
|
||||||
"Loading Error", f"Error loading numpy or KPipeline: {error}"
|
"Loading Error", f"Error loading numpy or KPipeline: {error}"
|
||||||
)
|
)
|
||||||
|
self.btn_preview.setIcon(self.play_icon)
|
||||||
self.btn_preview.setEnabled(True)
|
self.btn_preview.setEnabled(True)
|
||||||
self.btn_preview.setToolTip("Preview selected voice")
|
self.btn_preview.setToolTip("Preview selected voice")
|
||||||
self.voice_combo.setEnabled(True)
|
self.voice_combo.setEnabled(True)
|
||||||
@@ -1491,12 +1491,13 @@ class abogen(QWidget):
|
|||||||
temp_wav = self.preview_thread.temp_wav
|
temp_wav = self.preview_thread.temp_wav
|
||||||
if not temp_wav:
|
if not temp_wav:
|
||||||
self.loading_movie.stop()
|
self.loading_movie.stop()
|
||||||
self.btn_preview.setIcon(self.play_icon)
|
|
||||||
self._show_error_message_box(
|
self._show_error_message_box(
|
||||||
"Preview Error", "Preview error: No audio generated."
|
"Preview Error", "Preview error: No audio generated."
|
||||||
)
|
)
|
||||||
self.btn_preview.setEnabled(True)
|
self.btn_preview.setIcon(self.play_icon)
|
||||||
self.btn_preview.setToolTip("Preview selected voice")
|
self.btn_preview.setToolTip("Preview selected voice")
|
||||||
|
self.btn_preview.setEnabled(True)
|
||||||
self.voice_combo.setEnabled(True)
|
self.voice_combo.setEnabled(True)
|
||||||
self.btn_voice_formula_mixer.setEnabled(True) # Re-enable mixer button
|
self.btn_voice_formula_mixer.setEnabled(True) # Re-enable mixer button
|
||||||
self.btn_start.setEnabled(True)
|
self.btn_start.setEnabled(True)
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 23 KiB |
+1
-1
@@ -15,7 +15,7 @@ keywords = ["audiobook", "epub", "pdf", "text-to-speech", "subtitle", "tts", "ko
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"PyQt5>=5.15.11",
|
"PyQt5>=5.15.11",
|
||||||
"kokoro>=0.9.4",
|
"kokoro>=0.9.4",
|
||||||
"ebooklib>=0.18",
|
"ebooklib>=0.19",
|
||||||
"beautifulsoup4>=4.13.4",
|
"beautifulsoup4>=4.13.4",
|
||||||
"PyMuPDF>=1.25.5",
|
"PyMuPDF>=1.25.5",
|
||||||
"platformdirs>=4.3.7",
|
"platformdirs>=4.3.7",
|
||||||
|
|||||||
Reference in New Issue
Block a user