Back to Ebook2audiobook

ЁЯУЪ ebook2audiobook (E2A)

readme/README_hin.md

26.6.943.6 KB
Original Source

ЁЯУЪ ebook2audiobook (E2A)

рдЕрдзреНрдпрд╛рдпреЛрдВ рдФрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдИ-рдмреБрдХ рд╕реЗ рдСрдбрд┐рдпреЛрдмреБрдХ рдореЗрдВ рдмрджрд▓рдиреЗ рд╡рд╛рд▓рд╛ CPU/GPU рдХрдиреНрд╡рд░реНрдЯрд░

рдЙрдиреНрдирдд TTS рдЗрдВрдЬрдиреЛрдВ рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдПред

рд╡реЙрдпрд╕ рдХреНрд▓реЛрдирд┐рдВрдЧ рдФрд░ 1158 рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ!

[!IMPORTANT] рдпрд╣ рдЯреВрд▓ рдХреЗрд╡рд▓ DRM-рдореБрдХреНрдд, рд╡реИрдз рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдИ-рдмреБрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╣реИред

рд▓реЗрдЦрдХ рдЗрд╕ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рдХрд┐рд╕реА рднреА рджреБрд░реБрдкрдпреЛрдЧ рдпрд╛ рдЙрд╕рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд┐рд╕реА рднреА рдХрд╛рдиреВрдиреА рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред

рдЗрд╕ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░реА рд╕реЗ рдФрд░ рд╕рднреА рд▓рд╛рдЧреВ рдХрд╛рдиреВрдиреЛрдВ рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдореЗрдВ рдХрд░реЗрдВред

ebook2audiobook рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдПрдВ

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

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

</a>

рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдПрдВ

рдЧреНрд░рд╛рдлрд╝рд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (GUI)

<details> <summary>рд╡реЗрдм GUI рдХреА рдЫрд╡рд┐рдпрд╛рдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ</summary> </details>

рдбреЗрдореЛ

рдирдИ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрд╡рд╛рдЬрд╝ рдХрд╛ рдбреЗрдореЛ

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

<details> <summary>рдФрд░ рдбреЗрдореЛ</summary>

ASMR рдЖрд╡рд╛рдЬрд╝

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

рдмрд░рд╕рд╛рдд рдХреЗ рджрд┐рди рдХреА рдЖрд╡рд╛рдЬрд╝

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

рд╕реНрдХрд╛рд░рд▓реЗрдЯ рдЖрд╡рд╛рдЬрд╝

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

рдбреЗрд╡рд┐рдб рдПрдЯрдирдмрд░реЛ рдЖрд╡рд╛рдЬрд╝

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

рдЙрджрд╛рд╣рд░рдг

</details>

README.md

рд╡рд┐рд╖рдп-рд╕реВрдЪреА

рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ

  • ЁЯФз рд╕рдорд░реНрдерд┐рдд TTS рдЗрдВрдЬрди: XTTSv2, Bark, Fairseq, VITS, Tacotron2, Tortoise, GlowTTS, YourTTS

  • ЁЯУЪ рдЕрдиреЗрдХ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рд░реВрдк рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВ: .epub, .mobi, .azw3, .fb2, .lrf, .rb, .snb, .tcr, .pdf, .txt, .rtf, .doc, .docx, .html, .odt, .azw, .tiff, .tif, .png, .jpg, .jpeg, .bmp, .zip

  • ЁЯТ╗ рдЫреЛрдЯреЗ рдкрд╛рда рдХреЛ рд╕реАрдзреЗ рдСрдбрд┐рдпреЛ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рда рдХреНрд╖реЗрддреНрд░

  • ЁЯФН рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рда рдкреГрд╖реНрдареЛрдВ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП OCR рд╕реНрдХреИрдирд┐рдВрдЧ

  • ЁЯФК рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓рд╛ рдЯреЗрдХреНрд╕реНрдЯ-рдЯреВ-рд╕реНрдкреАрдЪ, рд▓рдЧрднрдЧ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рд╕реЗ рд▓реЗрдХрд░ рд▓рдЧрднрдЧ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрд╡рд╛рдЬрд╝ рддрдХ

  • ЁЯЧгя╕П рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдЖрд╡рд╛рдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡реЙрдпрд╕ рдХреНрд▓реЛрдирд┐рдВрдЧ

  • ЁЯМР 1158 рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ (supported languages list)

  • ЁЯТ╗ рдХрдо рд╕рдВрд╕рд╛рдзрди рдЕрдиреБрдХреВрд▓ тАФ 2 GB RAM / 1 GB VRAM (рдиреНрдпреВрдирддрдо) рдкрд░ рдЪрд▓рддрд╛ рд╣реИ

  • ЁЯО╡ рдСрдбрд┐рдпреЛрдмреБрдХ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рд░реВрдк: mono or stereo aac, flac, mp3, m4b, m4a, mp4, mov, ogg, wav, webm

  • ЁЯза SML рдЯреИрдЧ рд╕рдорд░реНрдерд┐рдд тАФ рд░реБрдХрд╛рд╡рдЯреЛрдВ, рд╡рд┐рд░рд╛рдореЛрдВ, рдЖрд╡рд╛рдЬрд╝ рдмрджрд▓рдиреЗ рдЖрджрд┐ рдкрд░ рд╕реВрдХреНрд╖реНрдо рдирд┐рдпрдВрддреНрд░рдг (see below)

  • ЁЯзй рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд╕реНрдЯрдо рдореЙрдбрд▓ (XTTSv2, VITS, FAIRSEQ, PIPER, others on request)

  • ЁЯОЫя╕П E2A рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрди рдХрд┐рдП рдЧрдП рдкреНрд░реАрд╕реЗрдЯ рдореЙрдбрд▓

    <i>(рдпрджрд┐ рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрди рдХрд┐рдП рдЧрдП рдореЙрдбрд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рдпрджрд┐ рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░реАрд╕реЗрдЯ рд╕реВрдЪреА рдореЗрдВ рдЕрдкрдиреЗ рдореЙрдбрд▓ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВ)</i>

рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ

  • RAM 2GB рдиреНрдпреВрдирддрдо, 8GB рдЕрдиреБрд╢рдВрд╕рд┐рддред
  • VRAM 1GB рдиреНрдпреВрдирддрдо, 4GB рдЕрдиреБрд╢рдВрд╕рд┐рддред
  • windows рдкрд░ рдЪрд▓рд╛рдиреЗ рдкрд░ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕рдХреНрд╖рдо (рдХреЗрд╡рд▓ Docker)ред
  • CPU, XPU (intel, AMD, ARM)*ред
  • CUDA, ROCm, JETSON
  • MPS (Apple Silicon CPU)

*<i> рдЖрдзреБрдирд┐рдХ TTS рдЗрдВрдЬрди CPU рдкрд░ рдмрд╣реБрдд рдзреАрдореЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП YourTTS, Tacotron2 рдЖрджрд┐ рдЬреИрд╕реЗ рдирд┐рдореНрди рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ TTS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред</i>

рд╕рдорд░реНрдерд┐рдд рднрд╛рд╖рд╛рдПрдВ

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)

рд╕рдорд░реНрдерд┐рдд рдИ-рдмреБрдХ рдкреНрд░рд╛рд░реВрдк

  • .epub, .pdf, .mobi, .txt, .html, .rtf, .chm, .lit, .pdb, .fb2, .odt, .cbr, .cbz, .prc, .lrf, .pml, .snb, .cbc, .rb, .tcr
  • рд╕рд░реНрд╡реЛрддреНрддрдо рдкрд░рд┐рдгрд╛рдо: рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЕрдзреНрдпрд╛рдп рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП .epub рдпрд╛ .mobi

