Back to Ebook2audiobook

📚 ebook2audiobook (E2A)

readme/README_fra.md

26.6.933.6 KB
Original Source

📚 ebook2audiobook (E2A)

Convertisseur CPU/GPU d'e-book en livre audio avec chapitres et métadonnées

utilisant des moteurs TTS avancés et bien plus encore.

Prend en charge le clonage de voix et 1158 langues !

[!IMPORTANT] Cet outil est destiné à être utilisé uniquement avec des e-books sans DRM, acquis légalement.

Les auteurs ne sont pas responsables d'une quelconque utilisation abusive de ce logiciel ni des conséquences juridiques qui en découleraient.

Utilisez cet outil de manière responsable et dans le respect de toutes les lois applicables.

Merci de soutenir les développeurs d'ebook2audiobook !

Exécution locale

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

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

</a>

Exécution à distance

Interface graphique (GUI)

<details> <summary>Cliquez pour voir les images de l'interface web</summary> </details>

Démos

Démo de la nouvelle voix par défaut

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

<details> <summary>Plus de démos</summary>

Voix ASMR

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

Voix jour de pluie

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

Voix Scarlett

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

Voix David Attenborough

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

Exemple

</details>

README.md

Table des matières

Fonctionnalités

  • 🔧 Moteurs TTS pris en charge : XTTSv2, Bark, Fairseq, VITS, Tacotron2, Tortoise, GlowTTS, YourTTS

  • 📚 Convertir plusieurs formats de fichier : .epub, .mobi, .azw3, .fb2, .lrf, .rb, .snb, .tcr, .pdf, .txt, .rtf, .doc, .docx, .html, .odt, .azw, .tiff, .tif, .png, .jpg, .jpeg, .bmp, .zip

  • 💻 Zone de texte pour convertir directement un texte court en audio

  • 🔍 Reconnaissance OCR pour les fichiers dont les pages de texte sont des images

  • 🔊 Synthèse vocale de haute qualité, du quasi temps réel à une voix quasi naturelle

  • 🗣️ Clonage de voix optionnel à l'aide de votre propre fichier vocal

  • 🌐 Prend en charge 1158 langues (supported languages list)

  • 💻 Adapté aux ressources limitées — fonctionne avec 2 Go de RAM / 1 Go de VRAM (minimum)

  • 🎵 Formats de sortie du livre audio : mono or stereo aac, flac, mp3, m4b, m4a, mp4, mov, ogg, wav, webm

  • 🧠 Balises SML prises en charge — contrôle fin des coupures, pauses, changements de voix et plus encore (see below)

  • 🧩 Modèle personnalisé optionnel utilisant votre propre modèle entraîné (XTTSv2, VITS, FAIRSEQ, PIPER, others on request)

  • 🎛️ Modèles préréglés affinés entraînés par l'équipe E2A

    <i>(Contactez-nous si vous avez besoin de modèles affinés supplémentaires, ou si vous souhaitez partager les vôtres dans la liste officielle des préréglages)</i>

Configuration matérielle requise

  • 2 Go de RAM min., 8 Go recommandés.
  • 1 Go de VRAM min., 4 Go recommandés.
  • Virtualisation activée si l'exécution se fait sous Windows (Docker uniquement).
  • CPU, XPU (intel, AMD, ARM)*.
  • CUDA, ROCm, JETSON
  • MPS (CPU Apple Silicon)

*<i> Les moteurs TTS modernes sont très lents sur CPU, utilisez donc des TTS de moindre qualité comme YourTTS, Tacotron2, etc.</i>

Langues prises en charge

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)

Formats d'e-book pris en charge

  • .epub, .pdf, .mobi, .txt, .html, .rtf, .chm, .lit, .pdb, .fb2, .odt, .cbr, .cbz, .prc, .lrf, .pml, .snb, .cbc, .rb, .tcr
  • Meilleurs résultats : .epub ou .mobi pour la détection automatique des chapitres

Formats de sortie et de traitement

  • .m4b, .m4a, .mp4, .webm, .mov, .mp3, .flac, .wav, .ogg, .aac
  • Le format de traitement peut être modifié dans lib/conf.py

Balises SML disponibles

  • [break] — silence (plage aléatoire 0.3–0.6 sec.)
  • [pause] — silence (plage aléatoire 1.0–1.6 sec.)
  • [pause:N] — pause fixe (N sec.)
  • [voice:/path/to/voice/file]...[/voice] — changer de voix par rapport à la voix par défaut ou sélectionnée depuis l'interface graphique/CLI

