drewThomasson
commited on
Commit
•
017ec2f
1
Parent(s):
d1fa884
Upload 4 files
Browse files- packages.txt +7 -0
- pyproject.toml +44 -0
- readme/README_CN.md +420 -0
- readme/README_RU.md +391 -0
packages.txt
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
wget
|
2 |
+
git
|
3 |
+
calibre
|
4 |
+
ffmpeg
|
5 |
+
libmecab-dev
|
6 |
+
mecab
|
7 |
+
mecab-ipadic
|
pyproject.toml
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[build-system]
|
2 |
+
name = "ebook2audiobook"
|
3 |
+
version = "2.0.0"
|
4 |
+
requires = ["setuptools >= 64"]
|
5 |
+
build-backend = "setuptools.build_meta"
|
6 |
+
|
7 |
+
[project]
|
8 |
+
name = "ebook2audiobook"
|
9 |
+
version = "2.0.0"
|
10 |
+
description = "Convert eBooks to audiobooks with chapters and metadata"
|
11 |
+
authors = [
|
12 |
+
{ name = "Drew Thomasson" }
|
13 |
+
]
|
14 |
+
dependencies = [
|
15 |
+
"beautifulsoup4",
|
16 |
+
"coqui-tts",
|
17 |
+
"cutlet",
|
18 |
+
"deep_translator",
|
19 |
+
"docker",
|
20 |
+
"ebooklib",
|
21 |
+
"gensim",
|
22 |
+
"gradio>=4.44",
|
23 |
+
"hangul-romanize",
|
24 |
+
"indic-nlp-library",
|
25 |
+
"iso-639",
|
26 |
+
"jieba",
|
27 |
+
"pydub",
|
28 |
+
"pypinyin",
|
29 |
+
"ray",
|
30 |
+
"transformers",
|
31 |
+
"translate",
|
32 |
+
"tqdm"
|
33 |
+
]
|
34 |
+
readme = "README.md"
|
35 |
+
requires-python = ">=3.10,<3.13"
|
36 |
+
classifiers = [
|
37 |
+
"Programming Language :: Python :: 3",
|
38 |
+
"License :: OSI Approved :: MIT License",
|
39 |
+
"Operating System :: OS Independent",
|
40 |
+
]
|
41 |
+
scripts = { "ebook2audiobook" = "app:main" }
|
42 |
+
|
43 |
+
[project.urls]
|
44 |
+
"Homepage" = "https://github.com/DrewThomasson/ebook2audiobook"
|
readme/README_CN.md
ADDED
@@ -0,0 +1,420 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# 📚 ebook2audiobook
|
2 |
+
|
3 |
+
使用Calibre和Coqui XTTS将电子书转换为包含章节和元数据的有声读物。支持可选的语音克隆和多种语言!
|
4 |
+
> [!IMPORTANT]
|
5 |
+
**本工具仅适用于非DRM、合法获取的电子书。**
|
6 |
+
作者对软件的任何误用或由此产生的法律后果概不负责。
|
7 |
+
请负责任地使用本工具,并遵守所有适用法律。
|
8 |
+
|
9 |
+
#### 🖥️ Web GUI界面
|
10 |
+
![demo_web_gui](https://github.com/user-attachments/assets/85af88a7-05dd-4a29-91de-76a14cf5ef06)
|
11 |
+
|
12 |
+
<details>
|
13 |
+
<summary>点击查看Web GUI的图片</summary>
|
14 |
+
<img width="1728" alt="image" src="https://github.com/user-attachments/assets/b36c71cf-8e06-484c-a252-934e6b1d0c2f">
|
15 |
+
<img width="1728" alt="image" src="https://github.com/user-attachments/assets/c0dab57a-d2d4-4658-bff9-3842ec90cb40">
|
16 |
+
<img width="1728" alt="image" src="https://github.com/user-attachments/assets/0a99eeac-c521-4b21-8656-e064c1adc528">
|
17 |
+
</details>
|
18 |
+
|
19 |
+
## 🌟 特征
|
20 |
+
|
21 |
+
- 📖 使用Calibre将电子书转换为文本格式。
|
22 |
+
- 📚 将电子书拆分为章节,以获得有组织的音频。
|
23 |
+
- 🎙️ 使用Coqui XTTS实现高质量的文本到语音转换。
|
24 |
+
- 🗣️ 可选择使用您自己的语音文件进行语音克隆。
|
25 |
+
- 🌍 支持多种语言(默认为英语)。
|
26 |
+
- 🖥️ 基于4GB RAM运行。
|
27 |
+
|
28 |
+
## 🛠️ 环境要求
|
29 |
+
|
30 |
+
- Python 3.10
|
31 |
+
- `coqui-tts` Python package
|
32 |
+
- Calibre (用于电子书转换)
|
33 |
+
- FFmpeg (用于有声读物创作)
|
34 |
+
- Optional: 用于语音克隆的自定义语音文件
|
35 |
+
|
36 |
+
### 🔧 安装说明
|
37 |
+
|
38 |
+
1. **安装 Python 3.x** from [Python.org](https://www.python.org/downloads/).
|
39 |
+
|
40 |
+
2. **安装 Calibre**:
|
41 |
+
- **Ubuntu**: `sudo apt-get install -y calibre`
|
42 |
+
- **macOS**: `brew install calibre`
|
43 |
+
- **Windows** (Admin Powershell): `choco install calibre`
|
44 |
+
|
45 |
+
3. **安装 FFmpeg**:
|
46 |
+
- **Ubuntu**: `sudo apt-get install -y ffmpeg`
|
47 |
+
- **macOS**: `brew install ffmpeg`
|
48 |
+
- **Windows** (Admin Powershell): `choco install ffmpeg`
|
49 |
+
|
50 |
+
4. **可选: Install Mecab** (非拉丁语言):
|
51 |
+
- **Ubuntu**: `sudo apt-get install -y mecab libmecab-dev mecab-ipadic-utf8`
|
52 |
+
- **macOS**: `brew install mecab`, `brew install mecab-ipadic`
|
53 |
+
- **Windows**: [mecab-website-to-install-manually](https://taku910.github.io/mecab/#download) (注:日语支持有限)
|
54 |
+
|
55 |
+
5. **安装 Python packages**:
|
56 |
+
```bash
|
57 |
+
pip install coqui-tts==0.24.2 pydub nltk beautifulsoup4 ebooklib tqdm gradio==4.44.0
|
58 |
+
|
59 |
+
python -m nltk.downloader punkt
|
60 |
+
python -m nltk.downloader punkt_tab
|
61 |
+
```
|
62 |
+
|
63 |
+
**For non-Latin languages**:
|
64 |
+
```bash
|
65 |
+
pip install mecab mecab-python3 unidic
|
66 |
+
|
67 |
+
python -m unidic download
|
68 |
+
```
|
69 |
+
|
70 |
+
## 🌐 支持的语言
|
71 |
+
|
72 |
+
- **English (en)**
|
73 |
+
- **Spanish (es)**
|
74 |
+
- **French (fr)**
|
75 |
+
- **German (de)**
|
76 |
+
- **Italian (it)**
|
77 |
+
- **Portuguese (pt)**
|
78 |
+
- **Polish (pl)**
|
79 |
+
- **Turkish (tr)**
|
80 |
+
- **Russian (ru)**
|
81 |
+
- **Dutch (nl)**
|
82 |
+
- **Czech (cs)**
|
83 |
+
- **Arabic (ar)**
|
84 |
+
- **Chinese (zh-cn)**
|
85 |
+
- **Japanese (ja)**
|
86 |
+
- **Hungarian (hu)**
|
87 |
+
- **Korean (ko)**
|
88 |
+
|
89 |
+
在无头模式下运行脚本时指定语言代码。
|
90 |
+
## 🚀 使用
|
91 |
+
|
92 |
+
### 🖥️ 启动Gradio Web界面
|
93 |
+
|
94 |
+
1. **运行脚本**:
|
95 |
+
```bash
|
96 |
+
python app.py
|
97 |
+
```
|
98 |
+
|
99 |
+
2. **打开web应用程序**: 点击终端中提供的URL访问web应用程序并转换电子书.
|
100 |
+
3. **公共链接**: 在末尾添加“--share True”,如下所示:`python app.py--share True`
|
101 |
+
- **[更多参数]**: 使用`-h`参数,如`python app.py-h`
|
102 |
+
|
103 |
+
### 📝 基本的无头用法
|
104 |
+
|
105 |
+
```bash
|
106 |
+
python app.py --headless True --ebook <path_to_ebook_file> --voice [path_to_voice_file] --language [language_code]
|
107 |
+
```
|
108 |
+
|
109 |
+
- **<path_to_ebook_file>**: 电子书文件的路径。
|
110 |
+
- **[path_to_voice_file]**: 指定转换的语音文件,可选。
|
111 |
+
- **[language_code]**: 指定转换的语言,可选。
|
112 |
+
- **[更多参数]**: 使用 `-h` 参数,如 `python app.py -h`
|
113 |
+
|
114 |
+
### 🧩 自定义XTTS模型的无头用法
|
115 |
+
|
116 |
+
```bash
|
117 |
+
python app.py --headless True --use_custom_model True --ebook <ebook_file_path> --voice <target_voice_file_path> --language <language> --custom_model <custom_model_path> --custom_config <custom_config_path> --custom_vocab <custom_vocab_path>
|
118 |
+
```
|
119 |
+
|
120 |
+
- **<ebook_file_path>**: 电子书文件的路径。
|
121 |
+
- **<target_voice_file_path>**: 指定转换的语音文件,可选。
|
122 |
+
- **<language>**: 指定转换的语言,可选。
|
123 |
+
- **<custom_model_path>**: `model.pth`的路径。
|
124 |
+
- **<custom_config_path>**: `config.json`的路径。
|
125 |
+
- **<custom_vocab_path>**: `vocab.json`的路径。
|
126 |
+
- **[更多参数]**: 使用 `-h` 参数,如 `python app.py -h`
|
127 |
+
|
128 |
+
### 🧩 自定义XTTS Fine-Tune 模型的无头用法 🌐
|
129 |
+
|
130 |
+
```bash
|
131 |
+
python app.py --headless True --use_custom_model True --ebook <ebook_file_path> --voice <target_voice_file_path> --language <language> --custom_model_url <custom_model_URL_ZIP_path>
|
132 |
+
```
|
133 |
+
|
134 |
+
- **<ebook_file_path>**: 电子书文件的路径。
|
135 |
+
- **<target_voice_file_path>**: 指定转换的语音文件,可选。
|
136 |
+
- **<language>**: 指定转换的语言,可选。
|
137 |
+
- **<custom_model_URL_ZIP_path>**: 模型文件夹压缩包的URL路径。例如
|
138 |
+
[xtts_David_Attenborough_fine_tune](https://huggingface.co/drewThomasson/xtts_David_Attenborough_fine_tune/tree/main) `https://huggingface.co/drewThomasson/xtts_David_Attenborough_fine_tune/resolve/main/Finished_model_files.zip?download=true`
|
139 |
+
- **[更多参数]**: 使用 `-h` 参数,如 `python app.py -h`
|
140 |
+
|
141 |
+
### 🔍 详细指南,包括所有要使用的参数列表
|
142 |
+
```bash
|
143 |
+
python app.py -h
|
144 |
+
```
|
145 |
+
- 这将输出以下内容:
|
146 |
+
```bash
|
147 |
+
usage: app.py [-h] [--share] [--headless [HEADLESS]] [--ebook EBOOK]
|
148 |
+
[--ebooks_dir [EBOOKS_DIR]] [--voice VOICE] [--language LANGUAGE]
|
149 |
+
[--device {cpu,gpu}] [--use_custom_model] [--custom_model CUSTOM_MODEL]
|
150 |
+
[--custom_config CUSTOM_CONFIG] [--custom_vocab CUSTOM_VOCAB]
|
151 |
+
[--custom_model_url CUSTOM_MODEL_URL] [--temperature TEMPERATURE]
|
152 |
+
[--length_penalty LENGTH_PENALTY]
|
153 |
+
[--repetition_penalty REPETITION_PENALTY] [--top_k TOP_K] [--top_p TOP_P]
|
154 |
+
[--speed SPEED] [--enable_text_splitting]
|
155 |
+
|
156 |
+
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.
|
157 |
+
|
158 |
+
options:
|
159 |
+
-h, --help show this help message and exit
|
160 |
+
--share Enable a public shareable Gradio link. Defaults to False.
|
161 |
+
--headless [HEADLESS]
|
162 |
+
Run in headless mode. Defaults to True if the flag is present without a value, False otherwise.
|
163 |
+
--ebook EBOOK Path to the ebook file for conversion. Required in headless mode.
|
164 |
+
--ebooks_dir [EBOOKS_DIR]
|
165 |
+
Path to the directory containing ebooks for batch conversion. Defaults to './ebooks' if 'default' value is provided.
|
166 |
+
--voice VOICE Path to the target voice file for TTS. Optional, uses a default voice if not provided.
|
167 |
+
--language LANGUAGE Language for the audiobook conversion. Options: en, es, fr, de, it, pt, pl, tr, ru, nl, cs, ar, zh-cn, ja, hu, ko. Defaults to English (en).
|
168 |
+
--device {cpu,gpu} Type of processor unit for the audiobook conversion. Defaults to cpu.
|
169 |
+
--use_custom_model Use a custom TTS model. Defaults to False. Must be True to use custom models.
|
170 |
+
--custom_model CUSTOM_MODEL
|
171 |
+
Path to the custom model file (.pth). Required if using a custom model.
|
172 |
+
--custom_config CUSTOM_CONFIG
|
173 |
+
Path to the custom config file (config.json). Required if using a custom model.
|
174 |
+
--custom_vocab CUSTOM_VOCAB
|
175 |
+
Path to the custom vocab file (vocab.json). Required if using a custom model.
|
176 |
+
--custom_model_url CUSTOM_MODEL_URL
|
177 |
+
URL to download the custom model as a zip file. Optional, but will be used if provided. Examples include David Attenborough's model: 'https://huggingface.co/drewThomasson/xtts_David_Attenborough_fine_tune/resolve/main/Finished_model_files.zip?download=true'. More XTTS fine-tunes can be found on my Hugging Face at 'https://huggingface.co/drewThomasson'.
|
178 |
+
--temperature TEMPERATURE
|
179 |
+
Temperature for the model. Defaults to 0.65. Higher temperatures lead to more creative outputs.
|
180 |
+
--length_penalty LENGTH_PENALTY
|
181 |
+
A length penalty applied to the autoregressive decoder. Defaults to 1.0. Not applied to custom models.
|
182 |
+
--repetition_penalty REPETITION_PENALTY
|
183 |
+
A penalty that prevents the autoregressive decoder from repeating itself. Defaults to 2.0.
|
184 |
+
--top_k TOP_K Top-k sampling. Lower values mean more likely outputs and increased audio generation speed. Defaults to 50.
|
185 |
+
--top_p TOP_P Top-p sampling. Lower values mean more likely outputs and increased audio generation speed. Defaults to 0.8.
|
186 |
+
--speed SPEED Speed factor for the speech generation. Defaults to 1.0.
|
187 |
+
--enable_text_splitting
|
188 |
+
Enable splitting text into sentences. Defaults to False.
|
189 |
+
|
190 |
+
Example usage:
|
191 |
+
Windows:
|
192 |
+
headless:
|
193 |
+
./ebook2audiobook.cmd --headless --ebook 'path_to_ebook' --voice 'path_to_voice' --language en --use_custom_model --custom_model 'model.zip' --custom_config config.json --custom_vocab vocab.json
|
194 |
+
Graphic Interface:
|
195 |
+
./ebook2audiobook.cmd
|
196 |
+
Linux/Mac:
|
197 |
+
headless:
|
198 |
+
./ebook2audiobook.sh --headless --ebook 'path_to_ebook' --voice 'path_to_voice' --language en --use_custom_model --custom_model 'model.zip' --custom_config config.json --custom_vocab vocab.json
|
199 |
+
Graphic Interface:
|
200 |
+
./ebook2audiobook.sh
|
201 |
+
```
|
202 |
+
|
203 |
+
<details>
|
204 |
+
<summary>⚠️ 遗留的旧版使用说明</summary>
|
205 |
+
|
206 |
+
## 🚀 使用
|
207 |
+
|
208 |
+
----> `ebook2audiobookXTTS/legacy/`
|
209 |
+
|
210 |
+
### 🖥️ Web界面
|
211 |
+
|
212 |
+
1. **运行脚本**:
|
213 |
+
```bash
|
214 |
+
python custom_model_ebook2audiobookXTTS_gradio.py
|
215 |
+
```
|
216 |
+
|
217 |
+
2. **打开web应用程序**: 单击终端中提供的URL以访问web应用程序并转换电子书。
|
218 |
+
|
219 |
+
### 📝 基础用法
|
220 |
+
|
221 |
+
```bash
|
222 |
+
python ebook2audiobook.py <path_to_ebook_file> [path_to_voice_file] [language_code]
|
223 |
+
```
|
224 |
+
|
225 |
+
- **<path_to_ebook_file>**: 电子书文件的路径。
|
226 |
+
- **[path_to_voice_file]**: 指定转换的语音文件,可选。
|
227 |
+
- **[language_code]**: 指定转换的语言,可选。
|
228 |
+
|
229 |
+
### 🧩 自定义XTTS模型
|
230 |
+
|
231 |
+
```bash
|
232 |
+
python custom_model_ebook2audiobookXTTS.py <ebook_file_path> <target_voice_file_path> <language> <custom_model_path> <custom_config_path> <custom_vocab_path>
|
233 |
+
```
|
234 |
+
|
235 |
+
- **<ebook_file_path>**: 电子书文件的路径。
|
236 |
+
- **<target_voice_file_path>**: 指定转换的语音文件,可选。
|
237 |
+
- **<language>**: 指定转换的语言,可选。
|
238 |
+
- **<custom_model_path>**: `model.pth`的路径。
|
239 |
+
- **<custom_config_path>**: `config.json`的路径。
|
240 |
+
- **<custom_vocab_path>**: `vocab.json`的路径。
|
241 |
+
</details>
|
242 |
+
|
243 |
+
### 🐳 使用Docker
|
244 |
+
|
245 |
+
您还可以使用Docker运行电子书到有声读物的转换器。这种方法确保了不同环境之间的一致性,并简化了设置。
|
246 |
+
|
247 |
+
#### 🚀 运行Docker容器
|
248 |
+
|
249 |
+
要运行Docker容器并启动Gradio接口,请使用以下命令:
|
250 |
+
|
251 |
+
-仅使用CPU运行
|
252 |
+
```powershell
|
253 |
+
docker run -it --rm -p 7860:7860 --platform=linux/amd64 athomasson2/ebook2audiobookxtts:huggingface python app.py
|
254 |
+
```
|
255 |
+
-使用GPU加速运行(仅限Nvida显卡)
|
256 |
+
```powershell
|
257 |
+
docker run -it --rm --gpus all -p 7860:7860 --platform=linux/amd64 athomasson2/ebook2audiobookxtts:huggingface python app.py
|
258 |
+
```
|
259 |
+
|
260 |
+
此命令将启动7860端口上的Gradio接口(localhost:7860)
|
261 |
+
- 对于更多选项,如以无头模式运行docker或公开gradio链接,请在docker启动命令中的`app.py`后添加`-h`参数
|
262 |
+
<details>
|
263 |
+
<summary><strong>在无头模式下使用docker或使用额外参数修改任何内容的示例+完整指南</strong></summary>
|
264 |
+
|
265 |
+
## 在无头模式下使用docker的示例
|
266 |
+
|
267 |
+
首先是docker pull的最新版本
|
268 |
+
```bash
|
269 |
+
docker pull athomasson2/ebook2audiobookxtts:huggingface
|
270 |
+
```
|
271 |
+
|
272 |
+
- 在运行此命令之前,您需要在当前目录中创建一个名为“input folder”的目录,该目录将被链接,您可以在此处放置docker镜像的输入文件
|
273 |
+
```bash
|
274 |
+
mkdir input-folder && mkdir Audiobooks
|
275 |
+
```
|
276 |
+
|
277 |
+
- 运行下面命令需要将 **YOUR_INPUT_FILE.TXT** 替换为您创建的输入文件的名称
|
278 |
+
|
279 |
+
```bash
|
280 |
+
docker run -it --rm \
|
281 |
+
-v $(pwd)/input-folder:/home/user/app/input_folder \
|
282 |
+
-v $(pwd)/Audiobooks:/home/user/app/Audiobooks \
|
283 |
+
--platform linux/amd64 \
|
284 |
+
athomasson2/ebook2audiobookxtts:huggingface \
|
285 |
+
python app.py --headless True --ebook /home/user/app/input_folder/YOUR_INPUT_FILE.TXT
|
286 |
+
```
|
287 |
+
|
288 |
+
- 应该就是这样了!
|
289 |
+
|
290 |
+
- 输出Audiobooks将在Audiobook文件夹中找到,该文件夹也位于您运行此docker命令的本地目录中
|
291 |
+
|
292 |
+
|
293 |
+
## 要获取此程序中其他参数的帮助命令,可以运行以下命令
|
294 |
+
|
295 |
+
```bash
|
296 |
+
docker run -it --rm \
|
297 |
+
--platform linux/amd64 \
|
298 |
+
athomasson2/ebook2audiobookxtts:huggingface \
|
299 |
+
python app.py -h
|
300 |
+
|
301 |
+
```
|
302 |
+
|
303 |
+
|
304 |
+
这将输出以下内容
|
305 |
+
|
306 |
+
```bash
|
307 |
+
user/app/ebook2audiobookXTTS/input-folder -v $(pwd)/Audiobooks:/home/user/app/ebook2audiobookXTTS/Audiobooks --memory="4g" --network none --platform linux/amd64 athomasson2/ebook2audiobookxtts:huggingface python app.py -h
|
308 |
+
starting...
|
309 |
+
usage: app.py [-h] [--share SHARE] [--headless HEADLESS] [--ebook EBOOK] [--voice VOICE]
|
310 |
+
[--language LANGUAGE] [--use_custom_model USE_CUSTOM_MODEL]
|
311 |
+
[--custom_model CUSTOM_MODEL] [--custom_config CUSTOM_CONFIG]
|
312 |
+
[--custom_vocab CUSTOM_VOCAB] [--custom_model_url CUSTOM_MODEL_URL]
|
313 |
+
[--temperature TEMPERATURE] [--length_penalty LENGTH_PENALTY]
|
314 |
+
[--repetition_penalty REPETITION_PENALTY] [--top_k TOP_K] [--top_p TOP_P]
|
315 |
+
[--speed SPEED] [--enable_text_splitting ENABLE_TEXT_SPLITTING]
|
316 |
+
|
317 |
+
Convert eBooks to Audiobooks using a Text-to-Speech model. You can either launch the
|
318 |
+
Gradio interface or run the script in headless mode for direct conversion.
|
319 |
+
|
320 |
+
options:
|
321 |
+
-h, --help show this help message and exit
|
322 |
+
--share SHARE Set to True to enable a public shareable Gradio link. Defaults
|
323 |
+
to False.
|
324 |
+
--headless HEADLESS Set to True to run in headless mode without the Gradio
|
325 |
+
interface. Defaults to False.
|
326 |
+
--ebook EBOOK Path to the ebook file for conversion. Required in headless
|
327 |
+
mode.
|
328 |
+
--voice VOICE Path to the target voice file for TTS. Optional, uses a default
|
329 |
+
voice if not provided.
|
330 |
+
--language LANGUAGE Language for the audiobook conversion. Options: en, es, fr, de,
|
331 |
+
it, pt, pl, tr, ru, nl, cs, ar, zh-cn, ja, hu, ko. Defaults to
|
332 |
+
English (en).
|
333 |
+
--use_custom_model USE_CUSTOM_MODEL
|
334 |
+
Set to True to use a custom TTS model. Defaults to False. Must
|
335 |
+
be True to use custom models, otherwise you'll get an error.
|
336 |
+
--custom_model CUSTOM_MODEL
|
337 |
+
Path to the custom model file (.pth). Required if using a custom
|
338 |
+
model.
|
339 |
+
--custom_config CUSTOM_CONFIG
|
340 |
+
Path to the custom config file (config.json). Required if using
|
341 |
+
a custom model.
|
342 |
+
--custom_vocab CUSTOM_VOCAB
|
343 |
+
Path to the custom vocab file (vocab.json). Required if using a
|
344 |
+
custom model.
|
345 |
+
--custom_model_url CUSTOM_MODEL_URL
|
346 |
+
URL to download the custom model as a zip file. Optional, but
|
347 |
+
will be used if provided. Examples include David Attenborough's
|
348 |
+
model: 'https://huggingface.co/drewThomasson/xtts_David_Attenbor
|
349 |
+
ough_fine_tune/resolve/main/Finished_model_files.zip?download=tr
|
350 |
+
ue'. More XTTS fine-tunes can be found on my Hugging Face at
|
351 |
+
'https://huggingface.co/drewThomasson'.
|
352 |
+
--temperature TEMPERATURE
|
353 |
+
Temperature for the model. Defaults to 0.65. Higher Tempatures
|
354 |
+
will lead to more creative outputs IE: more Hallucinations.
|
355 |
+
Lower Tempatures will be more monotone outputs IE: less
|
356 |
+
Hallucinations.
|
357 |
+
--length_penalty LENGTH_PENALTY
|
358 |
+
A length penalty applied to the autoregressive decoder. Defaults
|
359 |
+
to 1.0. Not applied to custom models.
|
360 |
+
--repetition_penalty REPETITION_PENALTY
|
361 |
+
A penalty that prevents the autoregressive decoder from
|
362 |
+
repeating itself. Defaults to 2.0.
|
363 |
+
--top_k TOP_K Top-k sampling. Lower values mean more likely outputs and
|
364 |
+
increased audio generation speed. Defaults to 50.
|
365 |
+
--top_p TOP_P Top-p sampling. Lower values mean more likely outputs and
|
366 |
+
increased audio generation speed. Defaults to 0.8.
|
367 |
+
--speed SPEED Speed factor for the speech generation. IE: How fast the
|
368 |
+
Narrerator will speak. Defaults to 1.0.
|
369 |
+
--enable_text_splitting ENABLE_TEXT_SPLITTING
|
370 |
+
Enable splitting text into sentences. Defaults to True.
|
371 |
+
|
372 |
+
Example: python script.py --headless --ebook path_to_ebook --voice path_to_voice
|
373 |
+
--language en --use_custom_model True --custom_model model.pth --custom_config
|
374 |
+
config.json --custom_vocab vocab.json
|
375 |
+
```
|
376 |
+
</details>
|
377 |
+
|
378 |
+
#### 🖥️ Docker图形用户界面
|
379 |
+
![demo_web_gui](https://github.com/user-attachments/assets/85af88a7-05dd-4a29-91de-76a14cf5ef06)
|
380 |
+
|
381 |
+
<details>
|
382 |
+
<summary>点击查看Web界面的图片</summary>
|
383 |
+
<img width="1728" alt="image" src="https://github.com/user-attachments/assets/b36c71cf-8e06-484c-a252-934e6b1d0c2f">
|
384 |
+
<img width="1728" alt="image" src="https://github.com/user-attachments/assets/c0dab57a-d2d4-4658-bff9-3842ec90cb40">
|
385 |
+
<img width="1728" alt="image" src="https://github.com/user-attachments/assets/0a99eeac-c521-4b21-8656-e064c1adc528">
|
386 |
+
</details>
|
387 |
+
|
388 |
+
### 🛠️ 关于自定义XTTS模型
|
389 |
+
|
390 |
+
为更好地处理特定声音而构建的模型。查看我的Hugging Face页面 [here](https://huggingface.co/drewThomasson).
|
391 |
+
|
392 |
+
要使用自定义模型,请粘贴“Finished_model_files.zip”文件的链接,如下所示:
|
393 |
+
|
394 |
+
[David Attenborough fine tuned Finished_model_files.zip](https://huggingface.co/drewThomasson/xtts_David_Attenborough_fine_tune/resolve/main/Finished_model_files.zip?download=true)
|
395 |
+
|
396 |
+
|
397 |
+
|
398 |
+
|
399 |
+
更多详细信息请访问 [Dockerfile Hub Page]([https://github.com/DrewThomasson/ebook2audiobookXTTS](https://hub.docker.com/repository/docker/athomasson2/ebook2audiobookxtts/general)).
|
400 |
+
|
401 |
+
## 🌐 微调XTTS模型
|
402 |
+
|
403 |
+
要查找已经过微调的XTTS型号,请访问[Hugging Face](https://huggingface.co/drewThomasson) 🌐. 模型搜索需要包含“xtts fine tune”的关键字。
|
404 |
+
|
405 |
+
## 🎥 Demos
|
406 |
+
|
407 |
+
https://github.com/user-attachments/assets/8486603c-38b1-43ce-9639-73757dfb1031
|
408 |
+
|
409 |
+
## 🤗 [Huggingface space demo](https://huggingface.co/spaces/drewThomasson/ebook2audiobookXTTS)
|
410 |
+
- Huggingface空间正在空闲cpu层上运行,所以预计会非常慢或超时,哈哈,只是不要给它大文件
|
411 |
+
- 最好复制空间或在本地运行。
|
412 |
+
## 📚 支持的电子书格式
|
413 |
+
|
414 |
+
- `.epub`, `.pdf`, `.mobi`, `.txt`, `.html`, `.rtf`, `.chm`, `.lit`, `.pdb`, `.fb2`, `.odt`, `.cbr`, `.cbz`, `.prc`, `.lrf`, `.pml`, `.snb`, `.cbc`, `.rb`, `.tcr`
|
415 |
+
- **最佳结果**: `.epub` 或者 `.mobi`格式可以进行自动章节检测。
|
416 |
+
|
417 |
+
## 📂 输出
|
418 |
+
|
419 |
+
- 创建一个包含元数据和章节的“.m4b”文件。
|
420 |
+
- **例子**: ![Example](https://github.com/DrewThomasson/VoxNovel/blob/dc5197dff97252fa44c391dc0596902d71278a88/readme_files/example_in_app.jpeg)
|
readme/README_RU.md
ADDED
@@ -0,0 +1,391 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# 📚 ebook2audiobook
|
2 |
+
|
3 |
+
Конвертация электронных книг в аудиокниги с сохранением глав и метаданных, используются механизмы Calibre и XTTS. Поддерживаются опциональное клонирование голоса и множественные языки!
|
4 |
+
> [!IMPORTANT]
|
5 |
+
**Этот инструмент предназначен для использования только с электронными книгами, не защищёнными DRM, приобретёнными законным путём.**
|
6 |
+
Авторы не несут ответственности за неправильное использование этого программного обеспечения или любые юридические последствия, связанные с его использованием.
|
7 |
+
Используйте этот инструмент ответственно и в соответствии с действующим законодательством.
|
8 |
+
|
9 |
+
|
10 |
+
#### 🖥️ Web-интерфейс
|
11 |
+
![demo_web_gui](https://github.com/user-attachments/assets/85af88a7-05dd-4a29-91de-76a14cf5ef06)
|
12 |
+
|
13 |
+
<details>
|
14 |
+
<summary>Больше картинок Web-интерфейса</summary>
|
15 |
+
<img width="1728" alt="image" src="https://github.com/user-attachments/assets/b36c71cf-8e06-484c-a252-934e6b1d0c2f">
|
16 |
+
<img width="1728" alt="image" src="https://github.com/user-attachments/assets/c0dab57a-d2d4-4658-bff9-3842ec90cb40">
|
17 |
+
<img width="1728" alt="image" src="https://github.com/user-attachments/assets/0a99eeac-c521-4b21-8656-e064c1adc528">
|
18 |
+
</details>
|
19 |
+
|
20 |
+
## README.md
|
21 |
+
- en [English](README.md)
|
22 |
+
- zh_CN [简体中文](readme/README_CN.md)
|
23 |
+
- ru [Русский](readme/README_RU.md)
|
24 |
+
|
25 |
+
|
26 |
+
## 🌟 Возможности
|
27 |
+
|
28 |
+
- 📖 Преобразование электронных книг в текстовой формат при помощи Calibre.
|
29 |
+
- 📚 Разбитие электронных книг по главам для аудиоформата.
|
30 |
+
- 🎙️ Высококачественное преобразование текста в голос при помощи Coqui XTTS.
|
31 |
+
- 🗣️ Опциональное клонирование голоса на основе вашего голосового файла.
|
32 |
+
- 🌍 Многоязыковая поддержка (Английский по умолчанию).
|
33 |
+
- 🖥️ Для работы достаточно всего 4 Гб ОЗУ.
|
34 |
+
|
35 |
+
## 🤗 [Демонстрация на Huggingface](https://huggingface.co/spaces/drewThomasson/ebook2audiobookXTTS)
|
36 |
+
- Пространство на Huggingface работает на бесплатном процессорном уровне, посему не стоит ожидать от него высокой скорости обработки или отсутствие сообщений о таймаутах. Даже и не пытайтесь обработать большие файлы.
|
37 |
+
- Лучше всего скопировать пространство или запустить приложение локально.
|
38 |
+
|
39 |
+
## Бесплатный Google Colab [![Бесплатный Google Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/DrewThomasson/ebook2audiobookXTTS/blob/main/Notebooks/colab_ebook2audiobookxtts.ipynb)
|
40 |
+
|
41 |
+
|
42 |
+
## 🛠️ Требования
|
43 |
+
|
44 |
+
- Python 3.10
|
45 |
+
- `coqui-tts` Python package
|
46 |
+
- Calibre (для конвертации электронных книг)
|
47 |
+
- FFmpeg (для создания аудиокниг)
|
48 |
+
- Опционально: собственный файл с голосом для начитки
|
49 |
+
|
50 |
+
|
51 |
+
### 🔧 Установка
|
52 |
+
|
53 |
+
1. **Установить Python 3.x** из [Python.org](https://www.python.org/downloads/).
|
54 |
+
|
55 |
+
2. **Установить Calibre**:
|
56 |
+
- **Ubuntu**: `sudo apt-get install -y calibre`
|
57 |
+
- **macOS**: `brew install calibre`
|
58 |
+
- **Windows** (Admin Powershell): `choco install calibre`
|
59 |
+
|
60 |
+
3. **Установить FFmpeg**:
|
61 |
+
- **Ubuntu**: `sudo apt-get install -y ffmpeg`
|
62 |
+
- **macOS**: `brew install ffmpeg`
|
63 |
+
- **Windows** (Admin Powershell): `choco install ffmpeg`
|
64 |
+
|
65 |
+
4. **Опционально: установить Mecab** (для не латинских языков):
|
66 |
+
- **Ubuntu**: `sudo apt-get install -y mecab libmecab-dev mecab-ipadic-utf8`
|
67 |
+
- **macOS**: `brew install mecab`, `brew install mecab-ipadic`
|
68 |
+
- **Windows**: [mecab-website-to-install-manually](https://taku910.github.io/mecab/#download) (Замечание: Японский язык поддерживается ограничено)
|
69 |
+
|
70 |
+
5. **Установить пакеты Python**:
|
71 |
+
```bash
|
72 |
+
pip install coqui-tts==0.24.2 pydub nltk beautifulsoup4 ebooklib tqdm gradio==4.44.0
|
73 |
+
|
74 |
+
python -m nltk.downloader punkt
|
75 |
+
python -m nltk.downloader punkt_tab
|
76 |
+
```
|
77 |
+
|
78 |
+
**Для не латинских языков**:
|
79 |
+
```bash
|
80 |
+
pip install mecab mecab-python3 unidic
|
81 |
+
|
82 |
+
python -m unidic download
|
83 |
+
```
|
84 |
+
|
85 |
+
## 🌐 Поддерживаемые языки
|
86 |
+
|
87 |
+
- **English (en)**
|
88 |
+
- **Spanish (es)**
|
89 |
+
- **French (fr)**
|
90 |
+
- **German (de)**
|
91 |
+
- **Italian (it)**
|
92 |
+
- **Portuguese (pt)**
|
93 |
+
- **Polish (pl)**
|
94 |
+
- **Turkish (tr)**
|
95 |
+
- **Russian (ru)**
|
96 |
+
- **Dutch (nl)**
|
97 |
+
- **Czech (cs)**
|
98 |
+
- **Arabic (ar)**
|
99 |
+
- **Chinese (zh-cn)**
|
100 |
+
- **Japanese (ja)**
|
101 |
+
- **Hungarian (hu)**
|
102 |
+
- **Korean (ko)**
|
103 |
+
|
104 |
+
Указывайте код нужного языка при запуске в безинтерфейсном режиме (в коммандной строке).
|
105 |
+
## 🚀 Использование
|
106 |
+
|
107 |
+
### 🖥️ Запуск Gradio Web-интерфейса
|
108 |
+
|
109 |
+
1. **Запустите скрипт**:
|
110 |
+
```bash
|
111 |
+
python app.py
|
112 |
+
```
|
113 |
+
|
114 |
+
2. **Откройте Web-приложение**: нажмите на ссылку появившуся в окне терминала для доступа к Web-приложению и конвертированию электронных книг.
|
115 |
+
3. **Для доступа из сети**: добавьте `--share True` в конец команды, наподобие: `python app.py --share True`
|
116 |
+
- **[Для большего количества параметров]**: используйте `-h` ключ, наподобие: `python app.py -h`
|
117 |
+
|
118 |
+
### 📝 Типовое использование в безинтерфейсном режиме
|
119 |
+
|
120 |
+
```bash
|
121 |
+
python app.py --headless True --ebook <path_to_ebook_file> --voice [path_to_voice_file] --language [language_code]
|
122 |
+
```
|
123 |
+
|
124 |
+
- **<path_to_ebook_file>**: путь к файлу электронной книги.
|
125 |
+
- **[path_to_voice_file]**: путь к примеру голоса, для опционального клонирования голоса для начитки.
|
126 |
+
- **[language_code]**: по желанию, выбрать язык.
|
127 |
+
- **[Для большего количества парамтеров]**: используйте `-h` ключ, наподобие `python app.py -h`
|
128 |
+
|
129 |
+
### 🧩 Безинтерфейсное использование с индивиуальной моделью XTTS
|
130 |
+
|
131 |
+
```bash
|
132 |
+
python app.py --headless True --use_custom_model True --ebook <ebook_file_path> --voice <target_voice_file_path> --language <language> --custom_model <custom_model_path> --custom_config <custom_config_path> --custom_vocab <custom_vocab_path>
|
133 |
+
```
|
134 |
+
|
135 |
+
- **<ebook_file_path>**: путь к файлу электронной книги.
|
136 |
+
- **<target_voice_file_path>**: путь к примеру голоса, для опционального клонирования.
|
137 |
+
- **\<language>**: по желанию, выбрать язык.
|
138 |
+
- **<custom_model_path>**: путь к `model.pth`.
|
139 |
+
- **<custom_config_path>**: путь к `config.json`.
|
140 |
+
- **<custom_vocab_path>**: путь к `vocab.json`.
|
141 |
+
- **[Для большего количества парамтеров]**: используйте `-h` ключ, наподобие `python app.py -h`
|
142 |
+
|
143 |
+
|
144 |
+
### 🧩 Безинтерфейсое использование с индивидуальной моделью XTTS со ссылкой на Zip-архив содержащий модель тонкой настройки XTTS 🌐
|
145 |
+
|
146 |
+
```bash
|
147 |
+
python app.py --headless True --use_custom_model True --ebook <ebook_file_path> --voice <target_voice_file_path> --language <language> --custom_model_url <custom_model_URL_ZIP_path>
|
148 |
+
```
|
149 |
+
|
150 |
+
- **<ebook_file_path>**: путь к файлу eBook.
|
151 |
+
- **<target_voice_file_path>**: путь к примеру голоса, для опционального клонирования.
|
152 |
+
- **\<language>**: по желанию, выбрать язык.
|
153 |
+
- **<custom_model_URL_ZIP_path>**: путь в виде URL к архиву формата zip с папкой модели. Например, [xtts_David_Attenborough_fine_tune](https://huggingface.co/drewThomasson/xtts_David_Attenborough_fine_tune/tree/main) `https://huggingface.co/drewThomasson/xtts_David_Attenborough_fine_tune/resolve/main/Finished_model_files.zip?download=true`
|
154 |
+
- Для индивидуальной модели все равно потребуется референсный аудиофайл с голосом:
|
155 |
+
[референсный аудиофайл с голосом David Attenborough](https://huggingface.co/drewThomasson/xtts_David_Attenborough_fine_tune/blob/main/ref.wav)
|
156 |
+
- **[Для большего количества парамтеров]**: используйте `-h` ключ, наподобие `python app.py -h`
|
157 |
+
|
158 |
+
### 🔍 Для подробного списка всех параметров используйте
|
159 |
+
```bash
|
160 |
+
python app.py -h
|
161 |
+
```
|
162 |
+
- Будет выведен примерно следующий сприсок ключей:
|
163 |
+
```bash
|
164 |
+
использование: app.py [-h] [--share SHARE] [--headless HEADLESS] [--ebook EBOOK] [--voice VOICE]
|
165 |
+
[--language LANGUAGE] [--use_custom_model USE_CUSTOM_MODEL]
|
166 |
+
[--custom_model CUSTOM_MODEL] [--custom_config CUSTOM_CONFIG]
|
167 |
+
[--custom_vocab CUSTOM_VOCAB] [--custom_model_url CUSTOM_MODEL_URL]
|
168 |
+
[--temperature TEMPERATURE] [--length_penalty LENGTH_PENALTY]
|
169 |
+
[--repetition_penalty REPETITION_PENALTY] [--top_k TOP_K] [--top_p TOP_P]
|
170 |
+
[--speed SPEED] [--enable_text_splitting ENABLE_TEXT_SPLITTING]
|
171 |
+
|
172 |
+
Преобразование электронных книг в аудиокниги с использованием модели Text-to-Speech (TTS). Вы можете либо использовать
|
173 |
+
интерфейс Gradio, либо запустить скрипт в безинтерфейсном режиме (командная строка) для прямого конвертирования.
|
174 |
+
|
175 |
+
опции:
|
176 |
+
-h, --help Отобразить этот список и выйти
|
177 |
+
--share SHARE Установить в True для включения публичного доступа к Web-интерфейсу Gradio. По умолчанию False.
|
178 |
+
--headless HEADLESS Установить в True для использования безинтерфейсного режима. По умолчанию False.
|
179 |
+
--ebook EBOOK Путь к электронной книге для конвертации. Необходимо для безинтерфейсного режима.
|
180 |
+
--voice VOICE Путь к целевому голосовому файлу для TTS (текст-в-голос). Опционально, используется голос по умолчанию, если путь не указан.
|
181 |
+
--language LANGUAGE Язык для конвертации в аудиокнигу. Варианты: en, es, fr, de,
|
182 |
+
it, pt, pl, tr, ru, nl, cs, ar, zh-cn, ja, hu, ko. По умолчанию English (en).
|
183 |
+
--use_custom_model USE_CUSTOM_MODEL
|
184 |
+
Установить в True для использования индивидуальной модели TTS. По умолчанию False. Необходимо переключить в
|
185 |
+
True для использования индивидулаьной модели, в противном случае возникнет ошибка.
|
186 |
+
--custom_model CUSTOM_MODEL
|
187 |
+
Путь к файлу индивидуальной модели (.pth). Требуется, если используется индивидуальная модель.
|
188 |
+
--custom_config CUSTOM_CONFIG
|
189 |
+
Путь к конфигурационнмоу файлу индивидуальной модели (config.json). Требуется, если используется индивидуальная модель.
|
190 |
+
--custom_vocab CUSTOM_VOCAB
|
191 |
+
Путь к словарю индивидуальной модели (vocab.json). Требуется, если используется индивидуальная модель.
|
192 |
+
--custom_model_url CUSTOM_MODEL_URL
|
193 |
+
URL для скачивания индивидуальной модели в виде zip-архива. Опционально, но если указано, то будет использовано.
|
194 |
+
Примеры включающие модель David Attenborough: 'https://huggingface.co/drewThomasson/xtts_David_Attenborough_fine_tune/resolve/main/Finished_model_files.zip?download=true'. Больше точно-настроенных моделей XTTS можно найти на Hugging Face 'https://huggingface.co/drewThomasson'.
|
195 |
+
--temperature TEMPERATURE
|
196 |
+
Температура для модели. По умолчанию 0.65. Чем выше температура, тем более креативным будет синтез голоса, с большим наваждением. Чем меньше, тем более монотонным и спокойным.
|
197 |
+
--length_penalty LENGTH_PENALTY
|
198 |
+
Ограничение длинны авторегрессионного декодреа. По умолчанию 1.0. Не применяется к индивидуальным моделям.
|
199 |
+
--repetition_penalty REPETITION_PENALTY
|
200 |
+
Ограниечение предотвращающее повторение авторегрессивным декодером за собой. По умолчанию 2.0
|
201 |
+
--top_k TOP_K Сэмплирование Top-k. Меньшее значние приводит к более вероятностному выводу и ускоряют генерацию аудио. По умолчанию 50.
|
202 |
+
--top_p TOP_P Сэмплирование Top-p. Меньшее значние приводит к более вероятностному выводу и ускоряют генерацию аудио. По у��олчанию 0.8.
|
203 |
+
--speed SPEED Фактор скорости начитки. Чем больше значение, тем быстрее диктор будет читать текст. По умолчанию 1.0.
|
204 |
+
--enable_text_splitting ENABLE_TEXT_SPLITTING
|
205 |
+
Включает разбиение текста на предложения. По умолчаниею True.
|
206 |
+
|
207 |
+
Пример: python script.py --headless --ebook path_to_ebook --voice path_to_voice --language en --use_custom_model True --custom_model model.pth --custom_config config.json --custom_vocab vocab.json
|
208 |
+
```
|
209 |
+
|
210 |
+
|
211 |
+
|
212 |
+
### 🐳 Использование Docker
|
213 |
+
|
214 |
+
Помимо всего прочего, можно использовать Docker для использования конвертера электронных книг в аудиокниги. Этот метод обеспечивает согласованность в различных средах и упрощает настройку.
|
215 |
+
|
216 |
+
#### 🚀 Запуск контейнера Docker
|
217 |
+
|
218 |
+
Для запуска контейнера Docker и интерфейса Gradio используйте следующую команду:
|
219 |
+
|
220 |
+
-Запуск с использованием только CPU (процессора)
|
221 |
+
```powershell
|
222 |
+
docker run -it --rm -p 7860:7860 --platform=linux/amd64 athomasson2/ebook2audiobookxtts:huggingface python app.py
|
223 |
+
```
|
224 |
+
-Запуск с использованием ускорения на GPU (графической карты), поддерживаются только видеокарты NVIDIA
|
225 |
+
```powershell
|
226 |
+
docker run -it --rm --gpus all -p 7860:7860 --platform=linux/amd64 athomasson2/ebook2audiobookxtts:huggingface python app.py
|
227 |
+
```
|
228 |
+
|
229 |
+
Эта команда запускает интерфейс Gradio на порту 7860. (localhost:7860)
|
230 |
+
- Для получения большей информации о доступных командах в безинтерфейсном режиме или предоставление доступа к Gradio в сети, используйте ключ `-h` после имени команды `app.py` в терминале Docker
|
231 |
+
<details>
|
232 |
+
<summary><strong>Пример использования Docker в безинтерфейсном режиме или модификаций параметров + полный гид</strong></summary>
|
233 |
+
|
234 |
+
## Пример использования Docker в безинтерфейсном режиме
|
235 |
+
|
236 |
+
- Сперва необходимо получить свежий контейнер с приложением
|
237 |
+
```bash
|
238 |
+
docker pull athomasson2/ebook2audiobookxtts:huggingface
|
239 |
+
```
|
240 |
+
|
241 |
+
- Прежде чем запустить команду на исполнение, необходимо создать директрую с именем "input-folder" в текущей папке, которая будет подтянута к использованию. В эту папку необходимо помещать файлы, которые будут видны образу Docker
|
242 |
+
```bash
|
243 |
+
mkdir input-folder && mkdir Audiobooks
|
244 |
+
```
|
245 |
+
|
246 |
+
- В команде ниже замените **YOUR_INPUT_FILE.TXT** именем файла, который необходимо начитать
|
247 |
+
|
248 |
+
```bash
|
249 |
+
docker run -it --rm \
|
250 |
+
-v $(pwd)/input-folder:/home/user/app/input_folder \
|
251 |
+
-v $(pwd)/Audiobooks:/home/user/app/Audiobooks \
|
252 |
+
--platform linux/amd64 \
|
253 |
+
athomasson2/ebook2audiobookxtts:huggingface \
|
254 |
+
python app.py --headless True --ebook /home/user/app/input_folder/YOUR_INPUT_FILE.TXT
|
255 |
+
```
|
256 |
+
|
257 |
+
- И на этом это все!
|
258 |
+
|
259 |
+
- Начитанная аудиокнига будет сформирована в папке Audiobooks, которая будет создана в вашей локальной директории, в которой был осуществлен запуск Docker
|
260 |
+
|
261 |
+
|
262 |
+
## Для получения помощи по параметрам, необходимо запустить следующую команду
|
263 |
+
|
264 |
+
```bash
|
265 |
+
docker run -it --rm \
|
266 |
+
--platform linux/amd64 \
|
267 |
+
athomasson2/ebook2audiobookxtts:huggingface \
|
268 |
+
python app.py -h
|
269 |
+
|
270 |
+
```
|
271 |
+
|
272 |
+
|
273 |
+
и вывод будет следующим
|
274 |
+
|
275 |
+
```bash
|
276 |
+
user/app/ebook2audiobookXTTS/input-folder -v $(pwd)/Audiobooks:/home/user/app/ebook2audiobookXTTS/Audiobooks --memory="4g" --network none --platform linux/amd64 athomasson2/ebook2audiobookxtts:huggingface python app.py -h
|
277 |
+
starting...
|
278 |
+
Преобразование электронных книг в аудиокниги с использованием модели Text-to-Speech (TTS). Вы можете либо использовать
|
279 |
+
интерфейс Gradio, либо запустить скрипт в безинтерфейсном режиме (командная строка) для прямого конвертирования.
|
280 |
+
|
281 |
+
опции:
|
282 |
+
-h, --help Отобразить этот список и выйти
|
283 |
+
--share SHARE Установить в True для включения публичного доступа к Web-интерфейсу Gradio. По умолчанию False.
|
284 |
+
--headless HEADLESS Установить в True для использования безинтерфейсного режима. По умолчанию False.
|
285 |
+
--ebook EBOOK Путь к электронной книге для конвертации. Необходимо для безинтерфейсного режима.
|
286 |
+
--voice VOICE Путь к целевому голосовому файлу для TTS (текст-в-голос). Опционально, используется голос по умолчанию, если путь не указан.
|
287 |
+
--language LANGUAGE Язык для конвертации в аудиокнигу. Варианты: en, es, fr, de,
|
288 |
+
it, pt, pl, tr, ru, nl, cs, ar, zh-cn, ja, hu, ko. По умолчанию English (en).
|
289 |
+
--use_custom_model USE_CUSTOM_MODEL
|
290 |
+
Установить в True для использования индивидуальной модели TTS. По умолчанию False. Необходимо переключить в
|
291 |
+
True для использования индивидулаьной модели, в противном случае возникнет ошибка.
|
292 |
+
--custom_model CUSTOM_MODEL
|
293 |
+
Путь к файлу индивидуальной модели (.pth). Требуется, если используется индивидуальная модель.
|
294 |
+
--custom_config CUSTOM_CONFIG
|
295 |
+
Путь к конфигурационнмоу файлу индивидуальной модели (config.json). Требуется, если используется индивидуальная модель.
|
296 |
+
--custom_vocab CUSTOM_VOCAB
|
297 |
+
Путь к словарю индивидуальной модели (vocab.json). Требуется, если используется индивидуальная модель.
|
298 |
+
--custom_model_url CUSTOM_MODEL_URL
|
299 |
+
URL для скачивания индивидуальной модели в виде zip-архива. Опционально, но если указано, то будет использовано.
|
300 |
+
Примеры включающие модель David Attenborough: 'https://huggingface.co/drewThomasson/xtts_David_Attenborough_fine_tune/resolve/main/Finished_model_files.zip?download=true'. Больше точно-настроенных моделей XTTS можно найти на Hugging Face 'https://huggingface.co/drewThomasson'.
|
301 |
+
--temperature TEMPERATURE
|
302 |
+
Температура для модели. По умолчанию 0.65. Чем выше температура, тем более креативным будет синтез голоса, с большим наваждением. Чем меньше, тем более монотонным и спокойным.
|
303 |
+
--length_penalty LENGTH_PENALTY
|
304 |
+
Ограничение длинны авторегрессионного декодреа. По умолчанию 1.0. Не применяется к индивидуальным моделям.
|
305 |
+
--repetition_penalty REPETITION_PENALTY
|
306 |
+
Ограниечение предотвращающее повторение авторегрессивным декодером за собой. По умолчанию 2.0
|
307 |
+
--top_k TOP_K Сэмплирование Top-k. Меньшее значние приводит к более вероятностному выводу и ускоряют генерацию аудио. По умолчанию 50.
|
308 |
+
--top_p TOP_P Сэмплирование Top-p. Меньшее значние приводит к более вероятностному выводу и ускоряют генерацию аудио. По умолчанию 0.8.
|
309 |
+
--speed SPEED Фактор скорости начитки. Чем больше значение, тем быстрее диктор будет читать текст. По умолчанию 1.0.
|
310 |
+
--enable_text_splitting ENABLE_TEXT_SPLITTING
|
311 |
+
Включает разбиение текста на предложения. По умолчаниею True.
|
312 |
+
|
313 |
+
Пример: python script.py --headless --ebook path_to_ebook --voice path_to_voice --language en --use_custom_model True --custom_model model.pth --custom_config config.json --custom_vocab vocab.json
|
314 |
+
```
|
315 |
+
</details>
|
316 |
+
|
317 |
+
#### 🖥️ Docker Web-интерфейс
|
318 |
+
![demo_web_gui](https://github.com/user-attachments/assets/85af88a7-05dd-4a29-91de-76a14cf5ef06)
|
319 |
+
|
320 |
+
<details>
|
321 |
+
<summary>Нажмите для просмотра изображений Web-интерфейса</summary>
|
322 |
+
<img width="1728" alt="image" src="https://github.com/user-attachments/assets/b36c71cf-8e06-484c-a252-934e6b1d0c2f">
|
323 |
+
<img width="1728" alt="image" src="https://github.com/user-attachments/assets/c0dab57a-d2d4-4658-bff9-3842ec90cb40">
|
324 |
+
<img width="1728" alt="image" src="https://github.com/user-attachments/assets/0a99eeac-c521-4b21-8656-e064c1adc528">
|
325 |
+
</details>
|
326 |
+
|
327 |
+
### 🛠️ Для индивидуальных Xtts моделей
|
328 |
+
|
329 |
+
Модели создаются для лучшего использования с конкретным голосом. Проверьте различные модели на страничке Hugging Face [тут](https://huggingface.co/drewThomasson).
|
330 |
+
|
331 |
+
Для использования индивидуальных моделей, используйте ссылку на архив с моделью `Finished_model_files.zip`, например:
|
332 |
+
[David Attenborough точно настроенный голос Finished_model_files.zip](https://huggingface.co/drewThomasson/xtts_David_Attenborough_fine_tune/resolve/main/Finished_model_files.zip?download=true)
|
333 |
+
|
334 |
+
Для индивидуальной модели также необходим файл с голосом:
|
335 |
+
[файл с голосом David Attenborough](https://huggingface.co/drewThomasson/xtts_David_Attenborough_fine_tune/blob/main/ref.wav)
|
336 |
+
|
337 |
+
|
338 |
+
|
339 |
+
Больше информации можно найти на [странице Dockerfile Hub]([https://github.com/DrewThomasson/ebook2audiobookXTTS](https://hub.docker.com/repository/docker/athomasson2/ebook2audiobookxtts/general)).
|
340 |
+
|
341 |
+
## 🌐 Точно отстроенные модели Xtts models
|
342 |
+
|
343 |
+
Для поиска уже подготовленных точно настроенных моделей XTTS обратитесь к [этой страничке на Hugging Face](https://huggingface.co/drewThomasson) 🌐. Ищите модели которые имеют в наименовании "xtts fine tune".
|
344 |
+
|
345 |
+
## 🎥 Демонстрация
|
346 |
+
|
347 |
+
Голос ненастного дня
|
348 |
+
|
349 |
+
https://github.com/user-attachments/assets/8486603c-38b1-43ce-9639-73757dfb1031
|
350 |
+
|
351 |
+
Голос David Attenborough
|
352 |
+
|
353 |
+
https://github.com/user-attachments/assets/47c846a7-9e51-4eb9-844a-7460402a20a8
|
354 |
+
|
355 |
+
|
356 |
+
## 🤗 [Демонстрация в пространстве Huggingface](https://huggingface.co/spaces/drewThomasson/ebook2audiobookXTTS)
|
357 |
+
- Пространства на Huggingface работают на бесплатном уровне процессоров, поэтому выполнение очень медленное и частво возникают ошибки связанные с истечением времени. Не пытайтесь преобразовывать большие файлы.
|
358 |
+
- Лучше всего клонировать пространство или запускать его локально.
|
359 |
+
|
360 |
+
## Бесплатный Google Colab [![Бесплатный Google Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/DrewThomasson/ebook2audiobookXTTS/blob/main/Notebooks/colab_ebook2audiobookxtts.ipynb)
|
361 |
+
|
362 |
+
|
363 |
+
|
364 |
+
## 📚 Поддерживаемые форматы электронных книг
|
365 |
+
|
366 |
+
- **Можно**: `.epub`, `.pdf`, `.mobi`, `.txt`, `.html`, `.rtf`, `.chm`, `.lit`, `.pdb`, `.fb2`, `.odt`, `.cbr`, `.cbz`, `.prc`, `.lrf`, `.pml`, `.snb`, `.cbc`, `.rb`, `.tcr`
|
367 |
+
- **Лучше**: `.epub` или `.mobi` для автоматического определения глав.
|
368 |
+
|
369 |
+
## 📂 Вывод
|
370 |
+
|
371 |
+
- Создается файл с расширением `.m4b`, содержащий метаданные и главы.
|
372 |
+
- **Пример вывода**: ![Пример](https://github.com/DrewThomasson/VoxNovel/blob/dc5197dff97252fa44c391dc0596902d71278a88/readme_files/example_in_app.jpeg)
|
373 |
+
|
374 |
+
## 🛠️ Частые проблемы:
|
375 |
+
- "Очень медленно!" - При конвертации только на CPU она происходит медленно, единственный способ ускорения - использовать GPU от NVIDIA: [Обсуждение](https://github.com/DrewThomasson/ebook2audiobookXTTS/discussions/19#discussioncomment-10879846). Для быстрой многоязыковой генерации аудио, рекомендуется использовать другой проект [использующий piper-tts](https://github.com/DrewThomasson/ebook2audiobookpiper-tts). (Тем не менее, в нем нет функции клонирования голоса без лишней суеты и он воспроизводит голоса в качестве siri, но он намного быстрее работает на CPU.)
|
376 |
+
- "У меня проблема с зависимостями" - Просто используейте Docker. Образы в Docker самодостаточны, имеют, в том числе режим работы с конмандной строкой, клю�� для вывода помощи.
|
377 |
+
- "У меня проблема с обрезаным аудио!" - создайте запись о проблеме, автор не говорит на каждом из поддерживаемых языков и ему требуется помощь по автоматическому разбиению текста на предложения в поддерживаемых языках.😊
|
378 |
+
- "Процесс застопорился на 30% в Web-интерфейсе!" - Отображение прогресса в Web-интерфейсе выполнено на базовом уровне и содержит всего 3 шага, для контроллирования процесса посматривайте в терминальный вывод, где и отображается обработка текущего предложения.
|
379 |
+
|
380 |
+
## С чем требуется помощь! 🙌
|
381 |
+
## [Полный список тут](https://github.com/DrewThomasson/ebook2audiobookXTTS/issues/32)
|
382 |
+
- Любая помощь от людей говорящий на поддерживаемых языках для более корретного разбиения текста на предложения.
|
383 |
+
- Потенциальная помощь в создании инструкций для разных языков (автор знает только английский 😔).
|
384 |
+
|
385 |
+
## 🙏 Отдельные спасибо
|
386 |
+
|
387 |
+
- **Coqui TTS**: [Coqui TTS GitHub](https://github.com/coqui-ai/TTS)
|
388 |
+
- **Calibre**: [Calibre Website](https://calibre-ebook.com)
|
389 |
+
|
390 |
+
- [@shakenbake15 за лучший способ сохранения глав](https://github.com/DrewThomasson/ebook2audiobookXTTS/issues/8)
|
391 |
+
|