рдЖрдЙрдЯрдкреБрдЯ рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рд░реВрдк

  • .m4b, .m4a, .mp4, .webm, .mov, .mp3, .flac, .wav, .ogg, .aac
  • рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рд░реВрдк рдХреЛ lib/conf.py рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдЙрдкрд▓рдмреНрдз SML рдЯреИрдЧ

  • [break] тАФ рдореМрди (рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реАрдорд╛ 0.3тАУ0.6 sec.)
  • [pause] тАФ рдореМрди (рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реАрдорд╛ 1.0тАУ1.6 sec.)
  • [pause:N] тАФ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд┐рд░рд╛рдо (N sec.)
  • [voice:/path/to/voice/file]...[/voice] тАФ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдпрд╛ GUI/CLI рд╕реЗ рдЪреБрдиреА рдЧрдИ рдЖрд╡рд╛рдЬрд╝ рд╕реЗ рдЖрд╡рд╛рдЬрд╝ рдмрджрд▓реЗрдВ

рдЖрдкрдХреА рдИ-рдмреБрдХ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ SML рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣рдорд╛рд░реЗ рджреВрд╕рд░реЗ рд░реЗрдкреЛ рдХреЛ рджреЗрдЦреЗрдВ -> E2A-SML

[!IMPORTANT] **рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдпрд╛ рдмрдЧ рд╕рдорд╕реНрдпрд╛ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЦреБрд▓реА рдФрд░ рдмрдВрдж рд╕рдорд╕реНрдпрд╛рдУрдВ рд╡рд╛рд▓реЗ рдЯреИрдм рдореЗрдВ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдЦреЛрдЬреЗрдВ

рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред**

[!NOTE] **EPUB рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдРрд╕реА рдХреЛрдИ рдорд╛рдирдХ рд╕рдВрд░рдЪрдирд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗ рдХрд┐ рдЕрдзреНрдпрд╛рдп, рдЕрдиреБрдЪреНрдЫреЗрдж, рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛ рдЖрджрд┐ рдХреНрдпрд╛ рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдЙрд╕ рд╕рднреА рдкрд╛рда рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рдЖрдк рдСрдбрд┐рдпреЛ рдореЗрдВ рдирд╣реАрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗред**

рдирд┐рд░реНрджреЗрд╢

  1. рд░реЗрдкреЛ рдХреНрд▓реЛрди рдХрд░реЗрдВ

    bash
    git clone https://github.com/DrewThomasson/ebook2audiobook.git
    cd ebook2audiobook
    
  2. ebook2audiobook рдЗрдВрд╕реНрдЯреЙрд▓ / рдЪрд▓рд╛рдПрдВ:

    • Linux/MacOS

      bash
      ./ebook2audiobook.command
      

      <i>MacOS рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рджреЗрдВ: рдЧреБрдо рдкреНрд░реЛрдЧреНрд░рд╛рдореЛрдВ рдХреЛ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП homebrew рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред</i>

    • Mac рд▓реЙрдиреНрдЪрд░
      Mac Ebook2Audiobook Launcher.command рдкрд░ рдбрдмрд▓ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

    • Windows

      bash
      ebook2audiobook.cmd
      

      рдпрд╛ ebook2audiobook.cmd рдкрд░ рдбрдмрд▓ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

      <i>Windows рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рджреЗрдВ: рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЧреБрдо рдкреНрд░реЛрдЧреНрд░рд╛рдореЛрдВ рдХреЛ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП scoop рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред</i>

  3. рд╡реЗрдм рдРрдк рдЦреЛрд▓реЗрдВ: рд╡реЗрдм рдРрдк рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдФрд░ рдИ-рдмреБрдХреНрд╕ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рджрд┐рдП рдЧрдП URL рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред http://localhost:7860/

  4. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП: ./ebook2audiobook.command --share (Linux/MacOS) ebook2audiobook.cmd --share (Windows) python app.py --share (all OS)

[!IMPORTANT] **рдпрджрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд░реЛрдХрдХрд░ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ Gradio GUI рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд░рд┐рдлрд╝реНрд░реЗрд╢ рдХрд░рдирд╛ рд╣реЛрдЧрд╛

рддрд╛рдХрд┐ рд╡реЗрдм рдкреЗрдЬ рдирдП рдХрдиреЗрдХреНрд╢рди рд╕реЙрдХреЗрдЯ рд╕реЗ рдлрд┐рд░ рд╕реЗ рдЬреБрдбрд╝ рд╕рдХреЗред**

