Schließen Sie sich unserem Discord -Server für Fragen oder Diskussionen bei.
Dieses Projekt bietet ein Befehlszeilen-Tool zum Umwandeln von EPUB-E-Books in Hörbücher. Es unterstützt nun sowohl die Microsoft Azure Text-to-Speech-API (alternativy edgetts) als auch die OpenAI-API von OpenAI, um das Audio für jedes Kapitel im E-Book zu generieren. Die Ausgabe -Audio -Dateien sind für die Verwendung mit Hörbüchern optimiert.
Dieses Projekt wird mit Hilfe von ChatGPT entwickelt.
Wenn Sie daran interessiert sind, ein Beispiel des von diesem Tool generierten Hörbuchs zu hören, überprüfen Sie die Links im Bellow.
Die von diesem Projekt generierten Hörbücher sind für die Verwendung mit Hörbüchern optimiert. Jedes Kapitel in der EPUB -Datei wird in eine separate MP3 -Datei konvertiert, wobei der Kapitel -Titel extrahiert und als Metadaten enthalten ist.

Das Analysieren und Extrahieren von Kapiteltiteln aus EPUB -Dateien kann eine Herausforderung sein, da das Format und die Struktur zwischen verschiedenen E -Books erheblich variieren können. Das Skript verwendet eine einfache, aber effektive Methode zum Extrahieren von Kapiteltiteln, die für die meisten EPUB -Dateien funktioniert. Die Methode umfasst die Parsen der EPUB -Datei und die Suche nach dem title -Tag im HTML -Inhalt jedes Kapitels. Wenn das Titel -Tag nicht vorhanden ist, wird ein Fallback -Titel mit den ersten Wörtern des Kapitels Text generiert.
Bitte beachten Sie, dass dieser Ansatz möglicherweise nicht perfekt für alle EPUB -Dateien funktioniert, insbesondere für solche mit komplexen oder ungewöhnlichen Formatierungen. In den meisten Fällen bietet es jedoch eine zuverlässige Möglichkeit, Kapiteltitel für die Verwendung in Hörbüchern zu extrahieren.
Wenn Sie die generierten MP3 -Dateien in ein Hörbücher -Shelf importieren, werden die Kapitel -Titel angezeigt, sodass es einfach ist, zwischen den Kapiteln zu navigieren und Ihr Hörerlebnis zu verbessern.
Klonen Sie dieses Repository:
git clone https://github.com/p0n1/epub_to_audiobook.git
cd epub_to_audiobookErstellen Sie eine virtuelle Umgebung und aktivieren Sie sie:
python3 -m venv venv
source venv/bin/activateInstallieren Sie die erforderlichen Abhängigkeiten:
pip install -r requirements.txtLegen Sie die folgenden Umgebungsvariablen mit Ihren Azure-API-API-Anmeldeinformationen oder Ihrer OpenAI-API-Schlüssel ein, wenn Sie OpenAI TTS verwenden:
export MS_TTS_KEY= < your_subscription_key > # for Azure
export MS_TTS_REGION= < your_region > # for Azure
export OPENAI_API_KEY= < your_openai_api_key > # for OpenAI Führen Sie den folgenden Befehl aus und geben Sie den TTS -Anbieter Ihrer Wahl mit der Option --tts an:
python3 main.py < input_file > < output_folder > [options]Um die neuesten Optionsbeschreibungen für dieses Skript zu überprüfen, können Sie den folgenden Befehl im Terminal ausführen:
python3 main.py -husage: main.py [-h] [--tts {azure,openai,edge,piper}]
[--log {DEBUG,INFO,WARNING,ERROR,CRITICAL}] [--preview]
[--no_prompt] [--language LANGUAGE]
[--newline_mode {single,double,none}]
[--title_mode {auto,tag_text,first_few}]
[--chapter_start CHAPTER_START] [--chapter_end CHAPTER_END]
[--output_text] [--remove_endnotes]
[--search_and_replace_file SEARCH_AND_REPLACE_FILE]
[--voice_name VOICE_NAME] [--output_format OUTPUT_FORMAT]
[--model_name MODEL_NAME] [--voice_rate VOICE_RATE]
[--voice_volume VOICE_VOLUME] [--voice_pitch VOICE_PITCH]
[--proxy PROXY] [--break_duration BREAK_DURATION]
[--piper_path PIPER_PATH] [--piper_speaker PIPER_SPEAKER]
[--piper_sentence_silence PIPER_SENTENCE_SILENCE]
[--piper_length_scale PIPER_LENGTH_SCALE]
input_file output_folder
Convert text book to audiobook
positional arguments:
input_file Path to the EPUB file
output_folder Path to the output folder
options:
-h, --help show this help message and exit
--tts {azure,openai,edge,piper}
Choose TTS provider (default: azure). azure: Azure
Cognitive Services, openai: OpenAI TTS API. When using
azure, environment variables MS_TTS_KEY and
MS_TTS_REGION must be set. When using openai,
environment variable OPENAI_API_KEY must be set.
--log {DEBUG,INFO,WARNING,ERROR,CRITICAL}
Log level (default: INFO), can be DEBUG, INFO,
WARNING, ERROR, CRITICAL
--preview Enable preview mode. In preview mode, the script will
not convert the text to speech. Instead, it will print
the chapter index, titles, and character counts.
--no_prompt Don ' t ask the user if they wish to continue after
estimating the cloud cost for TTS. Useful for
scripting.
--language LANGUAGE Language for the text-to-speech service (default: en-
US). For Azure TTS (--tts=azure), check
https://learn.microsoft.com/en-us/azure/ai-
services/speech-service/language-
support?tabs=tts#text-to-speech for supported
languages. For OpenAI TTS (--tts=openai), their API
detects the language automatically. But setting this
will also help on splitting the text into chunks with
different strategies in this tool, especially for
Chinese characters. For Chinese books, use zh-CN, zh-
TW, or zh-HK.
--newline_mode {single,double,none}
Choose the mode of detecting new paragraphs: ' single ' ,
' double ' , or ' none ' . ' single ' means a single newline
character, while ' double ' means two consecutive
newline characters. ' none ' means all newline
characters will be replace with blank so paragraphs
will not be detected. (default: double, works for most
ebooks but will detect less paragraphs for some
ebooks)
--title_mode {auto,tag_text,first_few}
Choose the parse mode for chapter title, ' tag_text '
search ' title ' , ' h1 ' , ' h2 ' , ' h3 ' tag for title,
' first_few ' set first 60 characters as title, ' auto '
auto apply the best mode for current chapter.
--chapter_start CHAPTER_START
Chapter start index (default: 1, starting from 1)
--chapter_end CHAPTER_END
Chapter end index (default: -1, meaning to the last
chapter)
--output_text Enable Output Text. This will export a plain text file
for each chapter specified and write the files to the
output folder specified.
--remove_endnotes This will remove endnote numbers from the end or
middle of sentences. This is useful for academic
books.
--search_and_replace_file SEARCH_AND_REPLACE_FILE
Path to a file that contains 1 regex replace per line,
to help with fixing pronunciations, etc. The format
is: <search>==<replace> Note that you may have to
specify word boundaries, to avoid replacing parts of
words.
--voice_name VOICE_NAME
Various TTS providers has different voice names, look
up for your provider settings.
--output_format OUTPUT_FORMAT
Output format for the text-to-speech service.
Supported format depends on selected TTS provider
--model_name MODEL_NAME
Various TTS providers has different neural model names
edge specific:
--voice_rate VOICE_RATE
Speaking rate of the text. Valid relative values range
from -50%(--xxx= ' -50% ' ) to +100%. For negative value
use format --arg=value,
--voice_volume VOICE_VOLUME
Volume level of the speaking voice. Valid relative
values floor to -100%. For negative value use format
--arg=value,
--voice_pitch VOICE_PITCH
Baseline pitch for the text.Valid relative values like
-80Hz,+50Hz, pitch changes should be within 0.5 to 1.5
times the original audio. For negative value use
format --arg=value,
--proxy PROXY Proxy server for the TTS provider. Format:
http://[username:password@]proxy.server:port
azure/edge specific:
--break_duration BREAK_DURATION
Break duration in milliseconds for the different
paragraphs or sections (default: 1250, means 1.25 s).
Valid values range from 0 to 5000 milliseconds for
Azure TTS.
piper specific:
--piper_path PIPER_PATH
Path to the Piper TTS executable
--piper_speaker PIPER_SPEAKER
Piper speaker id, used for multi-speaker models
--piper_sentence_silence PIPER_SENTENCE_SILENCE
Seconds of silence after each sentence
--piper_length_scale PIPER_LENGTH_SCALE
Phoneme length, a.k.a. speaking rateBeispiel :
python3 main.py examples/The_Life_and_Adventures_of_Robinson_Crusoe.epub output_folder Das Ausführen des obigen Befehls generiert ein Verzeichnis mit dem Namen output_folder und speichert die MP3 -Dateien für jedes Kapitel mit dem Standard -TTS -Anbieter und der Sprache. Sobald Sie generiert sind, können Sie diese Audiodateien in Hörbücher importieren oder sie mit einem Audio -Player Ihrer Wahl abspielen.
Bevor Sie Ihre EPUB -Datei in ein Hörbuch konvertieren, können Sie die Option --preview verwenden, um eine Zusammenfassung jedes Kapitels zu erhalten. Dadurch erhalten Sie die Charakterzahl jedes Kapitels und die Gesamtzahl, anstatt den Text in die Sprache umzuwandeln.
Beispiel :
python3 main.py examples/The_Life_and_Adventures_of_Robinson_Crusoe.epub output_folder --previewMöglicherweise möchten Sie Text suchen und ersetzen, entweder die Abkürzungen erweitern oder bei der Aussprache helfen. Sie können dies tun, indem Sie eine Such- und Ersatzdatei angeben, die eine einzelne Regex -Suche und Ersatz pro Zeile enthält, die durch '==' getrennt ist:
Beispiel :
Search.conf :
# this is the general structure
<search>==<replace>
# this is a comment
# fix cardinal direction abbreviations
N.E.==north east
# be careful with your regexes, as this would also match Sally N. Smith
N.==north
# pronounce Barbadoes like the locals
Barbadoes==Barbayduss
python3 main.py examples/The_Life_and_Adventures_of_Robinson_Crusoe.epub output_folder --search_and_replace_file search.confBeispiel :
python3 main.py examples/The_Life_and_Adventures_of_Robinson_Crusoe.epub output_folder --previewDieses Tool ist als Docker -Bild verfügbar, sodass es einfach ausführen kann, ohne Python -Abhängigkeiten verwalten zu müssen.
Stellen Sie zunächst sicher, dass Sie Docker auf Ihrem System installiert haben.
Sie können das Docker -Bild aus der GitHub -Containerregistrierung ziehen:
docker pull ghcr.io/p0n1/epub_to_audiobook:latestDann können Sie das Tool mit dem folgenden Befehl ausführen:
docker run -i -t --rm -v ./:/app -e MS_TTS_KEY= $MS_TTS_KEY -e MS_TTS_REGION= $MS_TTS_REGION ghcr.io/p0n1/epub_to_audiobook your_book.epub audiobook_output --tts azureFür OpenAI können Sie rennen:
docker run -i -t --rm -v ./:/app -e OPENAI_API_KEY= $OPENAI_API_KEY ghcr.io/p0n1/epub_to_audiobook your_book.epub audiobook_output --tts openai Ersetzen Sie $MS_TTS_KEY und $MS_TTS_REGION durch Ihre Azure-API-API-Anmeldeinformationen. Ersetzen Sie $OPENAI_API_KEY durch Ihren OpenAI -API -Schlüssel. Ersetzen Sie your_book.epub durch den Namen der Eingabe -EPUB -Datei und audiobook_output für den Namen des Verzeichnisses, in dem Sie die Ausgabedateien speichern möchten.
Die Option -v ./:/app montiert das aktuelle Verzeichnis ( . ) Zum /app -Verzeichnis im Docker -Container. Dadurch kann das Tool die Eingabedatei lesen und die Ausgabedateien in Ihr lokales Dateisystem schreiben.
Die Optionen -i und -t sind erforderlich, um den interaktiven Modus zu aktivieren und einen Pseudo -Ty zuzuweisen.
Sie können auch diese Beispiel -Konfigurationsdatei für Docker Compose -Nutzung überprüfen.
Für Windows-Benutzer, insbesondere wenn Sie mit Befehlszeilen-Tools nicht sehr vertraut sind, haben wir Sie abgedeckt. Wir verstehen die Herausforderungen und haben einen Leitfaden erstellt, der speziell für Sie zugeschnitten ist.
Überprüfen Sie diese Schritt -für -Schritt -Anleitung und hinterlassen Sie eine Nachricht, wenn Sie auf Probleme stoßen.
Quelle: https://learn.microsoft.com/en-us/azure/cognitive-services/speech-service/get-started-text-t-speech#prreequisites
Überprüfen Sie https://platform.openai.com/docs/quickstart/account-setup. Überprüfen Sie die Preisdetails vor der Verwendung.
Edge TTS und Azure TTs sind fast gleich. Der Unterschied besteht darin, dass Edge -TTs keine API -Schlüssel erfordern, da es auf der Edge -Read -Funktionalität basiert und die Parameter ein wenig eingeschränkt sind, wie benutzerdefinierte SSML.
Überprüfen Sie https://gist.github.com/bettyjj/17cbaa1de96235a7f5773b8690a20462 für unterstützte Stimmen.
Wenn Sie dieses Projekt schnell ausprobieren möchten, wird Edge TTS dringend empfohlen.
Sie können die für die Text-zu-Sprach-Konvertierung verwendete Stimme und Sprache anpassen, indem Sie die Optionen --voice_name und --language beim Ausführen des Skripts übergeben.
Microsoft Azure bietet eine Reihe von Stimmen und Sprachen für den Text-zu-Speech-Dienst. Eine Liste der verfügbaren Optionen finden Sie in der Microsoft Azure Text-to-Speech-Dokumentation.
Sie können auch Muster der verfügbaren Stimmen in der Azure TTS Voice Gallery anhören, um die beste Stimme für Ihr Hörbuch zu wählen.
Wenn Sie beispielsweise eine britische englische weibliche Stimme für die Konvertierung verwenden möchten, können Sie den folgenden Befehl verwenden:
python3 main.py < input_file > < output_folder > --voice_name en-GB-LibbyNeural --language en-GB Für OpenAI -TTs können Sie die Optionen für Modell-, Sprach- und Formatoptionen mit --model_name , --voice_name bzw. --output_format angeben.
Hier sind einige Beispiele, die verschiedene Optionskombinationen zeigen:
Grundlegende Konvertierung mithilfe von Azure mit Standardeinstellungen
Dieser Befehl wandelt eine EPUB -Datei mithilfe der Standard -TTS -Einstellungen von Azure in ein Hörbuch um.
python3 main.py " path/to/book.epub " " path/to/output/folder " --tts azure Azure -Konvertierung mit benutzerdefinierter Sprache, Sprach- und Protokollierungsebene
Konvertiert eine EPUB -Datei in ein Hörbuch mit einer bestimmten Stimme und einer benutzerdefinierten Protokollebene für Debugging -Zwecke.
python3 main.py " path/to/book.epub " " path/to/output/folder " --tts azure --language zh-CN --voice_name " zh-CN-YunyeNeural " --log DEBUG Azure -Konvertierung mit Kapitelbereich und Bruchdauer
Konvertiert einen bestimmten Kapitelbereich von einer EPUB -Datei in ein Hörbuch mit einer benutzerdefinierten Unterbrechungsdauer zwischen den Absätzen.
python3 main.py " path/to/book.epub " " path/to/output/folder " --tts azure --chapter_start 5 --chapter_end 10 --break_duration " 1500 " Grundlegende Konvertierung mithilfe von OpenAI mit Standardeinstellungen
In diesem Befehl konvertiert eine EPUB -Datei mithilfe von OpenAIS -Standard -TTS -Einstellungen in ein Hörbuch.
python3 main.py " path/to/book.epub " " path/to/output/folder " --tts openai OpenAI -Konvertierung mit HD -Modell und spezifischer Stimme
Konvertiert eine EPUB-Datei mithilfe des hochauflösenden OpenAI-Modells und einer bestimmten Sprachauswahl in ein Hörbuch.
python3 main.py " path/to/book.epub " " path/to/output/folder " --tts openai --model_name " tts-1-hd " --voice_name " fable " OpenAI -Konvertierung mit Vorschau und Textausgabe
Aktiviert die Vorschau -Modus und die Textausgabe, mit der der Kapitelindex und die Titel angezeigt wird, anstatt sie zu konvertieren und den Text auch zu exportieren.
python3 main.py " path/to/book.epub " " path/to/output/folder " --tts openai --preview --output_text Grundlegende Konvertierung mithilfe von Edge mit Standardeinstellungen
In diesem Befehl konvertiert eine EPUB -Datei mithilfe der Standard -TTS -Einstellungen von Edge.
python3 main.py " path/to/book.epub " " path/to/output/folder " --tts edgeDie Kantenkonvertierung mit benutzerdefinierter Sprache, Sprach- und Protokollierungsebene wandelt eine EPUB -Datei mit einer angegebenen Stimme und einer benutzerdefinierten Protokollebene für Debugging -Zwecke in ein Hörbuch um.
python3 main.py " path/to/book.epub " " path/to/output/folder " --tts edge --language zh-CN --voice_name " zh-CN-YunxiNeural " --log DEBUGDie Kantenkonvertierung mit Kapitelbereich und Unterbrechungsdauer wandelt einen bestimmten Bereich von Kapiteln von einer EPUB -Datei mit einer benutzerdefinierten Pausendauer zwischen den Absätzen in ein Hörbuch um.
python3 main.py " path/to/book.epub " " path/to/output/folder " --tts edge --chapter_start 5 --chapter_end 10 --break_duration " 1500 "Stellen Sie sicher, dass Sie Piper TTS installiert haben und über eine ONNX -Modelldatei und eine entsprechende Konfigurationsdatei verfügen. Überprüfen Sie Piper TTS für weitere Details. Sie können ihre Anweisungen befolgen, um Piper TTs zu installieren, die Modelle und Konfigurationsdateien herunterzuladen, damit abzugeben und dann zurück zu kommen, um die folgenden Beispiele auszuprobieren.
In diesem Befehl werden eine EPUB -Datei mit Piper -TTs mit den bloßen Mindestparametern in einen Hörbuch umwandeln. Sie müssen immer eine ONNX -Modelldatei angeben, und die ausführbare Datei piper muss im aktuellen $ -Path liegen.
python3 main.py " path/to/book.epub " " path/to/output/folder " --tts piper --model_name < path_to > /en_US-libritts_r-medium.onnx Sie können Ihren benutzerdefinierten Pfad zum ausführbaren PIPER angeben, indem Sie den Parameter --piper_path verwenden.
python3 main.py " path/to/book.epub " " path/to/output/folder " --tts piper --model_name < path_to > /en_US-libritts_r-medium.onnx --piper_path < path_to > /piperEinige Modelle unterstützen mehrere Stimmen und können mit dem Parameter Voice_name angegeben werden.
python3 main.py " path/to/book.epub " " path/to/output/folder " --tts piper --model_name < path_to > /en_US-libritts_r-medium.onnx --piper_speaker 256Sie können auch Geschwindigkeit (piper_length_scale) und Pause -Dauer (PIPER_SENTENCE_SILENCE) angeben.
python3 main.py " path/to/book.epub " " path/to/output/folder " --tts piper --model_name < path_to > /en_US-libritts_r-medium.onnx --piper_speaker 256 --piper_length_scale 1.5 --piper_sentence_silence 0.5 PIPER TTS gibt standardmäßig wav -Formatdateien (oder RAW) aus. Sie sollten in der Lage sein, ein angemessenes Format über den Parameter --output_format anzugeben. Das opus und die mp3 sind gute Auswahlmöglichkeiten für Größe und Kompatibilität.
python3 main.py " path/to/book.epub " " path/to/output/folder " --tts piper --model_name < path_to > /en_US-libritts_r-medium.onnx --piper_speaker 256 --piper_length_scale 1.5 --piper_sentence_silence 0.5 --output_format opus Dies kann daran liegen, dass die von Ihnen verwendete Python -Version weniger als 3,8 ist. Sie können versuchen, es manuell durch pip3 install importlib-metadata oder eine höhere Python-Version zu verwenden.
Stellen Sie sicher, dass FFMPEG Binary von Ihrem Weg von Ihrem Weg zugänglich ist. Wenn Sie auf einem Mac sind und Homebrew verwenden, können Sie brew install ffmpeg , auf Ubuntu sudo apt install ffmpeg durchführen
Informationen zu installationsbezogenen Problemen finden Sie im Piper TTS-Repository. Es ist wichtig zu beachten, dass, wenn Sie piper-tts über PIP installieren, derzeit nur Python 3.10 unterstützt wird. Mac -Benutzer können bei der Verwendung des heruntergeladenen Binary auf zusätzliche Herausforderungen stoßen. Weitere Informationen zu Mac-spezifischen Problemen finden Sie in diesem Problem und dieser Pull-Anfrage.
Überprüfen Sie dies auch, wenn Sie Probleme mit Piper TTS haben.
Dieses Projekt ist unter der MIT -Lizenz lizenziert. Weitere Informationen finden Sie in der Lizenzdatei.