Back to Ebook2audiobook

📚 ebook2audiobook (E2A)

readme/README_pol.md

26.6.933.0 KB
Original Source

📚 ebook2audiobook (E2A)

Konwerter CPU/GPU z e-booka na audiobook z rozdziałami i metadanymi

z wykorzystaniem zaawansowanych silników TTS i nie tylko.

Obsługuje klonowanie głosu i 1158 języków!

[!IMPORTANT] To narzędzie jest przeznaczone wyłącznie do użytku z e-bookami bez DRM, nabytymi legalnie.

Autorzy nie ponoszą odpowiedzialności za jakiekolwiek niewłaściwe użycie tego oprogramowania ani za wynikające z tego konsekwencje prawne.

Korzystaj z tego narzędzia odpowiedzialnie i zgodnie ze wszystkimi obowiązującymi przepisami.

Dziękujemy za wsparcie twórców ebook2audiobook!

Uruchamianie lokalne

<a href="https://github.com/DrewThomasson/ebook2audiobook">

</a><a href="https://hub.docker.com/r/athomasson2/ebook2audiobook">

</a>

Uruchamianie zdalne

Interfejs graficzny (GUI)

<details> <summary>Kliknij, aby zobaczyć obrazy interfejsu webowego</summary> </details>

Dema

Demo nowego domyślnego głosu

https://github.com/user-attachments/assets/750035dc-e355-46f1-9286-05c1d9e88cea

<details> <summary>Więcej dem</summary>

Głos ASMR

https://github.com/user-attachments/assets/68eee9a1-6f71-4903-aacd-47397e47e422

Głos deszczowego dnia

https://github.com/user-attachments/assets/d25034d9-c77f-43a9-8f14-0d167172b080

Głos Scarlett

https://github.com/user-attachments/assets/b12009ee-ec0d-45ce-a1ef-b3a52b9f8693

Głos Davida Attenborough

https://github.com/user-attachments/assets/81c4baad-117e-4db5-ac86-efc2b7fea921

Przykład

</details>

README.md

Spis treści

Funkcje

  • 🔧 Obsługiwane silniki TTS: XTTSv2, Bark, Fairseq, VITS, Tacotron2, Tortoise, GlowTTS, YourTTS

  • 📚 Konwersja wielu formatów plików: .epub, .mobi, .azw3, .fb2, .lrf, .rb, .snb, .tcr, .pdf, .txt, .rtf, .doc, .docx, .html, .odt, .azw, .tiff, .tif, .png, .jpg, .jpeg, .bmp, .zip

  • 💻 Pole tekstowe do bezpośredniej konwersji krótkiego tekstu na audio

  • 🔍 Skanowanie OCR dla plików ze stronami tekstu w postaci obrazów

  • 🔊 Wysokiej jakości zamiana tekstu na mowę, od niemal czasu rzeczywistego po niemal naturalny głos

  • 🗣️ Opcjonalne klonowanie głosu przy użyciu własnego pliku głosowego

  • 🌐 Obsługuje 1158 języków (supported languages list)

  • 💻 Przyjazny dla ograniczonych zasobów — działa na 2 GB RAM / 1 GB VRAM (minimum)

  • 🎵 Formaty wyjściowe audiobooka: mono or stereo aac, flac, mp3, m4b, m4a, mp4, mov, ogg, wav, webm

  • 🧠 Obsługa znaczników SML — precyzyjna kontrola przerw, pauz, zmiany głosu i nie tylko (see below)

  • 🧩 Opcjonalny własny model przy użyciu własnego wytrenowanego modelu (XTTSv2, VITS, FAIRSEQ, PIPER, others on request)

  • 🎛️ Dostrojone modele gotowe wytrenowane przez zespół E2A

    <i>(Skontaktuj się z nami, jeśli potrzebujesz dodatkowych dostrojonych modeli lub jeśli chcesz udostępnić własne na oficjalnej liście gotowych ustawień)</i>