рдмреБрдирд┐рдпрд╛рджреА рдЙрдкрдпреЛрдЧ

  • 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]: рдЖрдкрдХреА рдИ-рдмреБрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде

  • [--voice]: рд╡реЙрдпрд╕ рдХреНрд▓реЛрдирд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ рдкрде (рд╡реИрдХрд▓реНрдкрд┐рдХ)

  • [--language]: ISO-639-3 рдореЗрдВ рднрд╛рд╖рд╛ рдХреЛрдб (рдЕрд░реНрдерд╛рддреН: рдЗрддрд╛рд▓рд╡реА рдХреЗ рд▓рд┐рдП ita, рдЕрдВрдЧреНрд░реЗрдЬрд╝реА рдХреЗ рд▓рд┐рдП eng, рдЬрд░реНрдорди рдХреЗ рд▓рд┐рдП deu...)ред

    рдбрд┐рдлрд╝реЙрд▓реНрдЯ рднрд╛рд╖рд╛ eng рд╣реИ рдФрд░ ./lib/lang.py рдореЗрдВ рд╕реЗрдЯ рдХреА рдЧрдИ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП --language рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред

    2 рдЕрдХреНрд╖рд░ рд╡рд╛рд▓реЗ ISO-639-1 рдХреЛрдб рднреА рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред

рдХрд╕реНрдЯрдо рдореЙрдбрд▓ рдЬрд╝рд┐рдк рдЕрдкрд▓реЛрдб рдХрд╛ рдЙрджрд╛рд╣рд░рдг

