Ubuntu 12.04 Precise Pangolin
Dieses von rennau80 entwickelte Python-Skript verbindet mehrere Programme (wie pdftotext
, lame
, espeak
, wavbreaker
), um aus einer ASCII- ( .txt, .dat) oder .pdf-Datei eine Audio-Datei (.wav oder .mp3) zu erstellen. Da eSpeak verwendet wird, sind sehr viele Sprachen verfügbar. Unter diesem Foreneintrag sind zwei Code-Versionen zu finden: eine, die mit text2wave
arbeitet (nur englische Sprache) sowie die hier beschriebene Version, die etliche Sprachen bei der Konvertierung zu einer Audio-Datei beherrscht. Das Skript ist für das in Ubuntu standardmäßig verwendete Python-2.x ausgelegt.
Benötigt werden folgende Pakete [1]:
python
poppler-utils
festival
festvox-rablpc16k
lame
espeak
mit apturl
Paketliste zum Kopieren:
sudo apt-get install python poppler-utils festival festvox-rablpc16k lame espeak
sudo aptitude install python poppler-utils festival festvox-rablpc16k lame espeak
Dann das Skript pdf2mp3.py herunterladen und ausführbar machen [2]. Um das Skript systemweit nutzen zu können, ohne jeweils den Pfad kennen zu müssen, empfiehlt es sich, es mit Root-Rechten [3] nach /usr/local/bin/ zu kopieren und die Rechte zum Ausführen korrekt zu setzen.
In einem Terminal [4] lässt sich das Skript dann z.B. mit
pdf2mp3.py -h
aufrufen. Damit bekommt man die Hilfe zum Skript angezeigt. Mit z.B.
pdf2mp3.py -v de -f input.pdf -o output.mp3
ruft man das Skript auf, um input.pdf in eine deutschsprachige (-v de
) output.mp3 umzuwandeln. Dabei muss für die Eingabedatei eine Endung angegeben werden, auch die Ausgabedatei wird nach der Endung erstellt. Der Befehl:
espeak --voices
listet alle verfügbaren Sprachen auf. Es können auch MBROLA-Stimmen eingesetzt sein (z.B -vmb-de6
). Als Ausgabe sind .wav oder .mp3 möglich, letztere wird standardmäßig in -f (fast mode)
-Qualität gespeichert.
Das Skript entfernt automatische alle Sonderzeichen, Grafiken etc. aus den Dateien, sodass nur der eigentliche Text verwendet wird.
Um weitere eSpeak-Optionen nutzen zu können, kann man mit einem Editor [5] einfach in Zeile 129 espeak
durch z.B. espeak -s 140
ersetzen. Natürlich sind auch weitere Anpassungen möglich.
Manchmal lassen sich große PDF-Dateien nicht ordnungsgemäß umwandeln (siehe Forenbeitrag). Als Lösung kann eventuell in der def convert_to_wav
in Zeile 125 ein time.sleep(3)
eingefügt werden, wenn nötig auch mit höherem Wert.
Diese Revision wurde am 24. Mai 2015 02:51 von ubot erstellt.