Skip to content

Latest commit

 

History

History
473 lines (359 loc) · 20.9 KB

README.it.md

File metadata and controls

473 lines (359 loc) · 20.9 KB

📚 eBook2AudiBook

Convertitore CPU/GPU da ebook agli audiolibri con capitoli e metadati
Utilizzando Caliber, FFMPEG, XTTSV2, Fairseq e altro. Supporta la clonazione vocale e +1110 lingue!

Important

Questo strumento è destinato all'uso solo con e-book non acquisiti legalmente.
Gli autori non sono responsabili per qualsiasi uso improprio di questo software o di conseguenze legali risultanti.
Utilizzare questo strumento in modo responsabile e in conformità con tutte le leggi applicabili.

Discord

Grazie a Support EBook2Audiobook Developer!
Ko-Fi

Interfaccia GUI

demo_web_gui

Click to see images of Web GUI GUI Screen 1 GUI Screen 2 GUI Screen 3

README.md

Sommario

Caratteristiche

  • 📖 Converte gli ebook in formato di testo con calibro.
  • 📚 divide l'eBook in capitoli per l'audio organizzato.
  • 🎙️ Text-to-Speech di alta qualità conCoqui XTTSV2EFairseq(e altro).
  • 🗣️ Clonazione vocale opzionale con il tuo file vocale.
  • 🌍 Supporta +1110 lingue (inglese per impostazione predefinita).Elenco delle lingue supportate
  • 🖥️ Progettato per funzionare su 4 GB di RAM.

Hugging Face

  • Lo spazio di HuggingFace è in esecuzione con il livello CPU gratuito, quindi aspettati molto lento o timeout lol, non dargli i file giganti è tutto
  • Meglio duplicare lo spazio o correre localmente.

Google Colab gratuito

Free Google Colab

Lingue supportate

  • Arabo (ARA)
  • Cinese (ZH)
  • Ceco (CES)
  • Croato (HRV)
  • Olandese (NLD)
  • English (Eng)
  • Francese (da)
  • Tedesco (DEU)
  • Non (hin)
  • Ungherese (am)
  • Italiano (Ita)
  • Giapponese (jpn)
  • Coreano (cor)
  • Polish (Pol)
  • Portoghese (POR)
  • Russia (Rus)
  • Spagnolo (spa)
  • Turco (round)
  • Vietnamese (vie)
  • +1100 lingue tramite Fairseq

Requisiti hardware

  • 4 GB di RAM minimo, 8 GB consigliato
  • Virtualizzazione abilitata se in esecuzione su Windows (solo docker)
  • CPU, GPU (consigliato), MPS (non ancora ottimizzato e può essere più lento della CPU) compatibile

Important

Prima di pubblicare una ricerca di emissione di installazione o bug attentamente nella scheda Aperta e chiusa
Per essere sicuro che il tuo problema non esista già.

Note

In mancanza di una struttura standard come quello che è un capitolo, un paragrafo, una prefazione ecc.
Dovresti prima rimuovere manualmente qualsiasi testo che non vuoi essere convertito in audio.

Istruzioni di installazione

  1. Clone Repo
git clone https://github.com/DrewThomasson/ebook2audiobook.git

Avvio dell'interfaccia Web Gradio

  1. Esegui eBook2AudiBook:
    • Linux/macOS
      ./ebook2audiobook.sh  # Run Launch script
    • Finestre
      .\ebook2audiobook.cmd  # Run launch script or double click on it (Bypass windows alerts)
  2. Apri l'app Web: Fare clic sull'URL fornito nel terminale per accedere all'app Web e convertire gli eBook.
  3. Per collegamento pubblico:python app.py --share(Tutto il sistema operativo)./ebook2audiobook.sh --share(Linux/macOS)ebook2audiobook.cmd --share(Windows)

Important

Se lo script viene interrotto ed eseguito di nuovo, è necessario aggiornare l'interfaccia GUI di Gradio
Per consentire alla pagina Web di riconnettersi al nuovo socket di connessione.