(рдпрд╣ рдПрдХ .zip рдлрд╝рд╛рдЗрд▓ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдЕрдирд┐рд╡рд╛рд░реНрдп рдореЙрдбрд▓ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реЛрдВред XTTSv2 рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг: config.json, model.pth, vocab.json рдФрд░ 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>рдзреНрдпрд╛рди рджреЗрдВ: рдЖрдкрдХреЗ рдХрд╕реНрдЯрдо рдореЙрдбрд▓ рдХрд╛ ref.wav рд╣рдореЗрд╢рд╛ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдЪреБрдиреА рдЧрдИ рдЖрд╡рд╛рдЬрд╝ рд╣реЛрддреА рд╣реИ</i>

  • <custom_model_path>: model_name.zip рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде, рдЬрд┐рд╕рдореЗрдВ (tts рдЗрдВрдЬрди рдХреЗ рдЕрдиреБрд╕рд╛рд░) рд╕рднреА рдЕрдирд┐рд╡рд╛рд░реНрдп рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП

    (рджреЗрдЦреЗрдВ ./lib/models.py)ред
    

рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддреГрдд рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП

  • Linux/MacOS
    bash
    ./ebook2audiobook.command --help
    
  • Windows
    bash
    ebook2audiobook.cmd --help
    
  • рдпрд╛ рд╕рднреА OS рдХреЗ рд▓рд┐рдП 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

рдзреНрдпрд╛рди рджреЗрдВ: gradio/gui рдореЛрдб рдореЗрдВ, рдЪрд▓ рд░рд╣реЗ рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдИ-рдмреБрдХ рдЕрдкрд▓реЛрдб рдШрдЯрдХ рдХреЗ [X] рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рд╕реБрдЭрд╛рд╡: рдпрджрд┐ рдереЛрдбрд╝реЗ рдЕрдзрд┐рдХ рд╡рд┐рд░рд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ, рддреЛ 3 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП '[pause:3]' рдЬреЛрдбрд╝реЗрдВ рдЖрджрд┐ред

Docker

  1. рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдХреНрд▓реЛрди рдХрд░реЗрдВ:
bash
   git clone https://github.com/DrewThomasson/ebook2audiobook.git
   cd ebook2audiobook
  1. рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдПрдВ
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. рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛рдПрдВ:
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..
  • рдзреНрдпрд╛рди рджреЗрдВ: MPS docker рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ рдЗрд╕рд▓рд┐рдП CPU рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛

рд╕рд╛рдорд╛рдиреНрдп Docker рд╕рдорд╕реНрдпрд╛рдПрдВ

рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрди рдХрд┐рдП рдЧрдП (fine-tuned) TTS рдореЙрдбрд▓

рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ XTTSv2 рдореЙрдбрд▓ рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрди рдХрд░реЗрдВ

рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдбреЗрдЯрд╛ рдХрд╛ рд╢реЛрд░ рд╣рдЯрд╛рдирд╛

рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрди рдХрд┐рдП рдЧрдП TTS рдореЙрдбрд▓ рдХрд╛ рд╕рдВрдЧреНрд░рд╣

рдХрд╕реНрдЯрдо XTTSv2 рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП, рдЖрд╡рд╛рдЬрд╝ рдХрд╛ рдПрдХ рд╕рдВрджрд░реНрдн рдСрдбрд┐рдпреЛ рдХреНрд▓рд┐рдк рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИ:

рдЖрдкрдХрд╛ рд╕реНрд╡рдпрдВ рдХрд╛ Ebook2Audiobook рдЕрдиреБрдХреВрд▓рди

рдЖрдк рдЕрдкрдиреА рдЗрдЪреНрдЫрд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП libs/conf.py рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдмрд╕ рдореВрд▓ conf.py рдХреА рдПрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛ рд▓реЗрдВ рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ ebook2audiobook рдЕрджреНрдпрддрди рдкрд░ рдЖрдк рдЕрдкрдиреЗ рд╕рдВрд╢реЛрдзрд┐рдд conf.py рдХрд╛ рдмреИрдХрдЕрдк рд▓реЗ рд╕рдХреЗрдВ рдФрд░ рдореВрд▓ рдХреЛ рд╡рд╛рдкрд╕ рд░рдЦ рд╕рдХреЗрдВред рдЖрдкрдХреЛ models.py рдХреЗ рд▓рд┐рдП рднреА рд╡рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреА рд╣реЛрдЧреАред рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╕реНрдЯрдо рдореЙрдбрд▓ рдХреЛ рдПрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрди рдХрд┐рдпрд╛ рдЧрдпрд╛ ebook2audiobook рдореЙрдбрд▓ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рд╣рдорд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВ рдФрд░ рд╣рдо рдЗрд╕реЗ рдкреНрд░реАрд╕реЗрдЯ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред

рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛

рд░рд┐рд▓реАрдЬрд╝ рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ -> рдпрд╣рд╛рдВ

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

рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ:

  • рдореЗрд░рд╛ NVIDIA/ROCm/XPU/MPS GPU рдирд╣реАрдВ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛ рд░рд╣рд╛?? -> GPU ISSUES Wiki Page
  • CPU рдзреАрдорд╛ рд╣реИ (рд╕рд░реНрд╡рд░ smp CPU рдкрд░ рдмреЗрд╣рддрд░) рдЬрдмрдХрд┐ GPU рд▓рдЧрднрдЧ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХрд╛ рд░реВрдкрд╛рдВрддрд░рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИред Discussion about this (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдореЗрдВ zero-shot рд╡реЙрдпрд╕ рдХреНрд▓реЛрдирд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпреЗ Siri рдЧреБрдгрд╡рддреНрддрд╛ рдХреА рдЖрд╡рд╛рдЬрд╝реЗрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ cpu рдкрд░ рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реИ)ред
  • "рдореБрдЭреЗ рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрдмрдВрдзреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд░рд╣реА рд╣реИрдВ" - рдмрд╕ docker рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ headless рдореЛрдб рд╣реИ, рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП docker run рдХрдорд╛рдВрдб рдХреЗ рдЕрдВрдд рдореЗрдВ --help рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝реЗрдВред
  • "рдореБрдЭреЗ рдХрдЯреЗ рд╣реБрдП рдСрдбрд┐рдпреЛ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ!" - рдХреГрдкрдпрд╛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ ISSUE рдмрдирд╛рдПрдВ, рд╣рдо рд╣рд░ рднрд╛рд╖рд╛ рдирд╣реАрдВ рдмреЛрд▓рддреЗ рдФрд░ рд╡рд╛рдХреНрдп рд╡рд┐рднрд╛рдЬрди рддрд░реНрдХ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рд▓рд╛рд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИредЁЯШК

***** рд░реЛрдбрдореИрдк *****

  • рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП рдЦреБрд▓реА рд╣реИрдВ тнР
  • рдореЙрдбрд▓реЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рд╣рдорд╛рд░реА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╕рдорд░реНрдерд┐рдд рднрд╛рд╖рд╛ рдХреЛ рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рд╕реЗ рдХреЛрдИ рднреА рд╕рд╣рд╛рдпрддрд╛ тнР
  • рд░реВрдкрд╛рдВрддрд░рдг рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмреНрд▓реЙрдХ/рдЕрдзреНрдпрд╛рдпреЛрдВ рдХрд╛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди
  • рд╕реВрдХреНрд╖реНрдо рдкрд╛рда рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рд░реВрдкрд╛рдВрддрд░рд┐рдд рд╡рд╛рдХреНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрдкрд╛рджрди
  • рдЖрд╡рд╛рдЬрд╝, рд╡рд┐рд░рд╛рдо, рд░реБрдХрд╛рд╡рдЯ рдФрд░ рдЕрдзрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП SML рдЯреИрдЧ рдПрдХреАрдХрд░рдг
  • рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ -h -help рдкреИрд░рд╛рдореАрдЯрд░ рдЬрд╛рдирдХрд╛рд░реА
  • PDF / JPG / BMP / PNG / TIFF рдХреЗ рд▓рд┐рдП OCR рд╕реНрдХреИрдирд┐рдВрдЧ
  • Notebooks рдлрд╝реЛрд▓реНрдбрд░ Talked about here
  • рдЪреАрдиреА рдкрд╛рда рд╡рд┐рднрд╛рдЬрди рдХреЛ рд╢рдмреНрджреЛрдВ рдХреЛ рди рддреЛрдбрд╝рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдирд╛ рдФрд░ рд╡рд┐рд░рд╛рдо рдХреА рд╕рдордпрдмрджреНрдзрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ Talked about here
  • Dockerfile
  • Docker compose
  • Podman compose
  • Kaggle Notebook
  • Google Colab Notebook
  • рдПрдХ iOS рдРрдк рдмрдирд╛рдирд╛
  • рдПрдХ android рдРрдк рдмрдирд╛рдирд╛
  • Audiobookshelf рдПрдХреАрдХрд░рдг

рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдХрд▓реНрдк

  • рдИ-рдмреБрдХ рдЕрдиреБрд╡рд╛рдж рд╡рд┐рдХрд▓реНрдк
  • рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рд░реВрдк рд╡рд┐рдХрд▓реНрдк
  • рдмреИрдЪ рдИ-рдмреБрдХ рдлрд╝реЛрд▓реНрдбрд░
  • рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд░реВрдкрд╛рдВрддрд░рдг
  • рдмреИрдЪ рдИ-рдмреБрдХ рдлрд╝реЛрд▓реНрдбрд░ рд░реВрдкрд╛рдВрддрд░рдг
  • GPU рдбрд┐рд╡рд╛рдЗрд╕ рдкрд╣рдЪрд╛рди
  • рдЕрдкрд▓реЛрдб рдХреА рдЧрдИ рд╡реЙрдпрд╕ рдХреНрд▓реЛрдирд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╕рдВрджрд░реНрдн рдСрдбрд┐рдпреЛ рдХрд╛ рд╢реЛрд░ рд╣рдЯрд╛рдПрдВ,
  • рдХрд╕реНрдЯрдо рдореЙрдбрд▓ рдЕрдкрд▓реЛрдб (рдЕрднреА рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ XTTSv2ред рдорд╛рдВрдЧ рдкрд░ рдФрд░)
  • рдХрдо рд╕реЗ рдХрдо xttsv2, fairseq, vits, piper рдХреЗ рд▓рд┐рдП рдпреВрд░реЛрдкреАрдп рдкреБрд░реНрддрдЧрд╛рд▓реА рднрд╛рд╖рд╛ рдореЙрдбрд▓ рдЬреЛрдбрд╝реЗрдВ (рд╕рд╣рд╛рдпрддрд╛ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ)
  • рдХрдо рд╕реЗ рдХрдо xttsv2, fairseq, vits, piper рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдзреА рднрд╛рд╖рд╛ рдореЙрдбрд▓ рдЬреЛрдбрд╝реЗрдВ (рд╕рд╣рд╛рдпрддрд╛ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ)

TTS рдЗрдВрдЬрди

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)