Consultez notre autre dépôt dédié à l'ajout automatique de SML dans votre e-book -> E2A-SML

[!IMPORTANT] **Avant de publier un problème d'installation ou un bug, recherchez attentivement dans l'onglet des problèmes ouverts et fermés

pour être sûr que votre problème n'existe pas déjà.**

[!NOTE] **Le format EPUB ne possède aucune structure standard définissant ce qu'est un chapitre, un paragraphe, une préface, etc.

Vous devez donc d'abord supprimer manuellement tout texte que vous ne souhaitez pas convertir en audio.**

Instructions

  1. Cloner le dépôt

    bash
    git clone https://github.com/DrewThomasson/ebook2audiobook.git
    cd ebook2audiobook
    
  2. Installer / Exécuter ebook2audiobook :

    • Linux/MacOS

      bash
      ./ebook2audiobook.command
      

      <i>Note pour les utilisateurs macOS : homebrew est installé afin d'installer les programmes manquants.</i>

    • Lanceur Mac
      Double-cliquez sur Mac Ebook2Audiobook Launcher.command

    • Windows

      bash
      ebook2audiobook.cmd
      

      ou Double-cliquez sur ebook2audiobook.cmd

      <i>Note pour les utilisateurs Windows : scoop est installé afin d'installer les programmes manquants sans privilèges administrateur.</i>

  3. Ouvrir l'application web : Cliquez sur l'URL fournie dans le terminal pour accéder à l'application web et convertir les e-books. http://localhost:7860/

  4. Pour un lien public : ./ebook2audiobook.command --share (Linux/MacOS) ebook2audiobook.cmd --share (Windows) python app.py --share (all OS)

[!IMPORTANT] **Si le script est arrêté puis relancé, vous devez actualiser votre interface graphique Gradio

pour permettre à la page web de se reconnecter au nouveau socket de connexion.**

