@Ryrenz: 太强了,能把整本电子书变成有声书,还能用你自己的声音念 GitHub 上 1.97 万 stars 通勤路上想「读」完一本书,现有办法都别扭:有声书平台上没有你想听的那本,机器朗读又是那种一听就想关掉的电子腔,中文里还经常读错停顿。 这个…
摘要
这个项目可以将电子书转换为有声书,支持多种格式和TTS引擎,包括语音克隆,适用于通勤时听书。
查看缓存全文
缓存时间: 2026/08/19 08:40
太强了,能把整本电子书变成有声书,还能用你自己的声音念
GitHub 上 1.97 万 stars
通勤路上想「读」完一本书,现有办法都别扭:有声书平台上没有你想听的那本,机器朗读又是那种一听就想关掉的电子腔,中文里还经常读错停顿。
这个项目直接把你手上的书转成有声书,而且是带章节和元数据的完整成品,导进播放器就能按章跳。输入格式吃得很杂,EPUB、MOBI、PDF、TXT、HTML、RTF、DOC、DOCX、ODT 都行,扫描件也能走 OCR。输出默认 M4B,另外 MP3、FLAC、WAV、OGG、AAC 这些也都给了。
声音这块的选择空间比想象中大:XTTSv2、Bark、Fairseq、VITS、Tacotron2、Tortoise、GlowTTS、YourTTS、Piper 九个引擎,还有可选的声音克隆和自定义语音模型,宣称支持 1158 种语言。想批量转一书架,或者转完直接进 Audiobookshelf,也都做好了。
对机器要求不算高,最低 2 GB 内存加 1 GB 显存就能跑,CPU、CUDA、ROCm、Intel XPU、Jetson 和苹果 M 系列都支持,不想在本地折腾还能上 Colab、Kaggle 或者 Hugging Face Spaces。
一点前提:项目明确写了只面向无 DRM 且合法取得的电子书。
买回来的书本来就该想怎么读就怎么读。
GitHub:
DrewThomasson/ebook2audiobook
Source: https://github.com/DrewThomasson/ebook2audiobook
📚 ebook2audiobook (E2A)
CPU/GPU Converter from E-Book to audiobook with chapters and metadata
using advanced TTS engines and much more.
Supports voice cloning and 1158 languages!
This tool is intended for use with non-DRM, legally acquired eBooks only.
The authors are not responsible for any misuse of this software or any resulting legal consequences.
Use this tool responsibly and in accordance with all applicable laws.
Thanks to support ebook2audiobook developers!
Run locally
Run Remotely
GUI Interface

Click to see images of Web GUI
Demos
New Default Voice Demo
https://github.com/user-attachments/assets/750035dc-e355-46f1-9286-05c1d9e88cea
More Demos
ASMR Voice
https://github.com/user-attachments/assets/68eee9a1-6f71-4903-aacd-47397e47e422
Rainy Day Voice
https://github.com/user-attachments/assets/d25034d9-c77f-43a9-8f14-0d167172b080
Scarlett Voice
https://github.com/user-attachments/assets/b12009ee-ec0d-45ce-a1ef-b3a52b9f8693
David Attenborough Voice
https://github.com/user-attachments/assets/81c4baad-117e-4db5-ac86-efc2b7fea921
Example