ЁЯРН OS рд╕рдВрдЧрддрддрд╛

  • ЁЯНО Mac Intel x86
  • ЁЯкЯ Windows x86
  • ЁЯРз Linux x86
  • ЁЯЦея╕ПЁЯНП Apple Silicon Mac
  • ЁЯкЯЁЯТк ARM Windows
  • ЁЯРзЁЯТк ARM Linux

рдореЙрдбрд▓реЛрдВ рдХреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдУрд╡рд░рдХрд┐рд▓ (рд╕рднреА рд╕рдорд░реНрдерд┐рдд Coqui-tts рдореЙрдбрд▓ рдФрд░ piper-tts рдПрдХ рдЖрд╕рд╛рди рдХрдорд╛рдВрдб рдореЗрдВ)

  • рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП @DrewThomasson, рд╡реЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕рдХреЗ рд╡рд┐рдХрд╛рд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХрд╛рд░реНрдп-рдкреНрд░рдЧрддрд┐ рд░реЗрдкреЛ рдпрд╣рд╛рдВ
  • ljspeech рдкреНрд░рд╛рд░реВрдк рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд░реЗрд╕рд┐рдкреА рдореЗрдВ рд╕рднреА coqui-tts рдореЙрдбрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рди рдкреНрд░рд╢рд┐рдХреНрд╖рдг gui рдмрдирд╛рдПрдВ coqui tts рд╕реЗ рдпрд╣рд╛рдВ

рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП Python рдХреЛрдб рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдЬрд╛рдирдХрд╛рд░реА

  • рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдХреНрд▓рд╛рд╕ рдХреЗ рдмреАрдЪ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдХреЛрдб рдХреЗ рдмреАрдЪ рдХреЛрдИ рдЦрд╛рд▓реА рдкрдВрдХреНрддрд┐ рдирд╣реАрдВред
  • dict() рдФрд░ json рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХрд▓ рдЙрджреНрдзрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред dict['key'] рд╣рдореЗрд╢рд╛ рдПрдХрд▓ рдЙрджреНрдзрд░рдг рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  • 4 рд╕реНрдерд╛рди рдЗрдВрдбреЗрдВрдЯреЗрд╢рди, рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЯреИрдм рдирд╣реАрдВ
  • рд╕рднреА рдлрд╝рдВрдХреНрд╢рдиреЛрдВ рдФрд░ рдЙрдирдХреЗ рддрд░реНрдХреЛрдВ рддрдерд╛ рд░рд┐рдЯрд░реНрди рдорд╛рдиреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рд▓рд┐рдП рд╕рдЦреНрдд рдЯрд╛рдЗрдкрд┐рдВрдЧ
  • рддрд░реНрдХ рдФрд░ рдЙрд╕рдХреА рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рдмреАрдЪ рдХреЛрдИ рд╕реНрдерд╛рди рдирд╣реАрдВ, рдлрд╝рдВрдХреНрд╢рди, "->" рдФрд░ рд░рд┐рдЯрд░реНрди рдорд╛рди рдХреЗ рдмреАрдЪ рдХреЛрдИ рд╕реНрдерд╛рди рдирд╣реАрдВ

рдЙрджрд╛рд╣рд░рдг:

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

рдмреАрдЯрд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рджрд╛рди рдХреА рддрд▓рд╛рд╢ рд╣реИ

рд╣рдо рдЕрдкрдиреЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ:

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

@DrewThomasson рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ! ЁЯШГ

<!-- ## рдХреНрдпрд╛ рдЖрдкрдХреЛ рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП GPU рдХрд┐рд░рд╛рдП рдкрд░ рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? - рдпрд╣рд╛рдВ рдПрдХ рдорддрджрд╛рди рдЦреБрд▓рд╛ рд╣реИ https://github.com/DrewThomasson/ebook2audiobook/discussions/889 -->

рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рдж