Utilisation de base

  • 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] : Chemin vers votre fichier e-book

  • [--voice] : Chemin du fichier de clonage de voix (optionnel)

  • [--language] : Code de langue au format ISO-639-3 (ex. : ita pour l'italien, eng pour l'anglais, deu pour l'allemand...).

    La langue par défaut est eng et --language est optionnel pour la langue par défaut définie dans ./lib/lang.py.

    Les codes ISO-639-1 à 2 lettres sont également pris en charge.

Exemple d'envoi d'un modèle personnalisé au format zip

(doit être un fichier .zip contenant les fichiers de modèle obligatoires. Exemple pour XTTSv2 : config.json, model.pth, vocab.json et 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>Note : le ref.wav de votre modèle personnalisé est toujours la voix sélectionnée pour la conversion</i>

  • <custom_model_path> : Chemin vers le fichier model_name.zip, qui doit contenir (selon le moteur TTS) tous les fichiers obligatoires

    (voir ./lib/models.py).
    

Pour un guide détaillé avec la liste de tous les paramètres à utiliser

  • Linux/MacOS
    bash
    ./ebook2audiobook.command --help
    
  • Windows
    bash
    ebook2audiobook.cmd --help
    
  • Ou pour tous les systèmes d'exploitation 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

NOTE : en mode gradio/gui, pour annuler une conversion en cours, cliquez simplement sur le [X] du composant d'envoi d'e-book. ASTUCE : s'il faut un peu plus de pause, ajoutez '[pause:3]' pour 3 sec., etc.

Docker

  1. Cloner le dépôt :
bash
   git clone https://github.com/DrewThomasson/ebook2audiobook.git
   cd ebook2audiobook
  1. Construire le conteneur
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. Exécuter le conteneur :
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..
  • NOTE : MPS n'est pas exposé dans Docker, le CPU doit donc être utilisé

Problèmes Docker courants

Modèles TTS affinés (fine-tuned)

Affinez votre propre modèle XTTSv2

Débruiter les données d'entraînement

Collection de modèles TTS affinés

Pour un modèle personnalisé XTTSv2, un extrait audio de référence de la voix est obligatoire :

Votre propre personnalisation d'Ebook2Audiobook

Vous êtes libre de modifier libs/conf.py pour ajouter ou supprimer les réglages souhaités. Si vous prévoyez de le faire, faites simplement une copie du conf.py d'origine afin qu'à chaque mise à jour d'ebook2audiobook vous puissiez sauvegarder votre conf.py modifié et remettre l'original. Vous devez prévoir le même processus pour models.py. Si vous souhaitez faire de votre propre modèle personnalisé un modèle affiné officiel d'ebook2audiobook, contactez-nous et nous l'ajouterons à la liste des préréglages.

Revenir à des versions antérieures

Les versions sont disponibles -> ici

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

Problèmes courants :

  • Mon GPU NVIDIA/ROCm/XPU/MPS n'est pas détecté ?? -> GPU ISSUES Wiki Page
  • Le CPU est lent (meilleur sur un CPU SMP de serveur) tandis que le GPU permet une conversion quasi en temps réel. Discussion about this (Il n'a cependant pas de clonage de voix zero-shot, et les voix sont de qualité Siri, mais c'est bien plus rapide sur CPU).
  • « J'ai des problèmes de dépendances » - Utilisez simplement Docker, il est entièrement autonome et dispose d'un mode headless, ajoutez le paramètre --help à la fin de la commande docker run pour plus d'informations.
  • « J'ai un problème d'audio tronqué ! » - VEUILLEZ OUVRIR UN ISSUE À CE SUJET, nous ne parlons pas toutes les langues et avons besoin des conseils des utilisateurs pour affiner la logique de découpage des phrases.😊

***** FEUILLE DE ROUTE *****

  • Toutes les fonctionnalités ouvertes aux contributions publiques ⭐
  • Toute aide de personnes parlant l'une des langues prises en charge pour nous aider à améliorer les modèles ⭐
  • Prévisualiser les blocs/chapitres avant de démarrer la conversion
  • Édition par phrase convertie pour une modification chirurgicale du texte
  • Intégration des balises SML pour la voix, la pause, la coupure et d'autres changements
  • Infos des paramètres -h -help dans différentes langues
  • Reconnaissance OCR pour PDF / JPG / BMP / PNG / TIFF
  • Dossier de notebooks Talked about here
  • Faire en sorte que le découpage du texte chinois ne coupe pas les mots et améliorer le timing des pauses Talked about here
  • Dockerfile
  • Docker compose
  • Podman compose
  • Notebook Kaggle
  • Notebook Google Colab
  • Créer une application iOS
  • Créer une application Android
  • Intégration Audiobookshelf

Options supplémentaires

  • Option de traduction de l'e-book
  • Choix du format de sortie
  • Traitement par lot d'un dossier d'e-books
  • Conversion en multitraitement
  • Conversion par lot d'un dossier d'e-books
  • Détection du périphérique GPU
  • Débruiter n'importe quel audio de référence pour le clonage de voix envoyé,
  • Envoi de modèle personnalisé (XTTSv2 uniquement pour l'instant. plus sur demande)
  • Ajouter un modèle de langue portugais européen pour xttsv2, fairseq, vits, piper au minimum (aide bienvenue)
  • Ajouter un modèle de langue sindhi pour xttsv2, fairseq, vits, piper au minimum (aide bienvenue)

Moteurs TTS

Traduction du 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)

🐍 Compatibilité des systèmes d'exploitation

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

Bonus ultime pour l'entraînement de modèles et plus encore (tous les modèles Coqui-tts pris en charge et piper-tts en une seule commande facile)

Informations de normalisation du code Python pour les contributeurs

  • pas de ligne vide entre le code, sauf entre les fonctions et les classes.
  • guillemet simple utilisé pour toutes les clés sauf pour dict() et json. dict['key'] toujours appelé avec un guillemet simple
  • indentation de 4 espaces, pas de tabulation du tout
  • typage strict pour toutes les fonctions ainsi que la déclaration de leurs arguments et valeurs de retour
  • pas d'espace entre l'argument et son typage, pas d'espace entre la fonction, le « -> » et la valeur de retour

Exemple :

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

Don de matériel pour les tests bêta recherché

Nous acceptons tout type de matériel pour tester notre développement, comme :

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

@DrewThomasson si vous voulez aider de quelque manière que ce soit ! 😃

<!-- ## Avez-vous besoin de louer un GPU pour booster notre service ? - Un sondage est ouvert ici https://github.com/DrewThomasson/ebook2audiobook/discussions/889 -->

Remerciements particuliers