README.md
Table of Contents
Features
- 🔧 TTS Engines supported:
XTTSv2,Bark,Fairseq,VITS,Tacotron2,Tortoise,GlowTTS,YourTTS - 📚 Convert multiple file formats:
.epub,.mobi,.azw3,.fb2,.lrf,.rb,.snb,.tcr,.pdf,.txt,.rtf,.doc,.docx,.html,.odt,.azw,.tiff,.tif,.png,.jpg,.jpeg,.bmp,.zip - 💻 TextArea to convert directly a short text in audio
- 🔍 OCR scanning for files with text pages as images
- 🔊 High-quality text-to-speech from near realtime to near real voice
- 🗣️ Optional voice cloning using your own voice file
- 🌐 Supports 1158 languages (supported languages list)
- 💻 Low-resource friendly — runs on 2 GB RAM / 1 GB VRAM (minimum)
- 🎵 Audiobook output formats: mono or stereo
aac,flac,mp3,m4b,m4a,mp4,mov,ogg,wav,webm - 🧠 SML tags supported — fine-grained control of breaks, pauses, voice switching and more (see below)
- 🧩 Optional custom model using your own trained model (XTTSv2, VITS, FAIRSEQ, PIPER, others on request)
- 🎛️ Fine-tuned preset models trained by the E2A Team
(Contact us if you need additional fine-tuned models, or if you’d like to share yours to the official preset list)
Hardware Requirements
- 2GB RAM min, 8GB recommended.
- 1GB VRAM min, 4GB recommended.
- Virtualization enabled if running on windows (Docker only).
- CPU, XPU (intel, AMD, ARM)*.
- CUDA, ROCm, JETSON
- MPS (Apple Silicon CPU)
* Modern TTS engines are very slow on CPU, so use lower quality TTS like YourTTS, Tacotron2 etc..
Supported Languages
| Arabic (ar) | Chinese (zh) | English (en) | Spanish (es) |
|---|---|---|---|
| French (fr) | German (de) | Italian (it) | Portuguese (pt) |
| Polish (pl) | Turkish (tr) | Russian (ru) | Dutch (nl) |
| Czech (cs) | Japanese (ja) | Hindi (hi) | Bengali (bn) |
| Hungarian (hu) | Korean (ko) | Vietnamese (vi) | Swedish (sv) |
| Persian (fa) | Yoruba (yo) | Swahili (sw) | Indonesian (id) |
| Slovak (sk) | Croatian (hr) | Tamil (ta) | Danish (da) |
Supported eBook Formats
.epub,.pdf,.mobi,.txt,.html,.rtf,.chm,.lit,.pdb,.fb2,.odt,.cbr,.cbz,.prc,.lrf,.pml,.snb,.cbc,.rb,.tcr- Best results:
.epubor.mobifor automatic chapter detection
Output and process Formats
.m4b,.m4a,.mp4,.webm,.mov,.mp3,.flac,.wav,.ogg,.aac- Process format can be changed in lib/conf.py
SML tags available
[break]— silence (random range 0.3–0.6 sec.)[pause]— silence (random range 1.0–1.6 sec.)[pause:N]— fixed pause (N sec.)[voice:/path/to/voice/file]...[/voice]— switch voice from default or selected voice from GUI/CLI
Check our other repo dedicated to add SML automatically in your ebook -> E2A-SML
Before to post an install or bug issue search carefully to the opened and closed issues TAB
to be sure your issue does not exist already.
EPUB format lacks any standard structure like what is a chapter, paragraph, preface etc.
So you should first remove manually any text you don’t want to be converted in audio.
Instructions
-
Clone repo
git clone https://github.com/DrewThomasson/ebook2audiobook.git cd ebook2audiobook -
Install / Run ebook2audiobook:
-
Linux/MacOS
./ebook2audiobook.commandNote for MacOS users: homebrew is installed to install missing programs.
-
Mac Launcher
Double clickMac Ebook2Audiobook Launcher.command -
Windows
ebook2audiobook.cmdor Double click
ebook2audiobook.cmdNote for Windows users: scoop is installed to install missing programs without administrator privileges.
-
-
Open the Web App: Click the URL provided in the terminal to access the web app and convert eBooks.
http://localhost:7860/ -
For Public Link:
./ebook2audiobook.command --share(Linux/MacOS)ebook2audiobook.cmd --share(Windows)python app.py --share(all OS)
If the script is stopped and run again, you need to refresh your gradio GUI interface
to let the web page reconnect to the new connection socket.
Basic Usage
-
Linux/MacOS:
./ebook2audiobook.command --headless --ebook <path_to_ebook_file> --voice <path_to_voice_file> --language <language_code> -
Windows
ebook2audiobook.cmd --headless --ebook <path_to_ebook_file> --voice <path_to_voice_file> --language <language_code> -
[–ebook]: Path to your eBook file
-
[–voice]: Voice cloning file path (optional)
-
[–language]: Language code in ISO-639-3 (i.e.: ita for italian, eng for english, deu for german…).
Default language is eng and –language is optional for default language set in ./lib/lang.py.
The ISO-639-1 2 letters codes are also supported.
Example of Custom Model Zip Upload
(must be a .zip file containing the mandatory model files. Example for XTTSv2: config.json, model.pth, vocab.json and ref.wav)
-
Linux/MacOS
./ebook2audiobook.command --headless --ebook <ebook_file_path> --language <language> --custom_model <custom_model_path> -
Windows
ebook2audiobook.cmd --headless --ebook <ebook_file_path> --language <language> --custom_model <custom_model_path>Note: the ref.wav of your custom model is always the voice selected for the conversion
-
<custom_model_path>: Path to
model_name.zipfile, which must contain (according to the tts engine) all the mandatory files
(see ./lib/models.py).
For Detailed Guide with list of all Parameters to use
- Linux/MacOS
./ebook2audiobook.command --help - Windows
ebook2audiobook.cmd --help - Or for all OS
python app.py --help
usage: app.py [-h] [--session SESSION] [--share] [--headless] [--ebook EBOOK] [--ebooks_dir EBOOKS_DIR]
[--language LANGUAGE] [--voice VOICE] [--voice_map VOICE_MAP] [--device {CPU,CUDA,MPS,ROCM,XPU,JETSON}]
[--tts_engine {XTTS,BARK,VITS,FAIRSEQ,TACOTRON,YOURTTS,xtts,bark,vits,fairseq,tacotron,yourtts}]
[--custom_model CUSTOM_MODEL] [--fine_tuned FINE_TUNED] [--output_format OUTPUT_FORMAT]
[--output_channel OUTPUT_CHANNEL] [--temperature TEMPERATURE] [--length_penalty LENGTH_PENALTY]
[--num_beams NUM_BEAMS] [--repetition_penalty REPETITION_PENALTY] [--top_k TOP_K] [--top_p TOP_P]
[--speed SPEED] [--enable_text_splitting] [--text_temp TEXT_TEMP] [--waveform_temp WAVEFORM_TEMP]
[--output_dir OUTPUT_DIR] [--version]
Convert eBooks to Audiobooks using a Text-to-Speech model. You can either launch the Gradio interface or run the script in headless mode for direct conversion.
options:
-h, --help show this help message and exit
--session SESSION Session to resume the conversion in case of interruption, crash,
or reuse of custom models and custom cloning voices.
**** The following option is for gradio/gui mode only:
--share (Optional) Enable a public shareable Gradio link.
**** The following options are for --headless mode only:
--headless Run the script in headless mode
--ebook EBOOK Path to the ebook file for conversion. Cannot be used when --ebooks_dir is present.
--ebooks_dir EBOOKS_DIR
Relative or absolute path of the directory containing the files to convert.
Cannot be used when --ebook is present.
--text TEXT Raw text for conversion. Cannot be used when --ebook or --ebooks_dir is present.
--language LANGUAGE Language of the e-book. Default language is set
in ./lib/lang.py sed as default if not present. All compatible language codes are in ./lib/lang.py
optional parameters:
--translate ISO3 (Optional) Translate ebook to a target language (ISO 639-3 code, e.g. eng, fra, deu) before TTS synthesis.
Uses argostranslate. The target language becomes the effective TTS language for the run.
A copy of the source ebook is made with the _<iso3> suffix so translated and non-translated
outputs stay isolated (independent process folder, audio chunks, and final file).
--voice VOICE (Optional) Path to the voice cloning file for TTS engine.
Uses the default voice if not present.
--voice_map VOICE_MAP
(Optional, --ebooks_dir only) Path to a JSON file mapping ebook path -> voice path.
Each entry overrides --voice for that specific ebook. Missing/null entries fall back to --voice.
Keys may be absolute paths or basenames. Example:
{"book1.epub": "/voices/eng/adult/female/alice.wav", "/abs/path/book2.epub": null}
--device {CPU,CUDA,MPS,ROCM,XPU,JETSON}
(Optional) Processor unit type for the conversion.
Default is set in ./lib/conf.py if not present. Fall back to CPU if CUDA or MPS is not available.
--tts_engine {XTTS,BARK,VITS,FAIRSEQ,TACOTRON,YOURTTS,xtts,bark,vits,fairseq,tacotron,yourtts}
(Optional) Preferred TTS engine (available are: ['XTTS', 'BARK', 'VITS', 'FAIRSEQ', 'TACOTRON', 'YOURTTS', 'xtts', 'bark', 'vits', 'fairseq', 'tacotron', 'yourtts'].
Default depends on the selected language. The tts engine should be compatible with the chosen language
--custom_model CUSTOM_MODEL
(Optional) Path to the custom model zip file cntaining mandatory model files.
Please refer to ./lib/models.py
--fine_tuned FINE_TUNED
(Optional) Fine tuned model path. Default is builtin model.
--output_format OUTPUT_FORMAT
(Optional) Output audio format. Default is m4b set in ./lib/conf.py
--output_channel OUTPUT_CHANNEL
(Optional) Output audio channel. Default is mono set in ./lib/conf.py
--temperature TEMPERATURE
(xtts only, optional) Temperature for the model.
Default to config.json model. Higher temperatures lead to more creative outputs.
--length_penalty LENGTH_PENALTY
(xtts only, optional) A length penalty applied to the autoregressive decoder.
Default to config.json model. Not applied to custom models.
--num_beams NUM_BEAMS
(xtts only, optional) Controls how many alternative sequences the model explores. Must be equal or greater than length penalty.
Default to config.json model.
--repetition_penalty REPETITION_PENALTY
(xtts only, optional) A penalty that prevents the autoregressive decoder from repeating itself.
Default to config.json model.
--top_k TOP_K (xtts only, optional) Top-k sampling.
Lower values mean more likely outputs and increased audio generation speed.
Default to config.json model.
--top_p TOP_P (xtts only, optional) Top-p sampling.
Lower values mean more likely outputs and increased audio generation speed. Default to config.json model.
--speed SPEED (xtts only, optional) Speed factor for the speech generation.
Default to config.json model.
--enable_text_splitting
(xtts only, optional) Enable TTS text splitting. This option is known to not be very efficient.
Default to config.json model.
--text_temp TEXT_TEMP
(bark only, optional) Text Temperature for the model.
Default to config.json model.
--waveform_temp WAVEFORM_TEMP
(bark only, optional) Waveform Temperature for the model.
Default to config.json model.
--output_dir OUTPUT_DIR
(Optional) Path to the output directory. Default is set in ./lib/conf.py
--abs_url ABS_URL Audiobookshelf server URL (e.g. http://localhost:13378).
--abs_api_token ABS_API_TOKEN
Audiobookshelf API token.
--abs_library ABS_LIBRARY
Audiobookshelf library ID.
--version Show the version of the script and exit
Example usage:
Windows:
Gradio/GUI:
ebook2audiobook.cmd
Headless mode:
ebook2audiobook.cmd --headless --ebook '/path/to/file' --language eng
Linux/Mac:
Gradio/GUI:
./ebook2audiobook.command
Headless mode:
./ebook2audiobook.command --headless --ebook '/path/to/file' --language eng
SML tags available:
[break] — silence (random range **0.3–0.6 sec.**)
[pause] — silence (random range **1.0–1.6 sec.**)
[pause:N] — fixed pause (**N sec.**)
[voice:/path/to/voice/file]...[/voice] — switch voice from default or selected voice from GUI/CLI
NOTE: in gradio/gui mode, to cancel a running conversion, just click on the [X] from the ebook upload component. TIP: if it needs some more pause, add ‘[pause:3]’ for 3 sec. etc.
Docker
- Clone the Repository:
git clone https://github.com/DrewThomasson/ebook2audiobook.git
cd ebook2audiobook
- Build the container
Windows:
Docker:
ebook2audiobook.cmd --script_mode build_docker
Docker Compose:
ebook2audiobook.cmd --script_mode build_docker --docker_mode compose
Podman Compose:
ebook2audiobook.cmd --script_mode build_docker --docker_mode podman
Linux/Mac
Docker:
./ebook2audiobook.command --script_mode build_docker
Docker Compose
./ebook2audiobook.command --script_mode build_docker --docker_mode compose
Podman Compose:
./ebook2audiobook.command --script_mode build_docker --docker_mode podman
- Run the Container:
Docker run image:
Gradio/GUI:
CPU:
docker run -v "./ebooks:/app/ebooks" -v "./audiobooks:/app/audiobooks" -v "./models:/app/models" -v "./voices:/app/voices" -v "./tmp:/app/tmp" --rm -it -p 7860:7860 athomasson2/ebook2audiobook:cpu
CUDA:
docker run -v "./ebooks:/app/ebooks" -v "./audiobooks:/app/audiobooks" -v "./models:/app/models" -v "./voices:/app/voices" -v "./tmp:/app/tmp" --gpus all --rm -it -p 7860:7860 athomasson2/ebook2audiobook:cu[118/122/124/126 etc..]
ROCM:
docker run -v "./ebooks:/app/ebooks" -v "./audiobooks:/app/audiobooks" -v "./models:/app/models" -v "./voices:/app/voices" -v "./tmp:/app/tmp" --device=/dev/kfd --device=/dev/dri --rm -it -p 7860:7860 athomasson2/ebook2audiobook:rocm[6.0/6.1/6.4 etc..]
XPU:
docker run -v "./ebooks:/app/ebooks" -v "./audiobooks:/app/audiobooks" -v "./models:/app/models" -v "./voices:/app/voices" -v "./tmp:/app/tmp" --device=/dev/dri --rm -it -p 7860:7860 athomasson2/ebook2audiobook:xpu
JETSON:
docker run -v "./ebooks:/app/ebooks" -v "./audiobooks:/app/audiobooks" -v "./models:/app/models" -v "./voices:/app/voices" -v "./tmp:/app/tmp" --runtime nvidia --rm -it -p 7860:7860 athomasson2/ebook2audiobook:jetson[51/60/61 etc...]
Headless mode:
CPU:
docker run -v "./ebooks:/app/ebooks" -v "./audiobooks:/app/audiobooks" -v "./models:/app/models" -v "./voices:/app/voices" -v "./tmp:/app/tmp" -v "/my/real/ebooks/folder/absolute/path:/app/another_ebook_folder" --rm -it -p 7860:7860 ebook2audiobook:cpu --headless --ebook "/app/another_ebook_folder/myfile.pdf" [--voice /app/my/voicepath/voice.mp3 etc..]
CUDA:
docker run -v "./ebooks:/app/ebooks" -v "./audiobooks:/app/audiobooks" -v "./models:/app/models" -v "./voices:/app/voices" -v "./tmp:/app/tmp" -v "/my/real/ebooks/folder/absolute/path:/app/another_ebook_folder" --gpus all --rm -it -p 7860:7860 ebook2audiobook:cu[118/122/124/126 etc..] --headless --ebook "/app/another_ebook_folder/myfile.pdf" [--voice /app/my/voicepath/voice.mp3 etc..]
ROCM:
docker run -v "./ebooks:/app/ebooks" -v "./audiobooks:/app/audiobooks" -v "./models:/app/models" -v "./voices:/app/voices" -v "./tmp:/app/tmp" -v "/my/real/ebooks/folder/absolute/path:/app/another_ebook_folder" --device=/dev/kfd --device=/dev/dri --rm -it -p 7860:7860 ebook2audiobook:rocm[6.0/6.1/6.4 etc.] --headless --ebook "/app/another_ebook_folder/myfile.pdf" [--voice /app/my/voicepath/voice.mp3 etc..]
XPU:
docker run -v "./ebooks:/app/ebooks" -v "./audiobooks:/app/audiobooks" -v "./models:/app/models" -v "./voices:/app/voices" -v "./tmp:/app/tmp" -v "/my/real/ebooks/folder/absolute/path:/app/another_ebook_folder" --device=/dev/dri --rm -it -p 7860:7860 ebook2audiobook:xpu --headless --ebook "/app/another_ebook_folder/myfile.pdf" [--voice /app/my/voicepath/voice.mp3 etc..]
JETSON:
docker run -v "./ebooks:/app/ebooks" -v "./audiobooks:/app/audiobooks" -v "./models:/app/models" -v "./voices:/app/voices" -v "./tmp:/app/tmp" -v "/my/real/ebooks/folder/absolute/path:/app/another_ebook_folder" --runtime nvidia --rm -it -p 7860:7860 ebook2audiobook:jetson[51/60/61 etc.] --headless --ebook "/app/another_ebook_folder/myfile.pdf" [--voice /app/my/voicepath/voice.mp3 etc..]
Docker Compose (i.e. cuda 12.8:
Run Gradio GUI:
DEVICE_TAG=cu128 docker compose --profile gpu up --no-log-prefix
Run Headless mode:
DEVICE_TAG=cu128 docker compose --profile gpu run --rm ebook2audiobook --headless --ebook "/app/ebooks/myfile.pdf" --voice /app/voices/eng/adult/female/some_voice.wav etc..
Podman Compose (i.e. cuda 12.8:
Run Gradio GUI:
DEVICE_TAG=cu128 podman-compose -f podman-compose.yml --profile gpu up
Run Headless mode:
DEVICE_TAG=cu128 podman-compose -f podman-compose.yml --profile gpu run --rm ebook2audiobook-gpu --headless --ebook "/app/ebooks/myfile.pdf" --voice /app/voices/eng/adult/female/some_voice.wav etc..
- NOTE: MPS is not exposed in docker so CPU must be used
Cloned Voices
You can upload any voice audio in any of the supported audio formats, the ideal duration is around 1 to 5 mn. It doesn’t matter if the recording has a noisy background or music playing over it — E2A will clean up the voice for you.
The built-in cloned voices list is mainly in English. If you need voices in other languages to be officially added to the list, please contact us and we’ll add them after review.
Fine Tuned TTS models
Fine Tune your own XTTSv2 model
De-noise training data
Fine Tuned TTS Collection
For an XTTSv2 custom model a ref audio clip of the voice reference is mandatory:
Your own Ebook2Audiobook customization
You are free to modify libs/conf.py to add or remove the settings you wish. If you plan to do it just make a copy of the original conf.py so on each ebook2audiobook update you will backup your modified conf.py and put back the original one. You must plan the same process for models.py. If you wish to make your own custom model as an official ebook2audiobook fine tuned model so please contact us and we’ll add it to the presets list.
Reverting to older Versions
Releases can be found -> here
git checkout tags/VERSION_NUM # Locally/Compose -> Example: git checkout tags/v25.7.7
Common Issues:
- My NVIDIA/ROCm/XPU/MPS GPU isn’t being detected?? -> GPU ISSUES Wiki Page
- CPU is slow (better on server smp CPU) while GPU can have almost real time conversion. Discussion about this (It doesn’t have zero-shot voice cloning though, and is Siri quality voices, but it is much faster on cpu).
- “I’m having dependency issues” - Just use the docker, its fully self contained and has a headless mode,
add
--helpparameter at the end of the docker run command for more information. - “I’m getting a truncated audio issue!” - PLEASE MAKE AN ISSUE OF THIS, we don’t speak every language and need advise from users to fine tune the sentence splitting logic.😊
***** ROADMAP *****
- All Features open to public Contributions ⭐
- Any help from people speaking any of the supported languages to help us improve the models ⭐
- Preview Blocks/Chapters before to start the conversion
- Edit by sentence converted for surgical text change
- SML tags integration for voice, pause, break, and more changes
- -h -help parameter info in different languages
- OCR scanning for PDF / JPG / BMP / PNG / TIFF
- Notebooks Folder Talked about here
- Make Chinese text splitting not split words and improve pause timing Talked about here
- Dockerfile
- Docker compose
- Podman compose
- Kaggle Notebook
- Google Colab Notebook
- Audiobookshelf integration
- Ebook Translation option
- Output format choices
- Multiprocessing conversion
- Batch ebook folder conversion
- GPU Device detection
- Denoise any background reference audio for upload voice cloning,
- Custom fine tuned model upload
- Make a IOS app
- Make an android app
User Requests
- Add European Portuguese language model for xttsv2, fairseq, vits, piper at least (help welcome)
- Add Sindhi language model for xttsv2, fairseq, vits, piper at least (help welcome)
TTS engines
- XTTSv2
- Bark
- Fairseq
- VITS
- Tacotron2
- YourTTS
- Tortoise
- GlowTTS
- Piper
- GPT-SoVITS (https://github.com/RVC-Boss/GPT-SoVITS)
- OpenVoice (https://github.com/myshell-ai/OpenVoice)
- fish-speech (https://github.com/fishaudio/fish-speech)
- ChatTTS (https://github.com/2noise/ChatTTS)
- CosyVoice (https://github.com/FunAudioLLM/CosyVoice)
- F5-TTS (https://github.com/swivid/f5-tts)
- chatterbox (https://github.com/resemble-ai/chatterbox)
- Supertonic (https://github.com/supertone-inc/supertonic)
- Spark-TTS (https://github.com/sparkaudio/spark-tts)
- index-tts (https://github.com/index-tts/index-tts)
- MeloTTS (https://github.com/myshell-ai/MeloTTS)
- Kokoro-TTS (https://github.com/hexgrad/kokoro)
- OmniVoice (https://github.com/k2-fsa/OmniVoice)
- Zonos (https://github.com/Zyphra/Zonos)
- Style-TTS2 (https://github.com/yl4579/StyleTTS2)
- Orpheus-TTS (https://github.com/canopyai/Orpheus-TTS)
- NewTTS (https://github.com/neuphonic/neutts?tab=readme-ov-file)
- VIbeVoice (https://github.com/vibevoice-community/VibeVoice)
- Qwen3-TTS (https://huggingface.co/spaces/Qwen/Qwen3-TTS)
Readme Translation
- Arabic (ara)
- Chinese (zho)
- English (eng)
- Spanish (spa)
- French (fra)
- German (deu)
- Italian (ita)
- Portuguese (por)
- Polish (pol)
- Turkish (tur)
- Russian (rus)
- Dutch (nld)
- Czech (ces)
- Japanese (jpn)
- Hindi (hin)
- Bengali (ben)
- Hungarian (hun)
- Korean (kor)
- Vietnamese (vie)
- Swedish (swe)
- Persian (fas)
- Yoruba (yor)
- Swahili (swa)
- Indonesian (ind)
- Slovak (slk)
- Croatian (hrv)
🐍 OS Compatibility
- 🍎 Mac Intel x86
- 🪟 Windows x86
- 🐧 Linux x86
- 🖥️🍏 Apple Silicon Mac
- 🪟💪 ARM Windows
- 🐧💪 ARM Linux
Extra Overkill for training models and such (All supported Coqui-tts models and piper-tts in one easy command)
- For info about this @DrewThomasson, he is currently working on the development of this, work-in-progress-repo here
- Make a easy to use training gui for all coqui-tts models in the ljspeech format training recipes here from coqui tts
Python Code normalization information for contributors
- no blank line between code, unless between functions and classes.
- single quote used for all key unless for dict() and json. dict[‘key’] always called with single quote
- 4 spaces indentation, not tab at all
- strict typing for all functions and its arguments declaration and return values
- no space between the argument and its typing, no space between the function, the “->” and the return value
Example:
import json
from typing import Optional
def get_user(user_id:int, users:list[dict])->Optional[dict]:
for user in users:
if user['id'] == user_id:
return user
return None
def summarize(user:dict)->str:
return f"User {user['name']} is {'active' if user['is_active'] else 'inactive'}."
def to_json(user:dict)->str:
return json.dumps({"id": user['id'], "name": user['name'], "email": user['email']})
users:list = [
dict(id=1, name="alice", email="[email protected]", role="admin", is_active=True),
dict(id=2, name="bob", email="[email protected]", role="editor", is_active=False),
dict(id=3, name="carol", email="[email protected]", role="viewer", is_active=True),
]
config = {
"max_users": 100,
"default_role": "viewer",
"allow_signup": True,
}
roles = ['admin', 'editor', 'viewer']
found = get_user(1, users)
if found:
print(summarize(found))
print(found['email'])
print(to_json(found))
if config['default_role'] in roles:
print(config['default_role'])
Hardware donation for beta tests wanted
We accept any kind of hardware to test our development like:
- Nvidia supporting cuda >= 11.8
- XPU intel cards
- ROCm AMD cards supporting ROCm >=5.7
@DrewThomasson if you want to help out at all! 😃
Special Thanks
To all financial and code contributors, each contribution and suggestion helps to improve the quality of E2A.
相似文章
@wsl8297: 想把电子书或文档做成有声书?很多工具不是声音太“机器人”,就是不支持字幕同步,折腾一圈还是不满意。 我后来发现了开源项目 Abogen:支持 ePub、PDF、纯文本等,一键转高质量音频,还能自动生成同步字幕。 它底层用 Kokoro 语…
Abogen 是一个开源工具,可将 ePub、PDF 等文档一键转为高质量音频,并自动生成同步字幕,支持语音混合器和多种部署方式。
@Honcia13: 电子书秒变有声书的开源神器来了——Audiblez! 把 EPUB 直接扔进去, 几分钟就吐出高质量 M4B 有声书! 用的 Kokoro 语音模型,仅82M参数,但听感自然到离谱。 亮点: T4 GPU跑《动物庄园》只要5分钟 支持中英…
Audiblez 是一个开源工具,能将 EPUB 电子书快速转换为高质量的 M4B 有声书,使用 Kokoro-82M 语音模型,支持多种语言和图形界面,通过 pip 一键安装。
@LinearUncle: 推荐一家叫模思的中国公司的开源声音克隆仓库: MOSS-TTS 你朗读一段文字,它克隆你的声音,然后就可以用你的声音朗读任意文本,查看帖子详情看我实战如何使用,效果很好,可以以假乱真。 https://github.com/OpenMOS…
MOSS-TTS是模思公司推出的开源声音克隆模型,用户朗读少量文本即可克隆声音,随后可用克隆的声音生成任意语音,效果逼真。
@XAMTO_AI: GitHub上有个宝藏项目叫 EBOOK ETC,把微信读书、京东读书、喜马拉雅的资源全薅过来集中管理。 ① 经典文学、经管励志、职场创业、技术手册全都有 ② 标签分类 + 搜索功能,找书快得飞起 ③ epub、mobi、azw3 三种格…
这是一个GitHub上的开源项目,汇总了来自多个中文读书应用的电子书资源并分类整理,支持多种格式下载。
@Jolyne_AI: 有位开发者学《新概念英语》想练听力和跟读,却总卡在这些琐事上:音频要另找,想跳到某一句得来回拖进度条,节奏被打断,效率直线下降。 他索性做了个开源工具:NCE Flow,把《新概念英语》四册做成在线点读学习系统,一次性解决“找音频、对句子…
NCE Flow 是一个开源工具,将《新概念英语》四册内容做成在线点读学习系统,支持句子级点读、多语言视图、倍速连读、进度追踪等功能,可 Docker 自部署或直接在线使用。