Um aus pdf, doc, html, htm, rtf, txt oder lit Dateien Hörbücher/dokumente (mp3) zu erstellen, habe ich mir folgendes Skript erstellt. Die Qualität ist meiner Meinung nach ausreichend, um Dokumente unterwegs ohne Schmerzen "lesen" zu können. Probleme bestehen noch bei englischen Wörtern in deutschen Texten (z.B. Fachtexten).
Benötigte Pakete sind:
poppler-utils (pdftotext)
convlit (clit)
html2text
catdoc
espeak
mbrola
lame
mp3splt(optional)
Diese können über:
sudo apt-get install <Paketname>
installiert werden.
Anschließen müssen noch zwei mbrola-Stimmen (en1, de6) auf folgender Seite heruntergeladen werden.
http://tcts.fpms.ac.be/synthesis/mbrola/mbrcopybin.html
en1: British English Male (5.7Mb) Alan V. Black
de6: German Male (48.5Mb) Saarland University
Die Dateien mit root-Rechten nach /usr/share/mbrola entpacken. Die Verzeichnisse de6 und en1 sollten sich somit im Ordner /usr/share/mbrola befinden.
Der Aufruf erfolgt dann über
./book2mp3.sh <pdf, doc, html, htm, rtf, txt or lit file>
Beispiel
./book2mp3.sh "/home/niemand/Homer - Odyssee.pdf"
Den Code als ausführbare .sh - Datei (z.B. book2mp3.sh) speichern oder Anhang herunterladen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | #!/bin/bash #clear #------------------------------------# # Umwandeln von Text in Sprache # #------------------------------------# # #------------------------------------# # Parameter Behandlung # #------------------------------------# while getopts hp opt do case "$opt" in h) echo -e "book2mp3 <pdf, doc, html, htm, rtf, txt or lit file>";exit 1;; \?) exit 1;; esac done shift $(($OPTIND - 1)) if [ "$1" ] then SOURCE="$1" shift fi #------------------------------------# # Umwandlung: Buch-Datei in Text # #------------------------------------# ENDOFF=${SOURCE##*.} cd "$(dirname "$SOURCE")" mkdir tmp cd tmp case "$ENDOFF" in pdf) pdftotext "$SOURCE" sp.txt;; lit) clit "$SOURCE" "$(dirname "$SOURCE")/tmp"; html2text *.htm* > sp.txt;; txt) cp "$SOURCE" sp.txt;; htm) html2text "$SOURCE" > sp.txt;; html) html2text "$SOURCE" > sp.txt;; rtf) catdoc "$SOURCE" > sp.txt;; doc) catdoc "$SOURCE" > sp.txt;; \?) exit 1;; esac # löschen von Seitennummern sed -e 's/[01234567890]*$//g' sp.txt > spc.txt #------------------------------------# # ermitteln der Sprache des Buches # #------------------------------------# ENTXT=$(cat spc.txt | grep -c " the ") DETXT=$(cat spc.txt | grep -c " der ") echo "Artikelzahl (article count) en $ENTXT : de $DETXT" #------------------------------------# # Umwandlung: Text in Sprache # #------------------------------------# if [ $ENTXT -le $DETXT ] then espeak -v german-mbrola-6 -f spc.txt -w -.wav | mbrola -e -t 1.15 -f 0.9 /usr/share/mbrola/de6/de6 - -.wav | lame -h -V 2 - "$SOURCE.mp3" else espeak -v mb-en1 -f spc.txt -w -.wav | mbrola -e -t 1.15 -f 0.9 /usr/share/mbrola/en1/en1 - -.wav | lame -h -V 2 - "$SOURCE.mp3" fi cd .. rm tmp/* rmdir tmp #------------------------------------# # Aufteilen der MP3-Datei # #------------------------------------# # nachfolgende Zeilen auskommentieren falls nur eine große mp3-Datei erwünscht ist #mp3splt -t 30.0 -a -d "hoerbuch$(date +%s)" -o track_@N "$SOURCE.mp3" # auskommentieren falls auch eine große mp3-Datei erwünscht ist #rm "$SOURCE.mp3" |
Benutzung erfolgt auf eigene Gefahr!
Viel Vergnügen beim Ausprobieren.
Moderiert von redknight:
Ins Wikiforum verschoben.
Bearbeitet von redknight:
Artikelnamen in den Titel editiert.