Wymagania sprzętowe

  • 2 GB RAM min., 8 GB zalecane.
  • 1 GB VRAM min., 4 GB zalecane.
  • Włączona wirtualizacja przy uruchamianiu w systemie Windows (tylko Docker).
  • CPU, XPU (intel, AMD, ARM)*.
  • CUDA, ROCm, JETSON
  • MPS (CPU Apple Silicon)

*<i> Nowoczesne silniki TTS są bardzo wolne na CPU, więc używaj TTS o niższej jakości, takich jak YourTTS, Tacotron2 itd.</i>

Obsługiwane języki

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)

Obsługiwane formaty e-booków

  • .epub, .pdf, .mobi, .txt, .html, .rtf, .chm, .lit, .pdb, .fb2, .odt, .cbr, .cbz, .prc, .lrf, .pml, .snb, .cbc, .rb, .tcr
  • Najlepsze rezultaty: .epub lub .mobi dla automatycznego wykrywania rozdziałów

Formaty wyjściowe i przetwarzania

  • .m4b, .m4a, .mp4, .webm, .mov, .mp3, .flac, .wav, .ogg, .aac
  • Format przetwarzania można zmienić w lib/conf.py

Dostępne znaczniki SML

  • [break] — cisza (losowy zakres 0.3–0.6 sec.)
  • [pause] — cisza (losowy zakres 1.0–1.6 sec.)
  • [pause:N] — stała pauza (N sec.)
  • [voice:/path/to/voice/file]...[/voice] — przełączenie głosu z domyślnego lub wybranego z GUI/CLI

Sprawdź nasze inne repozytorium poświęcone automatycznemu dodawaniu SML w Twoim e-booku -> E2A-SML

[!IMPORTANT] **Zanim zgłosisz problem z instalacją lub błąd, przeszukaj dokładnie zakładkę z otwartymi i zamkniętymi zgłoszeniami

aby upewnić się, że Twój problem jeszcze nie istnieje.**

[!NOTE] **Format EPUB nie posiada żadnej standardowej struktury określającej, czym jest rozdział, akapit, przedmowa itd.

Dlatego najpierw należy ręcznie usunąć wszelki tekst, którego nie chcesz konwertować na audio.**

Instrukcje

  1. Sklonuj repozytorium

    bash
    git clone https://github.com/DrewThomasson/ebook2audiobook.git
    cd ebook2audiobook
    
  2. Zainstaluj / Uruchom ebook2audiobook:

    • Linux/MacOS

      bash
      ./ebook2audiobook.command
      

      <i>Uwaga dla użytkowników macOS: homebrew jest instalowany w celu zainstalowania brakujących programów.</i>

    • Launcher dla Maca
      Kliknij dwukrotnie Mac Ebook2Audiobook Launcher.command

    • Windows

      bash
      ebook2audiobook.cmd
      

      lub Kliknij dwukrotnie ebook2audiobook.cmd

      <i>Uwaga dla użytkowników Windows: scoop jest instalowany w celu zainstalowania brakujących programów bez uprawnień administratora.</i>

  3. Otwórz aplikację webową: Kliknij adres URL podany w terminalu, aby uzyskać dostęp do aplikacji webowej i konwertować e-booki. http://localhost:7860/

  4. Aby uzyskać link publiczny: ./ebook2audiobook.command --share (Linux/MacOS) ebook2audiobook.cmd --share (Windows) python app.py --share (all OS)

[!IMPORTANT] **Jeśli skrypt zostanie zatrzymany i uruchomiony ponownie, musisz odświeżyć swój interfejs graficzny Gradio

aby strona internetowa mogła ponownie połączyć się z nowym gniazdem połączenia.**

Podstawowe użycie

  • Linux/MacOS:

    bash
    ./ebook2audiobook.command --headless --ebook <path_to_ebook_file> --voice <path_to_voice_file> --language <language_code>
    
  • Windows

    bash
    ebook2audiobook.cmd --headless --ebook <path_to_ebook_file> --voice <path_to_voice_file> --language <language_code>
    
  • [--ebook]: Ścieżka do pliku e-booka

  • [--voice]: Ścieżka pliku do klonowania głosu (opcjonalnie)

  • [--language]: Kod języka w ISO-639-3 (np.: ita dla włoskiego, eng dla angielskiego, deu dla niemieckiego...).

    Domyślny język to eng, a --language jest opcjonalny dla języka domyślnego ustawionego w ./lib/lang.py.

    Obsługiwane są również 2-literowe kody ISO-639-1.

