Конвертация электронных книг в аудиокниги с сохранением глав и метаданных, используются механизмы Calibre и XTTS. Поддерживаются опциональное клонирование голоса и множественные языки!
- 📖 Преобразование электронных книг в текстовый формат при помощи Calibre.
- 📚 Разбитие электронных книг по главам для аудиоформата.
- 🎙️ Высококачественное преобразование текста в голос при помощи Coqui XTTS.
- 🗣️ Опциональное клонирование голоса на основе вашего голосового файла.
- 🌍 Многоязыковая поддержка (английский по умолчанию).
- 🖥️ Для работы достаточно всего 4 Гб ОЗУ.
- Пространство на HuggingFace работает на бесплатном процессорном уровне, посему не стоит ожидать от него высокой скорости обработки или отсутствия сообщений о таймаутах. Даже и не пытайтесь обработать большие файлы.
- Лучше всего скопировать пространство или запустить приложение локально.
- Python 3.10
coqui-tts
Python package- Calibre (для конвертации электронных книг)
- FFmpeg (для создания аудиокниг)
- Опционально: собственный файл с голосом для начитки
-
Установить Python 3.x из Python.org.
-
Установить Calibre:
- Ubuntu:
sudo apt-get install -y calibre
- macOS:
brew install calibre
- Windows (Admin Powershell):
choco install calibre
- Ubuntu:
-
Установить FFmpeg:
- Ubuntu:
sudo apt-get install -y ffmpeg
- macOS:
brew install ffmpeg
- Windows (Admin Powershell):
choco install ffmpeg
- Ubuntu:
-
Опционально: установить Mecab (для нелатинских языков):
- Ubuntu:
sudo apt-get install -y mecab libmecab-dev mecab-ipadic-utf8
- macOS:
brew install mecab
,brew install mecab-ipadic
- Windows: mecab-website-to-install-manually (Замечание: японский язык поддерживается ограниченно)
- Ubuntu:
-
Установить пакеты Python:
pip install coqui-tts==0.24.2 pydub nltk beautifulsoup4 ebooklib tqdm gradio==4.44.0 python -m nltk.downloader punkt python -m nltk.downloader punkt_tab
Для нелатинских языков:
pip install mecab mecab-python3 unidic python -m unidic download
- English (en)
- Spanish (es)
- French (fr)
- German (de)
- Italian (it)
- Portuguese (pt)
- Polish (pl)
- Turkish (tr)
- Russian (ru)
- Dutch (nl)
- Czech (cs)
- Arabic (ar)
- Chinese (zh-cn)
- Japanese (ja)
- Hungarian (hu)
- Korean (ko)
Указывайте код нужного языка при запуске в безинтерфейсном режиме (в командной строке).
-
Запустите скрипт:
python app.py
-
Откройте Web-приложение: нажмите на ссылку появившуюся в окне терминала для доступа к Web-приложению и конвертированию электронных книг.
-
Для доступа из сети: добавьте
--share True
в конец команды, наподобие:python app.py --share True
- [Для большего количества параметров]: используйте
-h
ключ, наподобие:python app.py -h
python app.py --headless True --ebook <path_to_ebook_file> --voice [path_to_voice_file] --language [language_code]
- <path_to_ebook_file>: путь к файлу электронной книги.
- [path_to_voice_file]: путь к примеру голоса, для опционального клонирования голоса для начитки.
- [language_code]: по желанию, выбрать язык.
- [Для большего количества параметров]: используйте
-h
ключ, наподобиеpython app.py -h
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>
- <ebook_file_path>: путь к файлу электронной книги.
- <target_voice_file_path>: путь к примеру голоса, для опционального клонирования.
- <language>: по желанию, выбрать язык.
- <custom_model_path>: путь к
model.pth
. - <custom_config_path>: путь к
config.json
. - <custom_vocab_path>: путь к
vocab.json
. - [Для большего количества параметров]: используйте
-h
ключ, наподобиеpython app.py -h
🧩 Безинтерфейсное использование с индивидуальной моделью XTTS со ссылкой на Zip-архив, содержащий модель тонкой настройки XTTS 🌐
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>
- <ebook_file_path>: путь к файлу eBook.
- <target_voice_file_path>: путь к примеру голоса, для опционального клонирования.
- <language>: по желанию, выбрать язык.
- <custom_model_URL_ZIP_path>: путь в виде URL к архиву формата zip с папкой модели. Например, xtts_David_Attenborough_fine_tune
https://huggingface.co/drewThomasson/xtts_David_Attenborough_fine_tune/resolve/main/Finished_model_files.zip?download=true
- Для индивидуальной модели все равно потребуется референсный аудиофайл с голосом: референсный аудиофайл с голосом David Attenborough
- [Для большего количества параметров]: используйте
-h
ключ, наподобиеpython app.py -h
python app.py -h
- Будет выведен примерно следующий список ключей:
использование: app.py [-h] [--share SHARE] [--headless HEADLESS] [--ebook EBOOK] [--voice VOICE]
[--language LANGUAGE] [--use_custom_model USE_CUSTOM_MODEL]
[--custom_model CUSTOM_MODEL] [--custom_config CUSTOM_CONFIG]
[--custom_vocab CUSTOM_VOCAB] [--custom_model_url CUSTOM_MODEL_URL]
[--temperature TEMPERATURE] [--length_penalty LENGTH_PENALTY]
[--repetition_penalty REPETITION_PENALTY] [--top_k TOP_K] [--top_p TOP_P]
[--speed SPEED] [--enable_text_splitting ENABLE_TEXT_SPLITTING]
Преобразование электронных книг в аудиокниги с использованием модели Text-to-Speech (TTS). Вы можете либо использовать
интерфейс Gradio, либо запустить скрипт в безинтерфейсном режиме (командная строка) для прямого конвертирования.
опции:
-h, --help Отобразить этот список и выйти
--share SHARE Установить в True для включения публичного доступа к Web-интерфейсу Gradio. По умолчанию False.
--headless HEADLESS Установить в True для использования безинтерфейсного режима. По умолчанию False.
--ebook EBOOK Путь к электронной книге для конвертации. Необходимо для безинтерфейсного режима.
--voice VOICE Путь к целевому голосовому файлу для TTS (текст-в-голос). Опционально, используется голос по умолчанию, если путь не указан.
--language LANGUAGE Язык для конвертации в аудиокнигу. Варианты: en, es, fr, de,
it, pt, pl, tr, ru, nl, cs, ar, zh-cn, ja, hu, ko. По умолчанию English (en).
--use_custom_model USE_CUSTOM_MODEL
Установить в True для использования индивидуальной модели TTS. По умолчанию False. Необходимо переключить в
True для использования индивидуальной модели, в противном случае возникнет ошибка.
--custom_model CUSTOM_MODEL
Путь к файлу индивидуальной модели (.pth). Требуется, если используется индивидуальная модель.
--custom_config CUSTOM_CONFIG
Путь к конфигурационному файлу индивидуальной модели (config.json). Требуется, если используется индивидуальная модель.
--custom_vocab CUSTOM_VOCAB
Путь к словарю индивидуальной модели (vocab.json). Требуется, если используется индивидуальная модель.
--custom_model_url CUSTOM_MODEL_URL
URL для скачивания индивидуальной модели в виде zip-архива. Опционально, но если указано, то будет использовано.
Примеры включающие модель 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'.
--temperature TEMPERATURE
Температура для модели. По умолчанию 0.65. Чем выше температура, тем более креативным будет синтез голоса, с большим наваждением. Чем меньше, тем более монотонным и спокойным.
--length_penalty LENGTH_PENALTY
Ограничение длины авторегрессионного декодера. По умолчанию 1.0. Не применяется к индивидуальным моделям.
--repetition_penalty REPETITION_PENALTY
Ограничение, предотвращающее повторение авторегрессивным декодером за собой. По умолчанию 2.0
--top_k TOP_K Сэмплирование Top-k. Меньшее значение приводит к более вероятностному выводу и ускоряют генерацию аудио. По умолчанию 50.
--top_p TOP_P Сэмплирование Top-p. Меньшее значение приводит к более вероятностному выводу и ускоряют генерацию аудио. По умолчанию 0.8.
--speed SPEED Фактор скорости начитки. Чем больше значение, тем быстрее диктор будет читать текст. По умолчанию 1.0.
--enable_text_splitting ENABLE_TEXT_SPLITTING
Включает разбиение текста на предложения. По умолчанию True.
Пример: 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
Помимо всего прочего, можно использовать Docker для использования конвертера электронных книг в аудиокниги. Этот метод обеспечивает согласованность в различных средах и упрощает настройку.
Для запуска контейнера Docker и интерфейса Gradio используйте следующую команду:
-Запуск с использованием только CPU (процессора)
docker run -it --rm -p 7860:7860 --platform=linux/amd64 athomasson2/ebook2audiobookxtts:huggingface python app.py
-Запуск с использованием ускорения на GPU (графической карты), поддерживаются только видеокарты NVIDIA
docker run -it --rm --gpus all -p 7860:7860 --platform=linux/amd64 athomasson2/ebook2audiobookxtts:huggingface python app.py
Эта команда запускает интерфейс Gradio на порту 7860. (localhost:7860)
- Для получения большей информации о доступных командах в безинтерфейсном режиме или предоставление доступа к Gradio в сети, используйте ключ
-h
после имени командыapp.py
в терминале Docker
Пример использования Docker в безинтерфейсном режиме или модификаций параметров + полный гид
- Сперва необходимо получить свежий контейнер с приложением
docker pull athomasson2/ebook2audiobookxtts:huggingface
- Прежде чем запустить команду на исполнение, необходимо создать директорию с именем "input-folder" в текущей папке, которая будет подтянута к использованию. В эту папку необходимо помещать файлы, которые будут видны образу Docker
mkdir input-folder && mkdir Audiobooks
- В команде ниже замените YOUR_INPUT_FILE.TXT именем файла, который необходимо начитать
docker run -it --rm \
-v $(pwd)/input-folder:/home/user/app/input_folder \
-v $(pwd)/Audiobooks:/home/user/app/Audiobooks \
--platform linux/amd64 \
athomasson2/ebook2audiobookxtts:huggingface \
python app.py --headless True --ebook /home/user/app/input_folder/YOUR_INPUT_FILE.TXT
-
И на этом это всё!
-
Начитанная аудиокнига будет сформирована в папке Audiobooks, которая будет создана в вашей локальной директории, в которой был осуществлен запуск Docker
docker run -it --rm \
--platform linux/amd64 \
athomasson2/ebook2audiobookxtts:huggingface \
python app.py -h
и вывод будет следующим
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
starting...
Преобразование электронных книг в аудиокниги с использованием модели Text-to-Speech (TTS). Вы можете либо использовать
интерфейс Gradio, либо запустить скрипт в безинтерфейсном режиме (командная строка) для прямого конвертирования.
Опции:
-h, --help Отобразить этот список и выйти
--share SHARE Установить в True для включения публичного доступа к Web-интерфейсу Gradio. По умолчанию False.
--headless HEADLESS Установить в True для использования безинтерфейсного режима. По умолчанию False.
--ebook EBOOK Путь к электронной книге для конвертации. Необходимо для безинтерфейсного режима.
--voice VOICE Путь к целевому голосовому файлу для TTS (текст-в-голос). Опционально, используется голос по умолчанию, если путь не указан.
--language LANGUAGE Язык для конвертации в аудиокнигу. Варианты: en, es, fr, de,
it, pt, pl, tr, ru, nl, cs, ar, zh-cn, ja, hu, ko. По умолчанию English (en).
--use_custom_model USE_CUSTOM_MODEL
Установить в True для использования индивидуальной модели TTS. По умолчанию False. Необходимо переключить в
True для использования индивидуальной модели, в противном случае возникнет ошибка.
--custom_model CUSTOM_MODEL
Путь к файлу индивидуальной модели (.pth). Требуется, если используется индивидуальная модель.
--custom_config CUSTOM_CONFIG
Путь к конфигурационному файлу индивидуальной модели (config.json). Требуется, если используется индивидуальная модель.
--custom_vocab CUSTOM_VOCAB
Путь к словарю индивидуальной модели (vocab.json). Требуется, если используется индивидуальная модель.
--custom_model_url CUSTOM_MODEL_URL
URL для скачивания индивидуальной модели в виде zip-архива. Опционально, но если указано, то будет использовано.
Примеры включающие модель 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'.
--temperature TEMPERATURE
Температура для модели. По умолчанию 0.65. Чем выше температура, тем более креативным будет синтез голоса, с большим наваждением. Чем меньше, тем более монотонным и спокойным.
--length_penalty LENGTH_PENALTY
Ограничение длинны авторегрессионного декодера. По умолчанию 1.0. Не применяется к индивидуальным моделям.
--repetition_penalty REPETITION_PENALTY
Ограниечение предотвращающее повторение авторегрессивным декодером за собой. По умолчанию 2.0
--top_k TOP_K Сэмплирование Top-k. Меньшее значение приводит к более вероятностному выводу и ускоряют генерацию аудио. По умолчанию 50.
--top_p TOP_P Сэмплирование Top-p. Меньшее значение приводит к более вероятностному выводу и ускоряют генерацию аудио. По умолчанию 0.8.
--speed SPEED Фактор скорости начитки. Чем больше значение, тем быстрее диктор будет читать текст. По умолчанию 1.0.
--enable_text_splitting ENABLE_TEXT_SPLITTING
Включает разбиение текста на предложения. По умолчанию True.
Пример: 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
Модели создаются для лучшего использования с конкретным голосом. Проверьте различные модели на страничке Hugging Face тут.
Для использования индивидуальных моделей, используйте ссылку на архив с моделью Finished_model_files.zip
, например:
David Attenborough точно настроенный голос Finished_model_files.zip
Для индивидуальной модели также необходим файл с голосом: файл с голосом David Attenborough
Больше информации можно найти на странице Dockerfile Hub.
Для поиска уже подготовленных точно настроенных моделей XTTS обратитесь к этой страничке на Hugging Face 🌐. Ищите модели которые имеют в наименовании "xtts fine tune".
Голос ненастного дня
Magic.Tree.House.45.Osborne.Mary.Pope.-.A.Crazy.Day.With.Cobras.mp4
Голос David Attenborough
david_atten_alice_text.mp4
- Пространства на Huggingface работают на бесплатном уровне процессоров, поэтому выполнение очень медленное и часто возникают ошибки связанные с истечением времени. Не пытайтесь преобразовывать большие файлы.
- Лучше всего клонировать пространство или запускать его локально.
- Можно:
.epub
,.pdf
,.mobi
,.txt
,.html
,.rtf
,.chm
,.lit
,.pdb
,.fb2
,.odt
,.cbr
,.cbz
,.prc
,.lrf
,.pml
,.snb
,.cbc
,.rb
,.tcr
- Лучше:
.epub
или.mobi
для автоматического определения глав.
- "Очень медленно!" - При конвертации только на CPU она происходит медленно, единственный способ ускорения - использовать GPU от NVIDIA: Обсуждение. Для быстрой многоязыковой генерации аудио, рекомендуется использовать другой проект, использующий piper-tts. (Тем не менее, в нем нет функции клонирования голоса без лишней суеты, и он воспроизводит голоса в качестве Siri, но он намного быстрее работает на CPU.)
- "У меня проблема с зависимостями" - Просто используйте Docker. Образы в Docker самодостаточны, имеют, в том числе, режим работы с командной строкой, ключ для вывода помощи.
- "У меня проблема с обрезаным аудио!" - создайте запись о проблеме, автор не говорит на каждом из поддерживаемых языков, и ему требуется помощь по автоматическому разбиению текста на предложения в поддерживаемых языках.😊
- "Процесс застопорился на 30% в Web-интерфейсе!" - Отображение прогресса в Web-интерфейсе выполнено на базовом уровне и содержит всего 3 шага, для контроллирования процесса посматривайте в терминальный вывод, где и отображается обработка текущего предложения.
- Любая помощь от людей, говорящих на поддерживаемых языках для более корректного разбиения текста на предложения.
- Потенциальная помощь в создании инструкций для разных языков (автор знает только английский 😔).
-
Coqui TTS: Coqui TTS GitHub
-
Calibre: Calibre Website