Uso di base

  • Linux/macOS:
    ./ebook2audiobook.sh --headless --ebook <path_to_ebook_file> \
        --voice [path_to_voice_file] --language [language_code]
  • Finestre
    .\ebook2audiobook.cmd --headless --ebook <path_to_ebook_file>
        --voice [path_to_voice_file] --language [language_code]
  • [--Ebook]: Percorso per il tuo file ebook.
  • [--voce]: Percorso del file di clonazione vocale (facoltativo).
  • [--lingua]: Codice di lingua in ISO-639-3 (cioè: Ita per italiano, Eng per l'inglese, Deu per tedesco ...).
    La lingua predefinita è ENG e -Language è facoltativo per la lingua predefinita impostata in ./lib/lang.py.
    Sono anche supportati i codici ISO-639-1 2 Lettere.

Esempio di caricamento zip modello personalizzato

(Deve essere un file .Zip contenente i file modello obbligatori. Esempio per XTT: config.json, model.pth, vocab.json e ref.wav)

  • Linux/macOS
    ./ebook2audiobook.sh --headless --ebook <ebook_file_path> \
        --voice <target_voice_file_path> --language <language> --custom_model <custom_model_path>
  • Finestre
    .\ebook2audiobook.cmd --headless --ebook <ebook_file_path> \
        --voice <target_voice_file_path> --language <language> --custom_model <custom_model_path>
  • <custom_model_path>: Path tomodel_name.zipfile, che deve contenere (secondo il motore TTS) tutti i file obbligatori
    (vedi ./lib/models.py).

Per una guida dettagliata con l'elenco di tutti i parametri da utilizzare

  • Linux/macOS
    ./ebook2audiobook.sh --help
  • Finestre
    .\ebook2audiobook.cmd --help
  • O per tutto il sistema operativo
     app.py --help

usage: app.py [-h] [--script_mode SCRIPT_MODE] [--session SESSION] [--share]
              [--headless] [--ebook EBOOK] [--ebooks_dir EBOOKS_DIR]
              [--language LANGUAGE] [--voice VOICE] [--device {cpu,gpu,mps}]
              [--tts_engine {xtts,bark,vits,fairseq,yourtts}]
              [--custom_model CUSTOM_MODEL] [--fine_tuned FINE_TUNED]
              [--output_format OUTPUT_FORMAT] [--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] [--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 are for gradio/gui mode only:
  Optional

  --share               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.
  --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:
  --voice VOICE         (Optional) Path to the voice cloning file for TTS engine. 
                            Uses the default voice if not present.
  --device {cpu,gpu,mps}
                        (Optional) Pprocessor unit type for the conversion. 
                            Default is set in ./lib/conf.py if not present. Fall back to CPU if GPU not available.
  --tts_engine {xtts,bark,vits,fairseq,yourtts}
                        (Optional) Preferred TTS engine (available are: ['xtts', 'bark', 'vits', 'fairseq', '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 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 0.85
  --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.
  --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'
Linux/Mac:
    Gradio/GUI:
    ./ebook2audiobook.sh
    Headless mode:
    ./ebook2audiobook.sh --headless --ebook '/path/to/file'

Nota: in modalità Gradio/GUI, per annullare una conversione in esecuzione, fai clic su[X]Dal componente caricamento ebook.

Usando Docker

Puoi anche usare Docker per eseguire l'eBook su AudioBook Converter. Questo metodo garantisce coerenza in diversi ambienti e semplifica la configurazione.

Esecuzione del contenitore Docker

Per eseguire il contenitore Docker e avviare l'interfaccia graduale, utilizzare il comando seguente:

-Run solo con CPU

docker run --rm -p 7860:7860 athomasson2/ebook2audiobook

-Run con accelerazione GPU (solo Nvidia compatibile)

docker run --rm --gpus all -p 7860:7860 athomasson2/ebook2audiobook

Costruire il contenitore Docker

  • Puoi creare l'immagine Docker con il comando:
docker build --platform linux/amd64 -t athomasson2/ebook2audiobook .

Questo comando avverrà l'interfaccia di gradio sulla porta 7860. (LocalHost: 7860)

  • Per ulteriori opzioni aggiungi il parametro--help

Posizioni dei file container Docker

Tutti gli eBook2Audibooks avranno la dirmatura di base di/home/user/app/Per esempio:tmp=/home/user/app/tmp``audiobooks=/home/user/app/audiobooks

Docker Headless Guide

Primo per una pista da docker dell'ultimo con

docker pull athomasson2/ebook2audiobook
  • Prima di eseguirlo, è necessario creare un dir denominato "input-finder" nel tuo dir attuale che sarà collegato, è qui che puoi mettere i tuoi file di input per l'immagine Docker da vedere
mkdir input-folder && mkdir Audiobooks
  • Nel comando sotto lo scambioYour_input_file.txtCon il nome del tuo file di input
docker run --rm \
    -v $(pwd)/input-folder:/home/user/app/input_folder \
    -v $(pwd)/audiobooks:/home/user/app/audiobooks \
    athomasson2/ebook2audiobook \
    --headless --ebook /input_folder/YOUR_EBOOK_FILE
  • E questo dovrebbe essere!
  • Gli audiolibri di output saranno trovati nella cartella audiolibro che si troverà anche Nella tua direttrice locale hai eseguito questo comando Docker in

Per ottenere il comando di aiuto per gli altri parametri questo programma è possibile eseguirlo

docker run --rm athomasson2/ebook2audiobook --help

E questo subirà questoAiuta l'output di comandi

Docker composi

Questo progetto utilizza Docker Composi per funzionare localmente. È possibile abilitare o disabilitare il supporto GPU Impostando nemmeno*gpu-enabledO*gpu-disabledIndocker-compose.yml

Passi da eseguire

  1. Clona il repository(se non l'hai già fatto):
    git clone https://github.com/DrewThomasson/ebook2audiobook.git
    cd ebook2audiobook
  2. **Imposta supporto GPU (disabilitato per impostazione predefinita)**Per abilitare il supporto GPU, modificaredocker-compose.ymle cambiare*gpu-disabledA*gpu-enabled
  3. Avvia il servizio:
    docker-compose up -d
  4. **Accedi al servizio:**Il servizio sarà disponibile su http: // localhost: 7860.

Interfaccia Docker GUI

demo_web_gui

Click to see images of Web GUI GUI Screen 1 GUI Screen 2 GUI Screen 3

Affittare una GPU

Non hai l'hardware per eseguirlo o vuoi noleggiare una GPU?

Puoi duplicare lo spazio Hugginface e noleggiare una GPU per circa $ 0,40 l'ora

Demo spaziale Huggingface

Oppure puoi provare a utilizzare Google Colab gratuitamente!

(Essere consapevoli che scaterirà dopo un po 'di non scherzare con Google Colab)Google Colab gratuito

Problemi comuni di Docker

  • Docker si blocca a scaricare modelli perfetti. (Questo non accade per ogni computer, ma alcuni sembrano riscontrare questo problema) Disabilitare la barra di avanzamento sembra risolvere il problema, come discussoQui nel #191Esempio di aggiunta di questa correzione indocker runcomando
docker run --rm --gpus all -e HF_HUB_DISABLE_PROGRESS_BARS=1 -e HF_HUB_ENABLE_HF_TRANSFER=0 \
    -p 7860:7860 athomasson2/ebook2audiobook

Modelli TTS sintonizzati fine

Puoi perfezionare facilmente il tuo modello XTTS con questo repositoryXTS-FineTune-Webui

Se vuoi affittare facilmente una GPU, puoi anche duplicare questo HuggingfaceXTTS-FineTune-Webui-Space

Uno spazio che puoi utilizzare per degannare facilmente anche i dati di allenamentoDenaise-Huggingface-Space

Collezione TTS sintonizzata fine

Per trovare la nostra collezione di modelli TTS già perfezionati, visitaQuesto collegamento facciale abbracciatoPer un modello personalizzato XTT Un clip audio REF del riferimento vocale è obbligatorio:

Demo

Voce del giorno delle pioggehttps://github.com/user-attachments/assets/d25034d9-c77f-43a9-8f14-0d167172b080

David Attenborough Voicehttps://github.com/user-attachments/assets/0d437a41-0b0d-48ed-8c9b-02763d5e48ea

Formati di ebook supportati

  • .epub,.pdf,.mobi,.txt,.html,.rtf,.chm,.lit,.pdb,.fb2,.odt,.cbr,.cbz,.prc,.lrf,.pml,.snb,.cbc,.rb,.tcr
  • I migliori risultati:.epubO.mobiPer il rilevamento automatico di capitoli

Produzione

  • Crea un['m4b', 'm4a', 'mp4', 'webm', 'mov', 'mp3', 'flac', 'wav', 'ogg', 'aac'](Imposta nel file ./lib/conf.py) con metadati e capitoli.
  • EsempioExample

Problemi comuni:

  • La CPU è lenta (migliore sulla CPU SPP Server) mentre la GPU NVIDIA può avere una conversione quasi in tempo reale.Discussione su questoPer una generazione multilingue più veloce suggerirei l'altro mioProgetto che utilizza Piper-TTSInvece (Tuttavia, non ha una clonazione vocale a zero colpi, ed è voci di qualità Siri, ma è molto più veloce per la CPU).
  • "Sto avendo problemi di dipendenza" - usa solo il docker, è completamente autonomo e ha una modalità senza testa, aggiungere--helpParametro alla fine del comando Docker Run per ulteriori informazioni.
  • "Sto ottenendo un problema audio troncato!" - Si prega di fare un problema, Non parliamo di ogni lingua e abbiamo bisogno di consigli agli utenti di mettere a punto la logica di scissione della frase .😊

Cosa ho bisogno di aiuto! 🙌

  • Qualsiasi aiuto da parte di persone che parlano di una delle lingue supportate per aiutare con i metodi di divisione delle frasi adeguate
  • Potenzialmente creazione di guide Readme per più lingue (perché l'unica lingua che conosco è l'inglese 😔)

Un ringraziamento speciale

Puoi visualizzare il codiceQui.

Unisciti al nostro server!

Discord