Przykład przesłania własnego modelu w formacie zip

(musi to być plik .zip zawierający obowiązkowe pliki modelu. Przykład dla XTTSv2: config.json, model.pth, vocab.json i ref.wav)

  • Linux/MacOS

    bash
    ./ebook2audiobook.command --headless --ebook <ebook_file_path> --language <language> --custom_model <custom_model_path>
    
  • Windows

    bash
    ebook2audiobook.cmd --headless --ebook <ebook_file_path> --language <language> --custom_model <custom_model_path>
    

    <i>Uwaga: ref.wav Twojego własnego modelu jest zawsze głosem wybranym do konwersji</i>

  • <custom_model_path>: Ścieżka do pliku model_name.zip, który musi zawierać (zależnie od silnika TTS) wszystkie obowiązkowe pliki

    (zobacz ./lib/models.py).
    

Aby uzyskać szczegółowy przewodnik z listą wszystkich parametrów do użycia

  • Linux/MacOS
    bash
    ./ebook2audiobook.command --help
    
  • Windows
    bash
    ebook2audiobook.cmd --help
    
  • Lub dla wszystkich systemów operacyjnych python app.py --help

<a id="help-command-output"></a>

bash
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
  --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

UWAGA: w trybie gradio/gui, aby anulować trwającą konwersję, po prostu kliknij [X] w komponencie przesyłania e-booka. WSKAZÓWKA: jeśli potrzebna jest dłuższa pauza, dodaj '[pause:3]' dla 3 sek. itd.

Docker

  1. Sklonuj repozytorium:
bash
   git clone https://github.com/DrewThomasson/ebook2audiobook.git
   cd ebook2audiobook
  1. Zbuduj kontener
bash
    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
  1. Uruchom kontener:
bash
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..
  • UWAGA: MPS nie jest udostępniany w Dockerze, więc należy użyć CPU

Częste problemy z Dockerem

Dostrojone (fine-tuned) modele TTS

Dostrój własny model XTTSv2

Odszumianie danych treningowych

Kolekcja dostrojonych modeli TTS

Dla własnego modelu XTTSv2 obowiązkowy jest referencyjny klip audio z głosem:

Twoja własna personalizacja Ebook2Audiobook

Możesz dowolnie modyfikować libs/conf.py, aby dodać lub usunąć żądane ustawienia. Jeśli planujesz to zrobić, po prostu wykonaj kopię oryginalnego conf.py, aby przy każdej aktualizacji ebook2audiobook móc zachować swój zmodyfikowany conf.py i przywrócić oryginalny. Musisz zaplanować ten sam proces dla models.py. Jeśli chcesz, aby Twój własny model stał się oficjalnym dostrojonym modelem ebook2audiobook, skontaktuj się z nami, a dodamy go do listy gotowych ustawień.

Powrót do starszych wersji

Wydania można znaleźć -> tutaj

bash
git checkout tags/VERSION_NUM # Locally/Compose -> Example: git checkout tags/v25.7.7

Częste problemy:

  • Moja karta GPU NVIDIA/ROCm/XPU/MPS nie jest wykrywana?? -> GPU ISSUES Wiki Page
  • CPU jest wolne (lepsze na serwerowym CPU SMP), podczas gdy GPU może zapewnić konwersję niemal w czasie rzeczywistym. Discussion about this (Nie ma jednak klonowania głosu zero-shot, a głosy są jakości Siri, ale jest znacznie szybsze na CPU).
  • „Mam problemy z zależnościami” - Po prostu użyj Dockera, jest w pełni samodzielny i ma tryb headless, dodaj parametr --help na końcu polecenia docker run, aby uzyskać więcej informacji.
  • „Mam problem z przyciętym dźwiękiem!” - PROSIMY O ZGŁOSZENIE TEGO JAKO ISSUE, nie mówimy w każdym języku i potrzebujemy porad użytkowników, aby dostroić logikę dzielenia zdań.😊

***** PLAN ROZWOJU *****

  • Wszystkie funkcje otwarte na publiczne wkłady ⭐
  • Wszelka pomoc od osób mówiących w którymkolwiek z obsługiwanych języków, aby pomóc nam ulepszać modele ⭐
  • Podgląd bloków/rozdziałów przed rozpoczęciem konwersji
  • Edycja według przekonwertowanego zdania dla chirurgicznej zmiany tekstu
  • Integracja znaczników SML dla głosu, pauzy, przerwy i innych zmian
  • Informacje o parametrach -h -help w różnych językach
  • Skanowanie OCR dla PDF / JPG / BMP / PNG / TIFF
  • Folder notebooków Talked about here
  • Sprawić, by dzielenie tekstu chińskiego nie rozdzielało słów i poprawić synchronizację pauz Talked about here
  • Dockerfile
  • Docker compose
  • Podman compose
  • Notebook Kaggle
  • Notebook Google Colab
  • Stworzyć aplikację na iOS
  • Stworzyć aplikację na Androida
  • Integracja z Audiobookshelf

Dodatkowe opcje

  • Opcja tłumaczenia e-booka
  • Wybór formatu wyjściowego
  • Wsadowy folder e-booków
  • Konwersja wieloprocesowa
  • Wsadowa konwersja folderu e-booków
  • Wykrywanie urządzenia GPU
  • Odszumianie dowolnego referencyjnego audio do przesyłanego klonowania głosu,
  • Przesyłanie własnego modelu (na razie tylko XTTSv2. więcej na życzenie)
  • Dodać model języka portugalskiego europejskiego przynajmniej dla xttsv2, fairseq, vits, piper (pomoc mile widziana)
  • Dodać model języka sindhi przynajmniej dla xttsv2, fairseq, vits, piper (pomoc mile widziana)

Silniki TTS

Tłumaczenie pliku Readme

  • 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)

🐍 Zgodność z systemami operacyjnymi

  • 🍎 Mac Intel x86
  • 🪟 Windows x86
  • 🐧 Linux x86
  • 🖥️🍏 Apple Silicon Mac
  • 🪟💪 ARM Windows
  • 🐧💪 ARM Linux

Dodatkowy przerost dla trenowania modeli i nie tylko (wszystkie obsługiwane modele Coqui-tts oraz piper-tts w jednym prostym poleceniu)

  • Po informacje na ten temat: @DrewThomasson obecnie pracuje nad jego rozwojem, repozytorium w trakcie prac tutaj
  • Stworzyć łatwy w użyciu interfejs treningowy dla wszystkich modeli coqui-tts w przepisach treningowych w formacie ljspeech tutaj od coqui tts

Informacje o normalizacji kodu Python dla współtwórców

  • brak pustej linii między kodem, z wyjątkiem między funkcjami i klasami.
  • pojedynczy cudzysłów używany dla wszystkich kluczy z wyjątkiem dict() i json. dict['key'] zawsze wywoływany z pojedynczym cudzysłowem
  • wcięcie 4 spacje, w ogóle bez tabulatorów
  • ścisłe typowanie dla wszystkich funkcji oraz deklaracji ich argumentów i wartości zwracanych
  • brak spacji między argumentem a jego typem, brak spacji między funkcją, „->” a wartością zwracaną

Przykład:

python
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'])

Poszukiwana darowizna sprzętu na testy beta

Przyjmujemy każdy rodzaj sprzętu do testowania naszego rozwoju, taki jak:

  • Nvidia supporting cuda >= 11.8
  • XPU intel cards
  • ROCm AMD cards supporting ROCm >=5.7

@DrewThomasson jeśli chcesz w jakikolwiek sposób pomóc! 😃

<!-- ## Czy potrzebujesz wynająć GPU, aby przyspieszyć naszą usługę? - Ankieta jest otwarta tutaj https://github.com/DrewThomasson/ebook2audiobook/discussions/889 -->

Specjalne podziękowania